From 2e620877b74bd5841880238306ae40673a70faa7 Mon Sep 17 00:00:00 2001 From: Andrey Sitnik Date: Sat, 13 Aug 2022 14:52:25 +0200 Subject: [PATCH] Big redesign and refactoring (#375) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Start new project * Update docs * Improve dev docs * Update tools and dependencies * Move to monorepo * Add server dir * Update dependencies * Add wikipedia article links * Add browsers icons * Add test JSON data for client * Add test backend with v1 format * Add test JSON data for client * Fixed wikipedia link * Remove server start with debugging * Remove importing JSON only from node_modules * Remove TypeScript from Lint script * Update server response format * Add fetching data from backend * Add getting data about the region coverage * Show browserslist erorr messages * Update default query fixture * Remove forced `defaults` addition to the output * Split server and getting information about the browser * Update client JSON test data * Update client data fetching * Add node.js icon and wikipedia link * Handle all `getBrowsers()` errors * Remove old png icons * Remove client fixtures * Show status 400 if the request contains errors * Parse region with `browserslist.parse` * Add 404 error * Removed unnecessary assignment `GLOBAL_REGION` * Simplified getting version data * Getting data about Wikipedia links on client * Output browserslist and caniuse versions on client * Add TODO for client side data fetching * Output server errors in JSON { message: ... } Output server errors in JSON { message: ... } * Throw unknown region name getRegionCoverage * Fix error message output * Change API endpoint to /api * Throw unknown region error for dangerous values * Generate 2 different errors for region * Add TODO sort version keys by coverage * Add `uvu` test runner to the project * Move response generation to another files * Add integration tests for HTTP server * Add unit tests for response generation * Fix regions caniuse path * Reject `getBrowser()` errors as `Error` instances * Get `region` from request with fallback from query (MVP) * Update Node.js and pnpm * Add support `Node > 0` query * Fix pnpm cache (#295) * Fix docs * Simplify asdf steps * Fix code indent in docs * Update the API endpoint URL on the client * Take region only from GET parameter (#297) * Remove smart region recognition from a query * Remove test for deleted smart region recognition * Create `regions.json` on client's `postinstall` step (#298) * Moved the client's data to `client/data` * Add caniuse-lite to the client as devDependency * Add postinstall step for generate `client/data/regions.json` * Temporarily handled the ESLint error * Remove `--ignore-scripts` for `postinstall` working from CI * Remove unused wikipedia-links.json * Show creating `region.json` message without `console.info` * Restored `--ignore-scripts` flag for security (CI) * Add `` control for region in the client * Get country names from from `window.Intl` (js 5.46kb → 4.46 kB) * Remove unused DOMContentLoaded handler * Added an explicit `build:regions` script * Rename region generator script to`build-regions` * Add `pnpm start` script for monorepo (#300) * Added a script `pnpm start` for monorepo * Show `Server listening on a port` in console * Update pnpm * Run all tests in parallel (#301) * Typo * Remove old code * Migrate tests from `uvu` to `node:test` (#304) * Migrate tests from `uvu` to `node:test` * Use module `node:assert` with prefix like `node:test' * Add node: prefix to all node imports * Update npm dependencies (#307) * Showing browser usage in the specified region (#309) * MVP frontend (#306) * remove reset css * Add test JSON data for client * add html content, remove pug * add basic styles * fix fixture * add styles and generation for stats view * fix eslint * fix table layout * Update browserslist 4.21.3 * Change API endpoint to /api * add connect with backend * submit form by enter click, refactor js code * fix colors for dark theme (not final) * fix show stats functions * add showing tools versions * move styles to separate files * add logos, refactor introduction layout * better styles for browser stats * better styles for form * add browser logos icons * fix submit form by press enter * add and_qq icon * add badges about twitter and github at header * add correct behaviour for stats placeholder * add showing errors * add query links * add TODO and small fixes * add the QueryLink component and fix link in the interactivePlaceholder * add the real documentation and styles for them * fix display errors * fix display stats table at small screens * separate Link component to the file * add minimum of adaptivity * remove the fixtures * add role=presentation for all images * remove one-letter caa variables * fix BEM * refactor project files structure * code review fix (change way to set css-variables) * add href for link to supporters * add text for screen readers * fix way to connect html and js to data-id attribute * regenerate lock-file * change way to hide texts for screen readers * replace three dots to one symbol * remove function private market * remove server/index.js as an artefact after merge * code review fix * increase size for size-limit * Add 3 browser icons * Fix server URL endpoint * fix eslint config * remove comment code form TODO * fix one-letter css variables * add alt for the logo * add link about monospace, monospace * remove !important from styles * format js-code * replace role="presentation" to alt="" Co-authored-by: Alexander Chabin * Update dependencies * Update pnpm * Update PostCSS * Fix incorrect display of UTF-8 characters * Сhange url when form are submitted and check urk when page are loaded (#321) * change url when form are submitted and check urk when page are loaded * rename url parameter (code review) * handle popstate event * Add `` and coverage stats output * Replace querySelector by `.class` to `[data-id=*]` * Increase .size-limit with 5 KB step * Rename `coverageCounter` to `coverageHeader` * Remove the results from the `
` tag * Add favicon, .webmanifest, OG and meta-tags (#324) * Add favicon, .webmanifest, OG and meta-tags * Optimize favicons * Optimize browsers icons * Increase size limit for site icons * Move site icons to `/public` folder to serve static * Add cache buster to `apple-touch-icon.png` * Disable Vite's static convert to `base64` * Add page `` * Fix description * Fix merge conflict Co-authored-by: Andrey Sitnik <andrey@sitnik.ru> * Update dependencies * Add Prettier to pre-commit hook (#329) * remove initialization functions (close #323) (#326) * use key name instead of keyCode (close #327) (#330) Co-authored-by: Andrey Sitnik <andrey@sitnik.ru> * Improve dx of query links (#333) * attribute data-query is not require now * remove attribute data-query in unnecessary places * Add form loader (#320) * add loader * change loader animation function * change loader animation function * Add current region to URL (#335) * handle network and 500 errors (#336) * Add wikipedia URL to `wikipedia-links` data (#337) * Add OG image (#325) * Add `./` for image's path in `assets` and `public` folders * Clear server error after use query link (#341) * Improve browsers icons (#340) * Add cache busters to icons `file.213213123.svg` * Renamed and moved browsers logos files * Add a check for the existence of the icon * Increase size-limit for downloadable files * Fix hover for query-link and some colors (#334) * fix hover for query-link and some colors * fix some typo * design small fixes * fix overflow for Article for does not display scrollbar * Add static files serving to Node.js server (#319) * Add static files serving to Node.js server * Сaching in memory `index.html` for 3 min * Add integrational tests for static requests Add integrational tests for static requests * Added a static response from the `/assets` folder * Set caching `index.html`, remove useless `setInterval` * Add `.html` and `.webmanifest` mime-types * Update `sendResponse` functions * Update `Cache-Control` for requests with cache busters * Separated `api-` handler from another handlers * Fix getting 404 and 500 errors in parallel * Add `.ico` mime type * Add tests for static files * Update pnpm monorepo/server scripts * Create `getFileData` function * Add `Content-Length` header to responses * Create script `build-static` for server * Hot-reload build server start * Fix running server and client build-watcher parallel * Update `start`, `production`, `test` scripts * Add `node:` to imports * Add `index.html` caching only for production mode * styles for regions select (#343) * fix some small bugs (#346) * Update pnpm * Update dependencies * Do not call `pnpm test -r` twice on CI (#347) * Fix submit bugs. Reset `region` query-parameter (#349) * Reset wrong `®ion` in URL * Remove form submit on page start * Fix firefox submit with page reload * Added tweets about browserlist (#345) * added tweets * optimize images * code review fix * fix for adaptivity * increase size limit * fix for adaptivity * code review fix Co-authored-by: Andrey Sitnik <andrey@sitnik.ru> Co-authored-by: Andrey Sitnik <andrey@sitnik.ru> * Hide default region from query parameters * Add hedgehog image (#350) * add images * add style fot images * replace png to svg * add gaps for hedgehog * increase size limit * Update alignment and typography for `toolsVersions` block (#356) * Use English name in countries list for consistency (#358) * Fix extra scrolls in the query area (#359) * Scroll into view by clicking on `queryLink` (#355) * Show `toolsVersions` caption at the bottom (sticky footer) (#357) * Update Size Limit and Vite * fix #361, #354 and some other bugs (#364) * Change default URL * Design review fixes (#365) * fix #361, #354 and some other bugs * design review fix * Move assets to components (#368) * Sort versions by name not popularity (#363) * Remove double vertical scroll (#370) * Improve static file server (#369) * Remove callbacks in `get-file-data.js` * Add `favicon.ico` to memory cache as `index.html` * Improve HTTP error handling (#371) * Add deploy (#367) * Clean up server from old logic * Typo * Clean up scripts for future ssdeploy CLI * Dockernize application * Add ssdeploy * Fix CI * Fix regions on preview * Try to fix region build * Fix client dependencies * Fix imports * Add deploy script * Typo * Simplify API url Co-authored-by: Alexander Chabin <nibach@ya.ru> Co-authored-by: Sofi Valitova <ariarzer@gmail.com> --- .dockerignore | 12 + .editorconfig | 12 + .eslintignore | 1 + .eslintrc | 3 + .eslintrc.json | 17 - .github/workflows/ci.yml | 165 + .github/workflows/close.yml | 50 + .github/workflows/test.yml | 26 - .gitignore | 8 +- .prettierrc | 8 + .stylelintrc | 11 + .tool-versions | 2 + CNAME | 1 - Dockerfile | 16 + README.md | 43 +- api/server.js | 1 - app.js | 56 - bin/www | 90 - client/.postcssrc | 13 + client/.size-limit.json | 13 + client/data/.gitignore | 1 + client/data/browsers-logos.js | 21 + client/data/browsers-logos/and_chr.svg | 1 + client/data/browsers-logos/and_ff.svg | 1 + client/data/browsers-logos/and_qq.svg | 1 + client/data/browsers-logos/and_uc.svg | 1 + client/data/browsers-logos/android.svg | 1 + client/data/browsers-logos/baidu.svg | 1 + client/data/browsers-logos/bb.svg | 1 + client/data/browsers-logos/chrome.svg | 1 + client/data/browsers-logos/edge.svg | 1 + client/data/browsers-logos/firefox.svg | 1 + client/data/browsers-logos/ie.svg | 1 + client/data/browsers-logos/ie_mob.svg | 1 + client/data/browsers-logos/ios_saf.svg | 1 + client/data/browsers-logos/kaios.svg | 1 + client/data/browsers-logos/node.svg | 1 + client/data/browsers-logos/op_mini.svg | 1 + client/data/browsers-logos/op_mob.svg | 1 + client/data/browsers-logos/opera.svg | 1 + client/data/browsers-logos/safari.svg | 1 + client/data/browsers-logos/samsung.svg | 1 + client/data/regions.js | 31 + client/data/wikipedia-links.js | 30 + client/index.css | 2 + client/index.html | 465 +++ client/index.js | 2 + client/package.json | 31 + client/public/browserslist.webmanifest | 10 + client/public/favicon.ico | Bin 0 -> 4286 bytes client/public/icon-192.png | Bin 0 -> 3203 bytes client/public/icon-512.png | Bin 0 -> 7932 bytes client/public/og.png | Bin 0 -> 126744 bytes client/scripts/build-regions.js | 34 + client/view/Article/Article.css | 99 + client/view/Article/browserlist_logo.svg | 1 + client/view/Article/cube_logo.svg | 1 + client/view/Article/evil_maritians_logo.svg | 1 + client/view/Badge/Badge.css | 19 + client/view/Badge/github_logo.svg | 1 + client/view/Badge/twitter_logo.svg | 1 + client/view/BrowserStats/BrowsersStat.css | 183 ++ client/view/BrowserStats/browserStats.js | 143 + client/view/BrowserStats/hedgehog.svg | 1 + client/view/DocSection/DocSection.css | 61 + client/view/Form/Form.css | 163 + client/view/Form/form.js | 196 ++ client/view/Link/Link.css | 17 + client/view/Pre/Pre.css | 17 + client/view/QueryLink/QueryLink.css | 19 + client/view/QueryLink/queryLink.js | 21 + client/view/Tweet/Tweet.css | 86 + client/view/Tweet/gha_dev.webp | Bin 0 -> 938 bytes client/view/Tweet/rossta.webp | Bin 0 -> 502 bytes client/view/Tweet/twitter_white.svg | 1 + client/view/base/apple-touch-icon.png | Bin 0 -> 3003 bytes client/view/base/colors.css | 37 + client/view/base/icon.svg | 1 + client/view/base/index.css | 48 + client/vite.config.js | 10 + index.html | 71 - nano-staged.json | 5 + package.json | 50 +- pnpm-lock.yaml | 3208 +++++++++++++++++++ pnpm-workspace.yaml | 3 + public/images/and_chr.png | 1 - public/images/and_ff.png | 1 - public/images/and_qq.png | Bin 1456 -> 0 bytes public/images/and_uc.png | 1 - public/images/android-webview-beta.png | Bin 4108 -> 0 bytes public/images/android.png | Bin 8785 -> 0 bytes public/images/baidu.png | Bin 4796 -> 0 bytes public/images/bb.png | Bin 1503 -> 0 bytes public/images/chrome-beta.png | Bin 4305 -> 0 bytes public/images/chrome-canary.png | Bin 4545 -> 0 bytes public/images/chrome-dev.png | Bin 4179 -> 0 bytes public/images/chrome.png | Bin 4382 -> 0 bytes public/images/edge-tile.png | Bin 1586 -> 0 bytes public/images/edge.png | Bin 1734 -> 0 bytes public/images/favicon.png | Bin 501 -> 0 bytes public/images/firefox-beta.png | Bin 24762 -> 0 bytes public/images/firefox-developer-edition.png | Bin 24617 -> 0 bytes public/images/firefox-nightly.png | Bin 22361 -> 0 bytes public/images/firefox.png | Bin 22191 -> 0 bytes public/images/ie.png | 1 - public/images/ie_mob.png | 1 - public/images/internet-explorer-tile.png | Bin 2016 -> 0 bytes public/images/internet-explorer.png | Bin 5751 -> 0 bytes public/images/ios_saf.png | 1 - public/images/kaios.png | Bin 2550 -> 0 bytes public/images/node.png | Bin 7192 -> 0 bytes public/images/op_mini.png | 1 - public/images/op_mob.png | 1 - public/images/opera-beta.png | Bin 6292 -> 0 bytes public/images/opera-developer.png | Bin 7842 -> 0 bytes public/images/opera-mini-beta.png | Bin 6011 -> 0 bytes public/images/opera-mini.png | Bin 4037 -> 0 bytes public/images/opera.png | Bin 4196 -> 0 bytes public/images/safari-ios.png | Bin 5316 -> 0 bytes public/images/safari-technology-preview.png | Bin 7994 -> 0 bytes public/images/safari.png | Bin 7072 -> 0 bytes public/images/samsung-internet.png | Bin 5773 -> 0 bytes public/images/samsung.png | 1 - public/images/uc.png | Bin 5598 -> 0 bytes public/stylesheets/style.css | 25 - public/stylesheets/tachyons.min.css | 2 - routes/index.js | 105 - script/deploy | 6 - server/handlers/api-browsers.js | 22 + server/handlers/main.js | 24 + server/handlers/static.js | 50 + server/index.js | 32 + server/lib/get-browsers.js | 139 + server/lib/get-file-data.js | 37 + server/lib/send-response.js | 24 + server/package.json | 13 + server/test/browsers.test.js | 50 + server/test/index.test.js | 83 + simple-git-hooks.json | 3 + vercel.json | 4 - views/error.pug | 6 - views/index.pug | 42 - views/layout.pug | 19 - 143 files changed, 5841 insertions(+), 513 deletions(-) create mode 100644 .dockerignore create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc delete mode 100644 .eslintrc.json create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/close.yml delete mode 100644 .github/workflows/test.yml create mode 100644 .prettierrc create mode 100644 .stylelintrc create mode 100644 .tool-versions delete mode 100644 CNAME create mode 100644 Dockerfile delete mode 100644 api/server.js delete mode 100644 app.js delete mode 100755 bin/www create mode 100644 client/.postcssrc create mode 100644 client/.size-limit.json create mode 100644 client/data/.gitignore create mode 100644 client/data/browsers-logos.js create mode 100644 client/data/browsers-logos/and_chr.svg create mode 100644 client/data/browsers-logos/and_ff.svg create mode 100644 client/data/browsers-logos/and_qq.svg create mode 100644 client/data/browsers-logos/and_uc.svg create mode 100644 client/data/browsers-logos/android.svg create mode 100644 client/data/browsers-logos/baidu.svg create mode 100644 client/data/browsers-logos/bb.svg create mode 100644 client/data/browsers-logos/chrome.svg create mode 100644 client/data/browsers-logos/edge.svg create mode 100644 client/data/browsers-logos/firefox.svg create mode 100644 client/data/browsers-logos/ie.svg create mode 100644 client/data/browsers-logos/ie_mob.svg create mode 100644 client/data/browsers-logos/ios_saf.svg create mode 100644 client/data/browsers-logos/kaios.svg create mode 100644 client/data/browsers-logos/node.svg create mode 100644 client/data/browsers-logos/op_mini.svg create mode 100644 client/data/browsers-logos/op_mob.svg create mode 100644 client/data/browsers-logos/opera.svg create mode 100644 client/data/browsers-logos/safari.svg create mode 100644 client/data/browsers-logos/samsung.svg create mode 100644 client/data/regions.js create mode 100644 client/data/wikipedia-links.js create mode 100644 client/index.css create mode 100644 client/index.html create mode 100644 client/index.js create mode 100644 client/package.json create mode 100644 client/public/browserslist.webmanifest create mode 100644 client/public/favicon.ico create mode 100644 client/public/icon-192.png create mode 100644 client/public/icon-512.png create mode 100644 client/public/og.png create mode 100644 client/scripts/build-regions.js create mode 100644 client/view/Article/Article.css create mode 100644 client/view/Article/browserlist_logo.svg create mode 100644 client/view/Article/cube_logo.svg create mode 100644 client/view/Article/evil_maritians_logo.svg create mode 100644 client/view/Badge/Badge.css create mode 100644 client/view/Badge/github_logo.svg create mode 100644 client/view/Badge/twitter_logo.svg create mode 100644 client/view/BrowserStats/BrowsersStat.css create mode 100644 client/view/BrowserStats/browserStats.js create mode 100644 client/view/BrowserStats/hedgehog.svg create mode 100644 client/view/DocSection/DocSection.css create mode 100644 client/view/Form/Form.css create mode 100644 client/view/Form/form.js create mode 100644 client/view/Link/Link.css create mode 100644 client/view/Pre/Pre.css create mode 100644 client/view/QueryLink/QueryLink.css create mode 100644 client/view/QueryLink/queryLink.js create mode 100644 client/view/Tweet/Tweet.css create mode 100644 client/view/Tweet/gha_dev.webp create mode 100644 client/view/Tweet/rossta.webp create mode 100644 client/view/Tweet/twitter_white.svg create mode 100644 client/view/base/apple-touch-icon.png create mode 100644 client/view/base/colors.css create mode 100644 client/view/base/icon.svg create mode 100644 client/view/base/index.css create mode 100644 client/vite.config.js delete mode 100644 index.html create mode 100644 nano-staged.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml delete mode 120000 public/images/and_chr.png delete mode 120000 public/images/and_ff.png delete mode 100644 public/images/and_qq.png delete mode 120000 public/images/and_uc.png delete mode 100755 public/images/android-webview-beta.png delete mode 100755 public/images/android.png delete mode 100644 public/images/baidu.png delete mode 100755 public/images/bb.png delete mode 100755 public/images/chrome-beta.png delete mode 100755 public/images/chrome-canary.png delete mode 100755 public/images/chrome-dev.png delete mode 100755 public/images/chrome.png delete mode 100755 public/images/edge-tile.png delete mode 100755 public/images/edge.png delete mode 100644 public/images/favicon.png delete mode 100755 public/images/firefox-beta.png delete mode 100755 public/images/firefox-developer-edition.png delete mode 100755 public/images/firefox-nightly.png delete mode 100755 public/images/firefox.png delete mode 120000 public/images/ie.png delete mode 120000 public/images/ie_mob.png delete mode 100755 public/images/internet-explorer-tile.png delete mode 100755 public/images/internet-explorer.png delete mode 120000 public/images/ios_saf.png delete mode 100644 public/images/kaios.png delete mode 100644 public/images/node.png delete mode 120000 public/images/op_mini.png delete mode 120000 public/images/op_mob.png delete mode 100755 public/images/opera-beta.png delete mode 100755 public/images/opera-developer.png delete mode 100755 public/images/opera-mini-beta.png delete mode 100755 public/images/opera-mini.png delete mode 100755 public/images/opera.png delete mode 100755 public/images/safari-ios.png delete mode 100755 public/images/safari-technology-preview.png delete mode 100755 public/images/safari.png delete mode 100755 public/images/samsung-internet.png delete mode 120000 public/images/samsung.png delete mode 100755 public/images/uc.png delete mode 100644 public/stylesheets/style.css delete mode 100644 public/stylesheets/tachyons.min.css delete mode 100644 routes/index.js delete mode 100755 script/deploy create mode 100644 server/handlers/api-browsers.js create mode 100644 server/handlers/main.js create mode 100644 server/handlers/static.js create mode 100644 server/index.js create mode 100644 server/lib/get-browsers.js create mode 100644 server/lib/get-file-data.js create mode 100644 server/lib/send-response.js create mode 100644 server/package.json create mode 100644 server/test/browsers.test.js create mode 100644 server/test/index.test.js create mode 100644 simple-git-hooks.json delete mode 100644 vercel.json delete mode 100644 views/error.pug delete mode 100644 views/index.pug delete mode 100644 views/layout.pug diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..4a6ee7aa --- /dev/null +++ b/.dockerignore @@ -0,0 +1,12 @@ +node_modules/ + +server/test/ +client/ +!client/dist/ + +.* +README.md +LICENSE +nano-staged.json +simple-git-hooks.json +Dockerfile diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..8ac1a531 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.svg] +insert_final_newline = false diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..849ddff3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +dist/ diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..318fa10b --- /dev/null +++ b/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "@logux/eslint-config/esm" +} diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 152f44c9..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "root": true, - "plugins": [ - "eslint-plugin-github" - ], - "env": { - "es6": true, - "node": true - }, - "extends": [ - "plugin:github/recommended", - "plugin:github/es6" - ], - "rules": { - "eslint-comments/no-use": "off" - } -} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..0ee30b10 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,165 @@ +name: CI +on: + push: + branches: + - main + pull_request: +env: + FORCE_COLOR: 2 +jobs: + + test: + name: Test + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v3 + - name: Install asdf + uses: asdf-vm/actions/setup@v1 + - name: Cache asdf + id: asdf-cache + uses: actions/cache@v3 + with: + path: ~/.asdf + key: asdf-${{ hashFiles('**/.tool-versions') }} + - name: Install asdf tools + if: steps.asdf-cache.outputs.cache-hit != 'true' + uses: asdf-vm/actions/install@v1 + - name: Cache pnpm modules + uses: actions/cache@v3 + env: + cache-name: cache-pnpm-modules + with: + path: ~/.local/share/pnpm/ + key: pnpm-${{ hashFiles('pnpm-lock.yaml') }} + - name: Install dependencies + run: pnpm install --frozen-lockfile --ignore-scripts + - name: Build regions + run: pnpm -r build:regions + - name: Run tests + run: pnpm test + + deploy: + name: Deploy + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' + steps: + - name: Notify about new deployment + uses: bobheadxi/deployments@v1 + id: deployment + with: + step: start + token: ${{ secrets.GITHUB_TOKEN }} + env: production + - name: Checkout the repository + uses: actions/checkout@v3 + - name: Install asdf + uses: asdf-vm/actions/setup@v1 + - name: Cache asdf + id: asdf-cache + uses: actions/cache@v3 + with: + path: ~/.asdf + key: asdf-${{ hashFiles('**/.tool-versions') }} + - name: Cache pnpm modules + uses: actions/cache@v3 + env: + cache-name: cache-pnpm-modules + with: + path: ~/.local/share/pnpm/ + key: pnpm-production-${{ hashFiles('pnpm-lock.yaml') }} + - name: Install production dependencies + run: pnpm install --prod --frozen-lockfile --ignore-scripts + - name: Build regions + run: pnpm -r build:regions + - name: Build static files + run: pnpm build + - name: Auth Google Cloud + uses: google-github-actions/auth@v0 + with: + credentials_json: ${{ secrets.GCLOUD_AUTH }} + - name: Install Google Cloud + uses: google-github-actions/setup-gcloud@v0 + - name: Deploy files + id: deploy + run: ./node_modules/.bin/ssdeploy deploy --verbose + env: + GCLOUD_APP: ${{ secrets.GCLOUD_APP }} + GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} + CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }} + CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }} + - name: Update deployment status + uses: bobheadxi/deployments@v1 + if: always() + with: + step: finish + token: ${{ secrets.GITHUB_TOKEN }} + status: ${{ job.status }} + env: ${{ steps.deployment.outputs.env }} + env_url: ${{ steps.deploy.outputs.url }} + deployment_id: ${{ steps.deployment.outputs.deployment_id }} + + preview: + name: Preview + runs-on: ubuntu-latest + if: github.ref != 'refs/heads/main' + steps: + - name: Notify about new deployment + uses: bobheadxi/deployments@v1 + id: deployment + with: + step: start + token: ${{ secrets.GITHUB_TOKEN }} + ref: ${{ github.head_ref }} + env: preview-${{ github.event.number }} + - name: Checkout the repository + uses: actions/checkout@v3 + - name: Install asdf + uses: asdf-vm/actions/setup@v1 + - name: Cache asdf + id: asdf-cache + uses: actions/cache@v3 + with: + path: ~/.asdf + key: asdf-${{ hashFiles('**/.tool-versions') }} + - name: Install asdf tools + if: steps.asdf-cache.outputs.cache-hit != 'true' + uses: asdf-vm/actions/install@v1 + - name: Cache pnpm modules + uses: actions/cache@v3 + env: + cache-name: cache-pnpm-modules + with: + path: ~/.local/share/pnpm/ + key: pnpm-production-${{ hashFiles('pnpm-lock.yaml') }} + - name: Install production dependencies + run: pnpm install --prod --frozen-lockfile --ignore-scripts + - name: Build regions + run: pnpm -r build:regions + - name: Build static files + run: pnpm build + - name: Auth Google Cloud + uses: google-github-actions/auth@v0 + with: + credentials_json: ${{ secrets.GCLOUD_AUTH }} + - name: Install Google Cloud + uses: google-github-actions/setup-gcloud@v0 + - name: Deploy files + id: deploy + run: ./node_modules/.bin/ssdeploy preview $PR --verbose + env: + PR: ${{ github.event.number }} + GCLOUD_APP: ${{ secrets.GCLOUD_APP }} + GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} + CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }} + CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }} + - name: Update deployment status + uses: bobheadxi/deployments@v1 + if: always() + with: + step: finish + token: ${{ secrets.GITHUB_TOKEN }} + status: ${{ job.status }} + env: ${{ steps.deployment.outputs.env }} + env_url: ${{ steps.deploy.outputs.url }} + deployment_id: ${{ steps.deployment.outputs.deployment_id }} diff --git a/.github/workflows/close.yml b/.github/workflows/close.yml new file mode 100644 index 00000000..3c303695 --- /dev/null +++ b/.github/workflows/close.yml @@ -0,0 +1,50 @@ +name: Clean Preview +on: + pull_request: + types: [ closed ] +jobs: + close: + runs-on: ubuntu-latest + steps: + - name: Clean from GitHub + uses: bobheadxi/deployments@v1 + with: + step: delete-env + token: ${{ secrets.GITHUB_TOKEN }} + env: preview-${{ github.event.number }} + - name: Checkout the repository + uses: actions/checkout@v3 + - name: Install asdf + uses: asdf-vm/actions/setup@v1 + - name: Cache asdf + id: asdf-cache + uses: actions/cache@v3 + with: + path: ~/.asdf + key: asdf-${{ hashFiles('**/.tool-versions') }} + - name: Install asdf tools + if: steps.asdf-cache.outputs.cache-hit != 'true' + uses: asdf-vm/actions/install@v1 + - name: Cache pnpm modules + uses: actions/cache@v3 + env: + cache-name: cache-pnpm-modules + with: + path: ~/.local/share/pnpm/ + key: pnpm-production-${{ hashFiles('pnpm-lock.yaml') }} + - name: Install dependencies + run: pnpm install --prod --frozen-lockfile --ignore-scripts + - name: Auth Google Cloud + uses: google-github-actions/auth@v0 + with: + credentials_json: ${{ secrets.GCLOUD_AUTH }} + - name: Install Google Cloud + uses: google-github-actions/setup-gcloud@v0 + - name: Clean from Google Cloud + run: ./node_modules/.bin/ssdeploy close $PR --verbose + env: + PR: ${{ github.event.number }} + GCLOUD_APP: ${{ secrets.GCLOUD_APP }} + GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} + CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }} + CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 1d717808..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Tests -on: [push, pull_request] -env: - CI: true - -jobs: - test: - runs-on: ubuntu-latest - - steps: - - name: Clone repository - uses: actions/checkout@v1 - - - name: Set up Node.js - uses: actions/setup-node@v1 - with: - node-version: "10" - - - run: node --version - - run: npm --version - - - name: Install npm dependencies - run: npm install - - - name: Run tests - run: npm test diff --git a/.gitignore b/.gitignore index 1f53980a..b9470778 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,2 @@ -node_modules -*.log -.DS_Store -package-lock.json - -.vercel +node_modules/ +dist/ diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..82ad122b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "arrowParens": "avoid", + "jsxSingleQuote": false, + "quoteProps": "consistent", + "semi": false, + "singleQuote": true, + "trailingComma": "none" +} diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 00000000..2a65dd33 --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,11 @@ +{ + "extends": "@logux/stylelint-config", + "ignoreFiles": ["dist/**/*"], + "rules": { + "function-disallowed-list": ["rgb", "rgba", "hsl", "hsla"], + "alpha-value-notation": "percentage", + "color-named": "never", + "declaration-block-no-redundant-longhand-properties": null, + "font-family-no-duplicate-names": [true, { "ignoreFontFamilyNames":"monospace"}] + } +} diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 00000000..86e236dc --- /dev/null +++ b/.tool-versions @@ -0,0 +1,2 @@ +nodejs 18.7.0 +pnpm 7.9.1 diff --git a/CNAME b/CNAME deleted file mode 100644 index 7480dbbf..00000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -browserl.ist \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..16dd14a2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM node:18-alpine + +ENV NODE_ENV production +WORKDIR /var/www +COPY --chown=node:node . /var/www + +RUN corepack enable +RUN corepack prepare pnpm@7.9.1 --activate +COPY ./pnpm-workspace.yaml /var/www/ +COPY ./package.json /var/www/ +COPY ./pnpm-lock.yaml /var/www/ +COPY ./server/ /var/www/server/ +RUN pnpm install --filter ./server --prod --frozen-lockfile --ignore-scripts +COPY ./client/dist/ /var/www/client/dist/ + +CMD "node" "server/index.js" diff --git a/README.md b/README.md index 159268d9..2e903b5c 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,43 @@ -# Browserl.ist [![Build Status](https://github.com/browserslist/browserl.ist/workflows/Tests/badge.svg)](https://github.com/browserslist/browserl.ist/actions?workflow=Tests) +# Browserslist Website -> A website that shows what browsers supported by a browserslist string +This website uses [Browserslist] and [Can I Use] to display +the compatible browsers for a browsers query. + +[browserslist]: https://github.com/browserslist/browserslist +[Can I Use]: https://github.com/Fyrd/caniuse -This website uses [browserslist][] and [caniuse][] to display the compatible browsers for a [browserslist search query](https://github.com/ai/browserslist#queries). ## Development -This website runs on [expressjs](https://expressjs.com/). To run locally, after `npm install` to install the dependencies, `npm start` to run the server. +To run a local copy for development: + +1. Install correct versions of Node.js and pnpm. There are two ways: + - With [`asdf`](https://github.com/asdf-vm/asdf) version manager: + + ```sh + asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git + asdf plugin-add pnpm https://github.com/jonathanmorley/asdf-pnpm.git + asdf install + ``` + + - Manually by check versions in `.tool-versions`. + +2. Install dependencies: -## Contributing + ```sh + pnpm install + ``` -I'm open to any pull requests or bug reports. Anything that has to do with the data that is presented should be opened with [browserslist][] or [caniuse][]. +3. Run local server: -## License + - Server with client-side hot-reload + ```sh + pnpm start + ``` -[MIT](./LICENSE) © [Browserslist](https://github.com/browserslist) + - Server production mode + ```sh + pnpm ssdeploy run + ``` -[browserslist]: https://github.com/ai/browserslist -[caniuse]: https://github.com/Fyrd/caniuse +We recommend to install Prettier and EditorConfig plugins to your text editor. diff --git a/api/server.js b/api/server.js deleted file mode 100644 index 0d809f65..00000000 --- a/api/server.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("../app"); diff --git a/app.js b/app.js deleted file mode 100644 index 481ffe59..00000000 --- a/app.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; - -const path = require("path"); -const express = require("express"); -const logger = require("morgan"); -const cookieParser = require("cookie-parser"); -const bodyParser = require("body-parser"); - -const routes = require("./routes/index"); - -const app = express(); - -// view engine setup -app.set("views", path.join(__dirname, "views")); -app.set("view engine", "pug"); - -app.use(logger("dev")); -app.use(bodyParser.json()); -app.use(bodyParser.urlencoded({ extended: false })); -app.use(cookieParser()); -app.use(express.static(path.join(__dirname, "public"))); - -app.use("/", routes); - -// catch 404 and forward to error handler -app.use((req, res, next) => { - const err = new Error("Not Found"); - err.status = 404; - next(err); -}); - -// error handlers - -// development error handler -// will print stacktrace -if (app.get("env") === "development") { - app.use((err, req, res) => { - res.status(err.status || 500); - res.render("error", { - message: err.message, - error: err, - }); - }); -} - -// production error handler -// no stacktraces leaked to user -app.use((err, req, res) => { - res.status(err.status || 500); - res.render("error", { - message: err.message, - error: {}, - }); -}); - -module.exports = app; diff --git a/bin/www b/bin/www deleted file mode 100755 index 20029c57..00000000 --- a/bin/www +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env node - -/* eslint-disable no-console */ - -"use strict"; - -/** - * Module dependencies. - */ - -const app = require("../app"); -const debug = require("debug")("browserlist:server"); -const http = require("http"); - -/** - * Get port from environment and store in Express. - */ - -const PORT = normalizePort(process.env.PORT || "3000"); -app.set("port", PORT); - -/** - * Create HTTP server. - */ - -const server = http.createServer(app); - -/** - * Listen on provided port, on all network interfaces. - */ - -server.listen(PORT); -server.on("error", onError); -server.on("listening", onListening); - -/** - * Normalize a port into a number, string, or false. - */ - -function normalizePort(val) { - const port = parseInt(val, 10); - - if (isNaN(port)) { - // named pipe - return val; - } - - if (port >= 0) { - // port number - return port; - } - - return false; -} - -/** - * Event listener for HTTP server "error" event. - */ - -function onError(error) { - if (error.syscall !== "listen") { - throw error; - } - - const bind = typeof PORT === "string" ? `Pipe ${PORT}` : `Port ${PORT}`; - - // handle specific listen errors with friendly messages - switch (error.code) { - case "EACCES": - console.error(`${bind} requires elevated privileges`); - process.exit(1); - break; - case "EADDRINUSE": - console.error(`${bind} is already in use`); - process.exit(1); - break; - default: - throw error; - } -} - -/** - * Event listener for HTTP server "listening" event. - */ - -function onListening() { - const addr = server.address(); - const bind = typeof addr === "string" ? `pipe ${addr}` : `port ${addr.port}`; - debug(`Listening on ${bind}`); -} diff --git a/client/.postcssrc b/client/.postcssrc new file mode 100644 index 00000000..2747ebea --- /dev/null +++ b/client/.postcssrc @@ -0,0 +1,13 @@ +{ + "plugins": { + "@csstools/postcss-oklab-function": { + "subFeatures": { + "displayP3": false + } + }, + "postcss-opacity-percentage": {}, + "postcss-nesting": {}, + "postcss-media-minmax": {}, + "autoprefixer": {} + } +} diff --git a/client/.size-limit.json b/client/.size-limit.json new file mode 100644 index 00000000..f0123cc9 --- /dev/null +++ b/client/.size-limit.json @@ -0,0 +1,13 @@ +[ + { + "name": "Files to download", + "path": ["dist/**/*", "!dist/*.ico", "!dist/*.webmanifest", "!dist/*.png"], + "limit": "40 KB" + }, + { + "name": "All scripts to execute", + "path": "dist/*.js", + "gzip": false, + "limit": "15 KB" + } +] diff --git a/client/data/.gitignore b/client/data/.gitignore new file mode 100644 index 00000000..469a7907 --- /dev/null +++ b/client/data/.gitignore @@ -0,0 +1 @@ +regions.json diff --git a/client/data/browsers-logos.js b/client/data/browsers-logos.js new file mode 100644 index 00000000..80283fd7 --- /dev/null +++ b/client/data/browsers-logos.js @@ -0,0 +1,21 @@ +/* eslint-disable camelcase */ +export { default as and_chr } from './browsers-logos/and_chr.svg' +export { default as and_ff } from './browsers-logos/and_ff.svg' +export { default as and_qq } from './browsers-logos/and_qq.svg' +export { default as and_uc } from './browsers-logos/and_uc.svg' +export { default as android } from './browsers-logos/android.svg' +export { default as baidu } from './browsers-logos/baidu.svg' +export { default as bb } from './browsers-logos/bb.svg' +export { default as chrome } from './browsers-logos/chrome.svg' +export { default as edge } from './browsers-logos/edge.svg' +export { default as firefox } from './browsers-logos/firefox.svg' +export { default as ie_mob } from './browsers-logos/ie_mob.svg' +export { default as ie } from './browsers-logos/ie.svg' +export { default as ios_saf } from './browsers-logos/ios_saf.svg' +export { default as kaios } from './browsers-logos/kaios.svg' +export { default as node } from './browsers-logos/node.svg' +export { default as op_mini } from './browsers-logos/op_mini.svg' +export { default as op_mob } from './browsers-logos/op_mob.svg' +export { default as opera } from './browsers-logos/opera.svg' +export { default as safari } from './browsers-logos/safari.svg' +export { default as samsung } from './browsers-logos/samsung.svg' diff --git a/client/data/browsers-logos/and_chr.svg b/client/data/browsers-logos/and_chr.svg new file mode 100644 index 00000000..30675815 --- /dev/null +++ b/client/data/browsers-logos/and_chr.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path d="M18.93 8A8 8 0 0 0 5.07 8l.48 8.64L18.93 8Z" fill="url(#a)"/><path d="M8.53 14 5.07 8A8 8 0 0 0 12 20l7.84-8-11.3 2Z" fill="url(#b)"/><path d="M15.46 14 12 20a8 8 0 0 0 6.93-12H12l3.46 6Z" fill="url(#c)"/><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z" fill="#fff"/><path d="M12 15.17a3.17 3.17 0 1 0 0-6.34 3.17 3.17 0 0 0 0 6.34Z" fill="#1A73E8"/><defs><linearGradient id="a" x1="5.07" y1="9" x2="18.93" y2="9" gradientUnits="userSpaceOnUse"><stop stop-color="#D93025"/><stop offset="1" stop-color="#EA4335"/></linearGradient><linearGradient id="b" x1="12.87" y1="19.5" x2="5.94" y2="7.5" gradientUnits="userSpaceOnUse"><stop stop-color="#1E8E3E"/><stop offset="1" stop-color="#34A853"/></linearGradient><linearGradient id="c" x1="10.83" y1="20" x2="17.76" y2="8.02" gradientUnits="userSpaceOnUse"><stop stop-color="#FCC934"/><stop offset="1" stop-color="#FBBC04"/></linearGradient></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/and_ff.svg b/client/data/browsers-logos/and_ff.svg new file mode 100644 index 00000000..98cca08f --- /dev/null +++ b/client/data/browsers-logos/and_ff.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="24" xmlns="http://www.w3.org/2000/svg"><radialGradient id="b" cx="18.47" cy="4.49" gradientUnits="userSpaceOnUse" r="19.58"><stop offset=".13" stop-color="#ffbd4f"/><stop offset=".19" stop-color="#ffac31"/><stop offset=".25" stop-color="#ff9d17"/><stop offset=".28" stop-color="#ff980e"/><stop offset=".4" stop-color="#ff563b"/><stop offset=".47" stop-color="#ff3750"/><stop offset=".71" stop-color="#f5156c"/><stop offset=".78" stop-color="#eb0878"/><stop offset=".86" stop-color="#e50080"/></radialGradient><radialGradient id="c" cx="11.2" cy="12.49" gradientUnits="userSpaceOnUse" r="19.58"><stop offset=".3" stop-color="#960e18"/><stop offset=".35" stop-color="#b11927" stop-opacity=".74"/><stop offset=".43" stop-color="#db293d" stop-opacity=".34"/><stop offset=".5" stop-color="#f5334b" stop-opacity=".09"/><stop offset=".53" stop-color="#ff3750" stop-opacity="0"/></radialGradient><radialGradient id="d" cx="13.63" cy=".13" gradientUnits="userSpaceOnUse" r="14.184"><stop offset=".13" stop-color="#fff44f"/><stop offset=".25" stop-color="#ffdc3e"/><stop offset=".51" stop-color="#ff9d12"/><stop offset=".53" stop-color="#ff980e"/></radialGradient><radialGradient id="e" cx="9.02" cy="17.58" gradientUnits="userSpaceOnUse" r="9.323"><stop offset=".35" stop-color="#3a8ee6"/><stop offset=".47" stop-color="#5c79f0"/><stop offset=".67" stop-color="#9059ff"/><stop offset="1" stop-color="#c139e6"/></radialGradient><radialGradient id="f" cx="0" cy="0" gradientTransform="matrix(4.80519 -1.16161 1.35995 5.62568 12.15 10.806)" gradientUnits="userSpaceOnUse" r="1"><stop offset=".21" stop-color="#9059ff" stop-opacity="0"/><stop offset=".28" stop-color="#8c4ff3" stop-opacity=".06"/><stop offset=".75" stop-color="#7716a8" stop-opacity=".45"/><stop offset=".97" stop-color="#6e008b" stop-opacity=".6"/></radialGradient><radialGradient id="g" cx="10.96" cy="3.76" gradientUnits="userSpaceOnUse" r="6.708"><stop offset="0" stop-color="#ffe226"/><stop offset=".12" stop-color="#ffdb27"/><stop offset=".29" stop-color="#ffc82a"/><stop offset=".5" stop-color="#ffa930"/><stop offset=".73" stop-color="#ff7e37"/><stop offset=".79" stop-color="#ff7139"/></radialGradient><radialGradient id="h" cx="16.3" cy="-.6" gradientUnits="userSpaceOnUse" r="28.619"><stop offset=".11" stop-color="#fff44f"/><stop offset=".46" stop-color="#ff980e"/><stop offset=".62" stop-color="#ff5634"/><stop offset=".72" stop-color="#ff3647"/><stop offset=".9" stop-color="#e31587"/></radialGradient><radialGradient id="i" cx="0" cy="0" gradientTransform="matrix(2.19952 20.85704 -13.6883 1.44353 13.903 .993)" gradientUnits="userSpaceOnUse" r="1"><stop offset="0" stop-color="#fff44f"/><stop offset=".06" stop-color="#ffe847"/><stop offset=".17" stop-color="#ffc830"/><stop offset=".3" stop-color="#ff980e"/><stop offset=".36" stop-color="#ff8b16"/><stop offset=".46" stop-color="#ff672a"/><stop offset=".57" stop-color="#ff3647"/><stop offset=".74" stop-color="#e31587"/></radialGradient><radialGradient id="j" cx="10.96" cy="6.19" gradientUnits="userSpaceOnUse" r="17.865"><stop offset=".14" stop-color="#fff44f"/><stop offset=".48" stop-color="#ff980e"/><stop offset=".59" stop-color="#ff5634"/><stop offset=".66" stop-color="#ff3647"/><stop offset=".9" stop-color="#e31587"/></radialGradient><radialGradient id="k" cx="15.57" cy="7.16" gradientUnits="userSpaceOnUse" r="19.554"><stop offset=".09" stop-color="#fff44f"/><stop offset=".23" stop-color="#ffe141"/><stop offset=".51" stop-color="#ffaf1e"/><stop offset=".63" stop-color="#ff980e"/></radialGradient><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="19.08" x2="3.48" y1="5.31" y2="20.35"><stop offset=".05" stop-color="#fff44f"/><stop offset=".11" stop-color="#ffe847"/><stop offset=".23" stop-color="#ffc830"/><stop offset=".37" stop-color="#ff980e"/><stop offset=".4" stop-color="#ff8b16"/><stop offset=".46" stop-color="#ff672a"/><stop offset=".53" stop-color="#ff3647"/><stop offset=".7" stop-color="#e31587"/></linearGradient><linearGradient id="l" gradientUnits="userSpaceOnUse" x1="18.89" x2="5.62" y1="5.23" y2="18.5"><stop offset=".17" stop-color="#fff44f" stop-opacity=".8"/><stop offset=".27" stop-color="#fff44f" stop-opacity=".63"/><stop offset=".49" stop-color="#fff44f" stop-opacity=".22"/><stop offset=".6" stop-color="#fff44f" stop-opacity="0"/></linearGradient><path d="M20.32 8.81a5.27 5.27 0 0 0-1.88-2.38c.46.9.78 1.86.95 2.85v.02c-1.06-2.65-2.86-3.72-4.33-6.04a11.3 11.3 0 0 1-.33-.55 1.71 1.71 0 0 1-.15-.4h-.04a6.85 6.85 0 0 0-3.23 5.22 4.7 4.7 0 0 0-2.58 1 2.8 2.8 0 0 0-.25-.19 4.35 4.35 0 0 1-.02-2.3A6.96 6.96 0 0 0 6.2 7.8c-.38-.47-.35-2.03-.33-2.35-.11.04-.22.1-.32.17a8.2 8.2 0 0 0-1.8 1.84A7.93 7.93 0 0 0 2.5 10.3l-.02.06-.09.59v.02c-.08.43-.13.86-.15 1.3v.04a9.4 9.4 0 0 0 18.65 1.6l.04-.37c.2-1.6-.02-3.22-.61-4.72zM9.49 16.16l.14.07z" fill="url(#a)"/><path d="M20.32 8.81a5.27 5.27 0 0 0-1.88-2.38c.46.9.78 1.86.95 2.85v.02a8.5 8.5 0 0 1-.3 6.34 8.07 8.07 0 0 1-7.75 4.56 9.46 9.46 0 0 1-9.02-7.67c-.13-.68 0-1.02.07-1.57a7 7 0 0 0-.15 1.3v.04a9.4 9.4 0 0 0 18.65 1.6l.04-.37c.2-1.6-.02-3.22-.6-4.72z" fill="url(#b)"/><path d="M20.32 8.81a5.27 5.27 0 0 0-1.88-2.38c.46.9.78 1.86.95 2.85v.02a8.5 8.5 0 0 1-.3 6.34 8.07 8.07 0 0 1-7.75 4.56 9.46 9.46 0 0 1-9.02-7.67c-.13-.68 0-1.02.07-1.57a7 7 0 0 0-.15 1.3v.04a9.4 9.4 0 0 0 18.65 1.6l.04-.37c.2-1.6-.02-3.22-.6-4.72z" fill="url(#c)"/><path d="m15.75 9.91.06.05c-.23-.42-.53-.8-.87-1.14-2.92-2.92-.76-6.33-.4-6.5V2.3a6.85 6.85 0 0 0-3.23 5.22l.33-.02a4.74 4.74 0 0 1 4.11 2.4z" fill="url(#d)"/><path d="M11.64 10.5c-.01.23-.84 1.04-1.13 1.04-2.67 0-3.1 1.61-3.1 1.61a3.96 3.96 0 0 0 2.65 3.26c.39.14.8.22 1.22.24 4.68.22 5.59-5.6 2.2-7.29.8-.1 1.61.1 2.27.55a4.74 4.74 0 0 0-4.11-2.4c-.11 0-.22 0-.33.02a4.7 4.7 0 0 0-2.59 1c.15.11.3.28.65.61.64.63 2.27 1.28 2.27 1.36z" fill="url(#e)"/><path d="M11.64 10.5c-.01.23-.84 1.04-1.13 1.04-2.67 0-3.1 1.61-3.1 1.61a3.96 3.96 0 0 0 2.65 3.26c.39.14.8.22 1.22.24 4.68.22 5.59-5.6 2.2-7.29.8-.1 1.61.1 2.27.55a4.74 4.74 0 0 0-4.11-2.4c-.11 0-.22 0-.33.02a4.7 4.7 0 0 0-2.59 1c.15.11.3.28.65.61.64.63 2.27 1.28 2.27 1.36z" fill="url(#f)"/><path d="m8.29 8.21.19.13a4.35 4.35 0 0 1-.03-2.3A6.95 6.95 0 0 0 6.2 7.8c.05 0 1.41-.02 2.1.42z" fill="url(#g)"/><path d="M2.32 12.53a9.45 9.45 0 0 0 9.02 7.67 8.08 8.08 0 0 0 7.75-4.56 8.5 8.5 0 0 0 .3-6.34v-.02.02c.33 2.18-.77 4.28-2.5 5.71l-.01.01c-3.37 2.75-6.6 1.66-7.25 1.21l-.14-.06c-1.96-.94-2.77-2.73-2.6-4.27a2.41 2.41 0 0 1-2.22-1.4 3.54 3.54 0 0 1 3.45-.14c1.11.5 2.38.56 3.53.14 0-.08-1.64-.73-2.28-1.35-.34-.34-.5-.5-.64-.62a2.8 2.8 0 0 0-.44-.31 4.62 4.62 0 0 0-2.1-.42c-.37-.48-.34-2.03-.32-2.36-.11.05-.22.1-.32.17a8.2 8.2 0 0 0-1.8 1.84 7.93 7.93 0 0 0-1.26 2.84c0 .02-.33 1.48-.17 2.24z" fill="url(#h)"/><path d="M14.94 8.82c.34.33.64.72.87 1.14l.14.11c2.13 1.97 1.02 4.74.93 4.94 1.73-1.43 2.84-3.54 2.5-5.71-1.06-2.65-2.86-3.72-4.33-6.04a11.5 11.5 0 0 1-.32-.56 1.71 1.71 0 0 1-.15-.39h-.04c-.36.17-2.52 3.59.4 6.5z" fill="url(#i)"/><path d="M15.95 10.07a1.97 1.97 0 0 0-.14-.11l-.06-.04a3.24 3.24 0 0 0-2.26-.55c3.38 1.68 2.47 7.5-2.21 7.28a4.18 4.18 0 0 1-1.5-.35l-.16-.07h.01c.65.45 3.88 1.54 7.25-1.21v-.01c.09-.2 1.2-2.97-.93-4.94z" fill="url(#j)"/><path d="M7.41 13.15s.43-1.61 3.1-1.61c.3 0 1.12-.81 1.13-1.04a4.68 4.68 0 0 1-3.52-.14 3.54 3.54 0 0 0-3.45.14 2.41 2.41 0 0 0 2.22 1.4c-.17 1.53.64 3.32 2.6 4.26l.13.06a3.96 3.96 0 0 1-2.2-3.07z" fill="url(#k)"/><path d="M20.32 8.81a5.27 5.27 0 0 0-1.88-2.38c.46.9.78 1.86.95 2.85v.02c-1.06-2.65-2.86-3.72-4.33-6.04a11.3 11.3 0 0 1-.33-.55 1.71 1.71 0 0 1-.15-.4h-.04a6.85 6.85 0 0 0-3.23 5.22l.33-.02a4.74 4.74 0 0 1 4.12 2.4 3.24 3.24 0 0 0-2.27-.55c3.38 1.7 2.47 7.51-2.2 7.3a4.18 4.18 0 0 1-1.5-.36l-.16-.07-.13-.07.13.07a3.97 3.97 0 0 1-2.22-3.08s.44-1.61 3.1-1.61c.3 0 1.12-.8 1.14-1.04 0-.08-1.64-.73-2.28-1.36-.34-.33-.5-.5-.64-.61a2.8 2.8 0 0 0-.25-.19 4.35 4.35 0 0 1-.02-2.3A6.95 6.95 0 0 0 6.2 7.8c-.38-.47-.35-2.02-.33-2.35-.11.05-.22.1-.32.17a8.2 8.2 0 0 0-1.8 1.84A7.93 7.93 0 0 0 2.5 10.3l-.01.06a15.99 15.99 0 0 0-.25 1.9v.05a9.4 9.4 0 0 0 18.65 1.6l.04-.37c.2-1.6-.02-3.22-.61-4.72zm-.93.48v.01z" fill="url(#l)"/></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/and_qq.svg b/client/data/browsers-logos/and_qq.svg new file mode 100644 index 00000000..87a23fd9 --- /dev/null +++ b/client/data/browsers-logos/and_qq.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="26" height="24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-5a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z" fill="url(#a)"/><path d="M19 16h.5a2.5 2.5 0 0 1 0 5h-7a2.5 2.5 0 0 1-2.37-3.3A2 2 0 0 1 12 15a2 2 0 0 1 1.08.32A3 3 0 0 1 19 16Z" fill="url(#b)"/><path d="M20.9 11.9h-4.8a4.1 4.1 0 0 0-6.37-3.31 4.1 4.1 0 0 0 .7 7.2L20.9 11.9Zm0 0A8.9 8.9 0 0 0 7.08 4.58a8.9 8.9 0 0 0 5.24 16.31h.01l.17.01h7a2.4 2.4 0 0 0 0-4.8h-.6V16a2.9 2.9 0 0 0-4.4-2.49l6.4-1.61Z" stroke="url(#c)" stroke-opacity=".1" stroke-width=".2"/><defs><radialGradient id="a" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-29.05 43.8 -6.15) scale(15.4434)"><stop stop-color="#fff"/><stop offset=".25" stop-color="#E8F4FB"/><stop offset=".55" stop-color="#54C0FA"/><stop offset="1" stop-color="#0F74E2"/></radialGradient><radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 9.00002 -9.5 0 12.5 12)"><stop offset=".76" stop-opacity="0"/><stop offset=".78"/></radialGradient><linearGradient id="b" x1="15.5" y1="21" x2="10" y2="21" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#F3FAFE"/></linearGradient></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/and_uc.svg b/client/data/browsers-logos/and_uc.svg new file mode 100644 index 00000000..4cee13f7 --- /dev/null +++ b/client/data/browsers-logos/and_uc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.34 2h11.32A4.35 4.35 0 0 1 22 6.34v11.32A4.35 4.35 0 0 1 17.66 22H6.34A4.35 4.35 0 0 1 2 17.66V6.34A4.35 4.35 0 0 1 6.34 2Z" fill="url(#a)"/><path d="M9.74 19.28c-1.1 0-2.15-.17-3.06-.79a4.27 4.27 0 0 1-1.93-3.05 4.92 4.92 0 0 1 1.3-4.03c.44-.5.88-1 1.28-1.53.37-.5.53-1.08.41-1.7A1.66 1.66 0 0 0 5.91 6.9c-.42.05-.8.2-1.16.44l.09-.18a5.05 5.05 0 0 1 3.7-2.4 3.5 3.5 0 0 1 3.22 1.15c.81.91.94 1.97.57 3.1-.3.93-.9 1.63-1.7 2.17-.55.38-1.12.73-1.68 1.1a4.18 4.18 0 0 0-1.75 2.26c-.56 1.86.4 4.14 2.46 4.72l.08.02Zm2.75-2.88c0 1.18-.94 2.12-2.12 2.12a2.12 2.12 0 1 1 0-4.24c1.18 0 2.12.95 2.12 2.12Zm-2.13.98a.98.98 0 1 0 .01-1.95c-.54 0-1 .44-.99.97 0 .54.44.98.97.98Zm4.17.68c.81.06 1.58.18 2.01 1.04-1.77.16-3.5.18-5.25.19a3.13 3.13 0 0 0 1.97-1.92c.33-.96.2-1.86-.36-2.7a3.1 3.1 0 0 0-4.74-.32 2.83 2.83 0 0 1 2.66-1.78 3.8 3.8 0 0 1 3.5 2.02c.34.58.47 1.24.47 1.93 0 .52-.08 1.02-.26 1.54Zm4.77-3.62c-.18-.04-.33-.08-.48-.1-.44-.08-.86.01-1.26.2-.33.15-.67.33-1.05.35-.29.01-.58-.03-.87-.05-.12-.01-.2-.1-.25-.2a5.31 5.31 0 0 0-2.8-2.49 4.9 4.9 0 0 0-1.87-.3c-.05 0-.11 0-.18-.02l.18-.09c.55-.17 1.1-.22 1.67-.17a6.8 6.8 0 0 1 2.4.62c.47.24.92.53 1.38.79.54.3 1.14.44 1.75.5a2 2 0 0 1 .97.27c.24.16.4.37.41.7Zm-6.83-3.53c.54-.25 1.1-.48 1.62-.75.4-.21.76-.49 1.13-.73.14-.1.19-.22.19-.38 0-.6.13-1.15.48-1.64l.12-.15c.24.23.4.5.5.8.06.16.1.32.14.48.02.12.07.18.2.22a3.35 3.35 0 0 1 2.38 3.02c.02.18.01.37 0 .56 0 .05-.06.13-.1.15a3.05 3.05 0 0 1-2.63-.28 9.1 9.1 0 0 0-2.3-1.03 6.05 6.05 0 0 0-1.73-.27Z" fill="#FEFEFE"/><defs><linearGradient id="a" x1="12" y1="22" x2="12" y2="2" gradientUnits="userSpaceOnUse"><stop stop-color="#FF790C"/><stop offset="1" stop-color="#FFA422"/></linearGradient></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/android.svg b/client/data/browsers-logos/android.svg new file mode 100644 index 00000000..f4e854e7 --- /dev/null +++ b/client/data/browsers-logos/android.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="#8fbb45"><path d="M17.92 17.16c0 .45-.36.81-.81.81H7.69a.81.81 0 0 1-.81-.81v-8.4c2.47-.02 8.22-.02 11.04 0zM10.37 4.44c.04.1 0 .2-.08.25-.1.05-.21.01-.26-.08L8.84 2.3a.19.19 0 0 1 .34-.17l1.19 2.32zm4.33.1a.19.19 0 0 1-.26.07.19.19 0 0 1-.06-.26l1.3-2.26a.19.19 0 0 1 .25-.06c.1.05.13.16.07.25zm6.1 10.34a1.18 1.18 0 1 1-2.38 0V9.69a1.18 1.18 0 1 1 2.37 0v5.19zm-14.43 0a1.19 1.19 0 0 1-2.37 0V9.69a1.18 1.18 0 1 1 2.37 0z"/><path d="M11.53 20.82a1.19 1.19 0 0 1-2.37 0v-5.2a1.19 1.19 0 1 1 2.37 0zm4.11 0a1.19 1.19 0 0 1-2.37 0v-5.2a1.19 1.19 0 0 1 2.37 0zM12.4 3.21a5.63 5.63 0 0 0-5.57 5.01h11.14a5.63 5.63 0 0 0-5.57-5.01zM9.88 6.25a.46.46 0 1 1 0-.93.46.46 0 0 1 0 .93zm5.04 0a.46.46 0 1 1 0-.93.46.46 0 0 1 0 .93z"/></g></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/baidu.svg b/client/data/browsers-logos/baidu.svg new file mode 100644 index 00000000..a8a456d6 --- /dev/null +++ b/client/data/browsers-logos/baidu.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="25" xmlns="http://www.w3.org/2000/svg"><path d="M18.137 15.675c-.847-.75-1.877-1.613-3.33-3.675-.932-1.323-1.756-2-2.967-2-1.332 0-2.058.625-2.776 1.64-1.05 1.485-1.462 1.985-2.544 2.837-.393.31-2.43 1.586-2.43 3.836C4.09 20.938 5.967 22 7.668 22c2.234 0 2.72-.5 4.172-.5 1.817 0 2.785.5 4.238.5 2.907 0 3.512-2.188 3.512-3.564 0-1.311-.605-2.011-1.453-2.761zM5.785 12.443c1.562-.347 1.808-1.87 1.805-2.866 0-.348-.032-.632-.048-.78-.099-.838-1.013-2.274-2.275-2.296a1.727 1.727 0 0 0-.183.006C3.378 6.664 3.13 9.213 3.13 9.213a2.399 2.399 0 0 0-.04.482c.016 1.131.679 2.763 2.138 2.805.175.004.36-.013.558-.057zM9.842 8c1.243 0 2.248-1.343 2.248-3.001S11.085 2 9.842 2C8.598 2 7.59 3.34 7.59 4.999S8.598 8 9.842 8zm5.01.482c.11.015.217.02.322.017 1.348-.052 2.208-1.639 2.39-2.862a2.23 2.23 0 0 0 .026-.366c-.007-1.221-.915-2.506-1.9-2.745-1.088-.266-2.446 1.586-2.568 2.795-.019.185-.03.369-.032.551-.012 1.276.42 2.428 1.761 2.61zm6.23 2.089c0-.64-.502-2.571-2.37-2.571-1.874 0-2.122 1.822-2.122 3.11 0 1.205.094 2.876 2.29 2.89a4 4 0 0 0 .133-.001c2.013-.047 2.091-2.102 2.076-3.069-.002-.15-.007-.273-.007-.359z" fill="#1565c0"/><path d="M12.09 15.5v3.75s0 .938 1.313 1.25h3.187v-5h-1.312v3.75h-1.375s-.438-.063-.5-.375V15.5zm-2-2v2h-1.5a2.442 2.442 0 0 0-2 2.438V18c0 1.375.938 2.313 2 2.5h2.813v-7zm0 5.875H8.903c-.375 0-1-.563-1-1.375s.625-1.375 1-1.375h1.187z" fill="#fff"/></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/bb.svg b/client/data/browsers-logos/bb.svg new file mode 100644 index 00000000..e784c5fc --- /dev/null +++ b/client/data/browsers-logos/bb.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="25" xmlns="http://www.w3.org/2000/svg"><path d="M4.35 9.032h2.525c2.625 0 2.829-1.637 2.829-2.139 0-.45-.168-.861-.474-1.156-.39-.374-.985-.564-1.77-.564H5.04a.297.297 0 0 0-.29.236l-.69 3.265a.296.296 0 0 0 .29.358zm7.281 5.936H9.208a.297.297 0 0 0-.29.236l-.688 3.265a.297.297 0 0 0 .29.358h2.523c2.625 0 2.83-1.634 2.83-2.134 0-.405-.162-1.725-2.242-1.725zM8.83 11.643c0-.403-.161-1.72-2.243-1.72H4.165a.297.297 0 0 0-.29.235l-.688 3.265a.297.297 0 0 0 .29.358h2.524c2.626 0 2.83-1.636 2.83-2.138zm9.036 1.544h-2.42a.296.296 0 0 0-.29.23l-.688 2.968a.296.296 0 0 0 .289.364h2.523c2.462 0 2.83-1.246 2.83-1.99 0-.587-.292-1.572-2.244-1.572zm.891-5.046h-2.421a.297.297 0 0 0-.29.23l-.688 2.968a.296.296 0 0 0 .289.364h2.524c2.461 0 2.829-1.247 2.829-1.99 0-.587-.292-1.572-2.243-1.572zm-6.19 1.781h-2.422a.297.297 0 0 0-.29.235l-.69 3.266a.298.298 0 0 0 .29.358h2.526c2.624 0 2.828-1.636 2.828-2.138 0-.404-.161-1.72-2.242-1.72zm-2.237-.89h2.524c2.625 0 2.83-1.637 2.83-2.138 0-.404-.162-1.721-2.243-1.721H11.02a.297.297 0 0 0-.29.236l-.689 3.265a.296.296 0 0 0 .29.358z" fill="#000"/></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/chrome.svg b/client/data/browsers-logos/chrome.svg new file mode 100644 index 00000000..30675815 --- /dev/null +++ b/client/data/browsers-logos/chrome.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path d="M18.93 8A8 8 0 0 0 5.07 8l.48 8.64L18.93 8Z" fill="url(#a)"/><path d="M8.53 14 5.07 8A8 8 0 0 0 12 20l7.84-8-11.3 2Z" fill="url(#b)"/><path d="M15.46 14 12 20a8 8 0 0 0 6.93-12H12l3.46 6Z" fill="url(#c)"/><path d="M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z" fill="#fff"/><path d="M12 15.17a3.17 3.17 0 1 0 0-6.34 3.17 3.17 0 0 0 0 6.34Z" fill="#1A73E8"/><defs><linearGradient id="a" x1="5.07" y1="9" x2="18.93" y2="9" gradientUnits="userSpaceOnUse"><stop stop-color="#D93025"/><stop offset="1" stop-color="#EA4335"/></linearGradient><linearGradient id="b" x1="12.87" y1="19.5" x2="5.94" y2="7.5" gradientUnits="userSpaceOnUse"><stop stop-color="#1E8E3E"/><stop offset="1" stop-color="#34A853"/></linearGradient><linearGradient id="c" x1="10.83" y1="20" x2="17.76" y2="8.02" gradientUnits="userSpaceOnUse"><stop stop-color="#FCC934"/><stop offset="1" stop-color="#FBBC04"/></linearGradient></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/edge.svg b/client/data/browsers-logos/edge.svg new file mode 100644 index 00000000..9292f223 --- /dev/null +++ b/client/data/browsers-logos/edge.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" fill="none"><path d="M19.34 16.4a7.16 7.16 0 0 1-3.27.78c-3.33 0-6.22-2.29-6.22-5.23A2.22 2.22 0 0 1 11 10.03c-3 .13-3.78 3.27-3.78 5.1 0 5.2 4.79 5.73 5.82 5.73.55 0 1.4-.16 1.9-.32l.09-.03a9.02 9.02 0 0 0 4.68-3.72.28.28 0 0 0-.37-.39Z" fill="url(#a)"/><path opacity=".35" d="M19.34 16.4a7.16 7.16 0 0 1-3.27.78c-3.33 0-6.22-2.29-6.22-5.23A2.22 2.22 0 0 1 11 10.03c-3 .13-3.78 3.27-3.78 5.1 0 5.2 4.79 5.73 5.82 5.73.55 0 1.4-.16 1.9-.32l.09-.03a9.02 9.02 0 0 0 4.68-3.72.28.28 0 0 0-.37-.39Z" fill="url(#b)"/><path d="M10.52 19.97a5.68 5.68 0 0 1 .48-9.94c.22-.1.6-.28 1.1-.28a2.28 2.28 0 0 1 2.25 2.23c0-.01 1.72-5.6-5.63-5.6a5.9 5.9 0 0 0-5.62 5.5 9 9 0 0 0 11.85 8.65 5.3 5.3 0 0 1-4.42-.56Z" fill="url(#c)"/><path opacity=".41" d="M10.52 19.97a5.68 5.68 0 0 1 .48-9.94c.22-.1.6-.28 1.1-.28a2.28 2.28 0 0 1 2.25 2.23c0-.01 1.72-5.6-5.63-5.6a5.9 5.9 0 0 0-5.62 5.5 9 9 0 0 0 11.85 8.65 5.3 5.3 0 0 1-4.42-.56Z" fill="url(#d)"/><path d="M13.8 13.47c-.06.07-.23.17-.23.4 0 .17.12.36.33.5 1 .7 2.91.6 2.92.6a4.32 4.32 0 0 0 4.27-4.3c.02-1.57-.56-2.62-.8-3.08C18.8 4.67 15.6 3 12.1 3a9 9 0 0 0-9 8.88c.04-2.57 2.59-4.65 5.62-4.65.25 0 1.66.03 2.96.7A5.1 5.1 0 0 1 13.84 10c.43.74.5 1.7.5 2.07 0 .38-.18.94-.54 1.4Z" fill="url(#e)"/><path d="M13.8 13.47c-.06.07-.23.17-.23.4 0 .17.12.36.33.5 1 .7 2.91.6 2.92.6a4.32 4.32 0 0 0 4.27-4.3c.02-1.57-.56-2.62-.8-3.08C18.8 4.67 15.6 3 12.1 3a9 9 0 0 0-9 8.88c.04-2.57 2.59-4.65 5.62-4.65.25 0 1.66.03 2.96.7A5.1 5.1 0 0 1 13.84 10c.43.74.5 1.7.5 2.07 0 .38-.18.94-.54 1.4Z" fill="url(#f)"/><defs><radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.7076 0 0 6.37516 14.14 15.55)"><stop offset=".7" stop-opacity="0"/><stop offset=".9" stop-opacity=".5"/><stop offset="1"/></radialGradient><radialGradient id="d" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.50997 -9.97243 8.05315 1.21936 8.042 16.991)"><stop offset=".8" stop-opacity="0"/><stop offset=".9" stop-opacity=".5"/><stop offset="1"/></radialGradient><radialGradient id="e" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-.56925 14.23742 -30.30868 -1.21181 4.91 6.33)"><stop stop-color="#35C1F1"/><stop offset=".1" stop-color="#34C1ED"/><stop offset=".2" stop-color="#2FC2DF"/><stop offset=".3" stop-color="#2BC3D2"/><stop offset=".7" stop-color="#36C752"/></radialGradient><radialGradient id="f" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.91518 6.57068 -5.3412 1.55682 19.97 8.439)"><stop stop-color="#66EB6E"/><stop offset="1" stop-color="#66EB6E" stop-opacity="0"/></radialGradient><linearGradient id="a" x1="7.22" y1="15.45" x2="19.76" y2="15.45" gradientUnits="userSpaceOnUse"><stop stop-color="#0C59A4"/><stop offset="1" stop-color="#114A8B"/></linearGradient><linearGradient id="c" x1="13.83" y1="10.01" x2="6" y2="18.54" gradientUnits="userSpaceOnUse"><stop stop-color="#1B9DE2"/><stop offset=".2" stop-color="#1595DF"/><stop offset=".7" stop-color="#0680D7"/><stop offset="1" stop-color="#0078D4"/></linearGradient></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/firefox.svg b/client/data/browsers-logos/firefox.svg new file mode 100644 index 00000000..98cca08f --- /dev/null +++ b/client/data/browsers-logos/firefox.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="24" xmlns="http://www.w3.org/2000/svg"><radialGradient id="b" cx="18.47" cy="4.49" gradientUnits="userSpaceOnUse" r="19.58"><stop offset=".13" stop-color="#ffbd4f"/><stop offset=".19" stop-color="#ffac31"/><stop offset=".25" stop-color="#ff9d17"/><stop offset=".28" stop-color="#ff980e"/><stop offset=".4" stop-color="#ff563b"/><stop offset=".47" stop-color="#ff3750"/><stop offset=".71" stop-color="#f5156c"/><stop offset=".78" stop-color="#eb0878"/><stop offset=".86" stop-color="#e50080"/></radialGradient><radialGradient id="c" cx="11.2" cy="12.49" gradientUnits="userSpaceOnUse" r="19.58"><stop offset=".3" stop-color="#960e18"/><stop offset=".35" stop-color="#b11927" stop-opacity=".74"/><stop offset=".43" stop-color="#db293d" stop-opacity=".34"/><stop offset=".5" stop-color="#f5334b" stop-opacity=".09"/><stop offset=".53" stop-color="#ff3750" stop-opacity="0"/></radialGradient><radialGradient id="d" cx="13.63" cy=".13" gradientUnits="userSpaceOnUse" r="14.184"><stop offset=".13" stop-color="#fff44f"/><stop offset=".25" stop-color="#ffdc3e"/><stop offset=".51" stop-color="#ff9d12"/><stop offset=".53" stop-color="#ff980e"/></radialGradient><radialGradient id="e" cx="9.02" cy="17.58" gradientUnits="userSpaceOnUse" r="9.323"><stop offset=".35" stop-color="#3a8ee6"/><stop offset=".47" stop-color="#5c79f0"/><stop offset=".67" stop-color="#9059ff"/><stop offset="1" stop-color="#c139e6"/></radialGradient><radialGradient id="f" cx="0" cy="0" gradientTransform="matrix(4.80519 -1.16161 1.35995 5.62568 12.15 10.806)" gradientUnits="userSpaceOnUse" r="1"><stop offset=".21" stop-color="#9059ff" stop-opacity="0"/><stop offset=".28" stop-color="#8c4ff3" stop-opacity=".06"/><stop offset=".75" stop-color="#7716a8" stop-opacity=".45"/><stop offset=".97" stop-color="#6e008b" stop-opacity=".6"/></radialGradient><radialGradient id="g" cx="10.96" cy="3.76" gradientUnits="userSpaceOnUse" r="6.708"><stop offset="0" stop-color="#ffe226"/><stop offset=".12" stop-color="#ffdb27"/><stop offset=".29" stop-color="#ffc82a"/><stop offset=".5" stop-color="#ffa930"/><stop offset=".73" stop-color="#ff7e37"/><stop offset=".79" stop-color="#ff7139"/></radialGradient><radialGradient id="h" cx="16.3" cy="-.6" gradientUnits="userSpaceOnUse" r="28.619"><stop offset=".11" stop-color="#fff44f"/><stop offset=".46" stop-color="#ff980e"/><stop offset=".62" stop-color="#ff5634"/><stop offset=".72" stop-color="#ff3647"/><stop offset=".9" stop-color="#e31587"/></radialGradient><radialGradient id="i" cx="0" cy="0" gradientTransform="matrix(2.19952 20.85704 -13.6883 1.44353 13.903 .993)" gradientUnits="userSpaceOnUse" r="1"><stop offset="0" stop-color="#fff44f"/><stop offset=".06" stop-color="#ffe847"/><stop offset=".17" stop-color="#ffc830"/><stop offset=".3" stop-color="#ff980e"/><stop offset=".36" stop-color="#ff8b16"/><stop offset=".46" stop-color="#ff672a"/><stop offset=".57" stop-color="#ff3647"/><stop offset=".74" stop-color="#e31587"/></radialGradient><radialGradient id="j" cx="10.96" cy="6.19" gradientUnits="userSpaceOnUse" r="17.865"><stop offset=".14" stop-color="#fff44f"/><stop offset=".48" stop-color="#ff980e"/><stop offset=".59" stop-color="#ff5634"/><stop offset=".66" stop-color="#ff3647"/><stop offset=".9" stop-color="#e31587"/></radialGradient><radialGradient id="k" cx="15.57" cy="7.16" gradientUnits="userSpaceOnUse" r="19.554"><stop offset=".09" stop-color="#fff44f"/><stop offset=".23" stop-color="#ffe141"/><stop offset=".51" stop-color="#ffaf1e"/><stop offset=".63" stop-color="#ff980e"/></radialGradient><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="19.08" x2="3.48" y1="5.31" y2="20.35"><stop offset=".05" stop-color="#fff44f"/><stop offset=".11" stop-color="#ffe847"/><stop offset=".23" stop-color="#ffc830"/><stop offset=".37" stop-color="#ff980e"/><stop offset=".4" stop-color="#ff8b16"/><stop offset=".46" stop-color="#ff672a"/><stop offset=".53" stop-color="#ff3647"/><stop offset=".7" stop-color="#e31587"/></linearGradient><linearGradient id="l" gradientUnits="userSpaceOnUse" x1="18.89" x2="5.62" y1="5.23" y2="18.5"><stop offset=".17" stop-color="#fff44f" stop-opacity=".8"/><stop offset=".27" stop-color="#fff44f" stop-opacity=".63"/><stop offset=".49" stop-color="#fff44f" stop-opacity=".22"/><stop offset=".6" stop-color="#fff44f" stop-opacity="0"/></linearGradient><path d="M20.32 8.81a5.27 5.27 0 0 0-1.88-2.38c.46.9.78 1.86.95 2.85v.02c-1.06-2.65-2.86-3.72-4.33-6.04a11.3 11.3 0 0 1-.33-.55 1.71 1.71 0 0 1-.15-.4h-.04a6.85 6.85 0 0 0-3.23 5.22 4.7 4.7 0 0 0-2.58 1 2.8 2.8 0 0 0-.25-.19 4.35 4.35 0 0 1-.02-2.3A6.96 6.96 0 0 0 6.2 7.8c-.38-.47-.35-2.03-.33-2.35-.11.04-.22.1-.32.17a8.2 8.2 0 0 0-1.8 1.84A7.93 7.93 0 0 0 2.5 10.3l-.02.06-.09.59v.02c-.08.43-.13.86-.15 1.3v.04a9.4 9.4 0 0 0 18.65 1.6l.04-.37c.2-1.6-.02-3.22-.61-4.72zM9.49 16.16l.14.07z" fill="url(#a)"/><path d="M20.32 8.81a5.27 5.27 0 0 0-1.88-2.38c.46.9.78 1.86.95 2.85v.02a8.5 8.5 0 0 1-.3 6.34 8.07 8.07 0 0 1-7.75 4.56 9.46 9.46 0 0 1-9.02-7.67c-.13-.68 0-1.02.07-1.57a7 7 0 0 0-.15 1.3v.04a9.4 9.4 0 0 0 18.65 1.6l.04-.37c.2-1.6-.02-3.22-.6-4.72z" fill="url(#b)"/><path d="M20.32 8.81a5.27 5.27 0 0 0-1.88-2.38c.46.9.78 1.86.95 2.85v.02a8.5 8.5 0 0 1-.3 6.34 8.07 8.07 0 0 1-7.75 4.56 9.46 9.46 0 0 1-9.02-7.67c-.13-.68 0-1.02.07-1.57a7 7 0 0 0-.15 1.3v.04a9.4 9.4 0 0 0 18.65 1.6l.04-.37c.2-1.6-.02-3.22-.6-4.72z" fill="url(#c)"/><path d="m15.75 9.91.06.05c-.23-.42-.53-.8-.87-1.14-2.92-2.92-.76-6.33-.4-6.5V2.3a6.85 6.85 0 0 0-3.23 5.22l.33-.02a4.74 4.74 0 0 1 4.11 2.4z" fill="url(#d)"/><path d="M11.64 10.5c-.01.23-.84 1.04-1.13 1.04-2.67 0-3.1 1.61-3.1 1.61a3.96 3.96 0 0 0 2.65 3.26c.39.14.8.22 1.22.24 4.68.22 5.59-5.6 2.2-7.29.8-.1 1.61.1 2.27.55a4.74 4.74 0 0 0-4.11-2.4c-.11 0-.22 0-.33.02a4.7 4.7 0 0 0-2.59 1c.15.11.3.28.65.61.64.63 2.27 1.28 2.27 1.36z" fill="url(#e)"/><path d="M11.64 10.5c-.01.23-.84 1.04-1.13 1.04-2.67 0-3.1 1.61-3.1 1.61a3.96 3.96 0 0 0 2.65 3.26c.39.14.8.22 1.22.24 4.68.22 5.59-5.6 2.2-7.29.8-.1 1.61.1 2.27.55a4.74 4.74 0 0 0-4.11-2.4c-.11 0-.22 0-.33.02a4.7 4.7 0 0 0-2.59 1c.15.11.3.28.65.61.64.63 2.27 1.28 2.27 1.36z" fill="url(#f)"/><path d="m8.29 8.21.19.13a4.35 4.35 0 0 1-.03-2.3A6.95 6.95 0 0 0 6.2 7.8c.05 0 1.41-.02 2.1.42z" fill="url(#g)"/><path d="M2.32 12.53a9.45 9.45 0 0 0 9.02 7.67 8.08 8.08 0 0 0 7.75-4.56 8.5 8.5 0 0 0 .3-6.34v-.02.02c.33 2.18-.77 4.28-2.5 5.71l-.01.01c-3.37 2.75-6.6 1.66-7.25 1.21l-.14-.06c-1.96-.94-2.77-2.73-2.6-4.27a2.41 2.41 0 0 1-2.22-1.4 3.54 3.54 0 0 1 3.45-.14c1.11.5 2.38.56 3.53.14 0-.08-1.64-.73-2.28-1.35-.34-.34-.5-.5-.64-.62a2.8 2.8 0 0 0-.44-.31 4.62 4.62 0 0 0-2.1-.42c-.37-.48-.34-2.03-.32-2.36-.11.05-.22.1-.32.17a8.2 8.2 0 0 0-1.8 1.84 7.93 7.93 0 0 0-1.26 2.84c0 .02-.33 1.48-.17 2.24z" fill="url(#h)"/><path d="M14.94 8.82c.34.33.64.72.87 1.14l.14.11c2.13 1.97 1.02 4.74.93 4.94 1.73-1.43 2.84-3.54 2.5-5.71-1.06-2.65-2.86-3.72-4.33-6.04a11.5 11.5 0 0 1-.32-.56 1.71 1.71 0 0 1-.15-.39h-.04c-.36.17-2.52 3.59.4 6.5z" fill="url(#i)"/><path d="M15.95 10.07a1.97 1.97 0 0 0-.14-.11l-.06-.04a3.24 3.24 0 0 0-2.26-.55c3.38 1.68 2.47 7.5-2.21 7.28a4.18 4.18 0 0 1-1.5-.35l-.16-.07h.01c.65.45 3.88 1.54 7.25-1.21v-.01c.09-.2 1.2-2.97-.93-4.94z" fill="url(#j)"/><path d="M7.41 13.15s.43-1.61 3.1-1.61c.3 0 1.12-.81 1.13-1.04a4.68 4.68 0 0 1-3.52-.14 3.54 3.54 0 0 0-3.45.14 2.41 2.41 0 0 0 2.22 1.4c-.17 1.53.64 3.32 2.6 4.26l.13.06a3.96 3.96 0 0 1-2.2-3.07z" fill="url(#k)"/><path d="M20.32 8.81a5.27 5.27 0 0 0-1.88-2.38c.46.9.78 1.86.95 2.85v.02c-1.06-2.65-2.86-3.72-4.33-6.04a11.3 11.3 0 0 1-.33-.55 1.71 1.71 0 0 1-.15-.4h-.04a6.85 6.85 0 0 0-3.23 5.22l.33-.02a4.74 4.74 0 0 1 4.12 2.4 3.24 3.24 0 0 0-2.27-.55c3.38 1.7 2.47 7.51-2.2 7.3a4.18 4.18 0 0 1-1.5-.36l-.16-.07-.13-.07.13.07a3.97 3.97 0 0 1-2.22-3.08s.44-1.61 3.1-1.61c.3 0 1.12-.8 1.14-1.04 0-.08-1.64-.73-2.28-1.36-.34-.33-.5-.5-.64-.61a2.8 2.8 0 0 0-.25-.19 4.35 4.35 0 0 1-.02-2.3A6.95 6.95 0 0 0 6.2 7.8c-.38-.47-.35-2.02-.33-2.35-.11.05-.22.1-.32.17a8.2 8.2 0 0 0-1.8 1.84A7.93 7.93 0 0 0 2.5 10.3l-.01.06a15.99 15.99 0 0 0-.25 1.9v.05a9.4 9.4 0 0 0 18.65 1.6l.04-.37c.2-1.6-.02-3.22-.61-4.72zm-.93.48v.01z" fill="url(#l)"/></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/ie.svg b/client/data/browsers-logos/ie.svg new file mode 100644 index 00000000..fb684e68 --- /dev/null +++ b/client/data/browsers-logos/ie.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="25" xmlns="http://www.w3.org/2000/svg"><path d="M20.96 12.44c0-1.45-.4-2.82-1.07-4.01 2.93-6.32-3.1-5.38-3.46-5.38a16 16 0 0 0-3.55 1.1c-4.08-.04-7.63 2.06-8.79 6.4 2.13-2.3 3.64-3.23 4.53-3.58l-.56.5a25.54 25.54 0 0 0-3.55 4.19c-.76 1.28-1.6 2.39-2.04 3.84-2.4 8.36 5.15 4.86 6.21 4.27 1.15.54 2.4.84 3.82.84 3.72 0 6.92-2.3 8.07-5.46h-4.52c-2.13 3.24-7.2 1.8-7.37-1.7h12.25c.05-.36.07-.7.07-1.03zm-1.6-8.11c.73.48 1.33 1.2.3 3.75a7.94 7.94 0 0 0-4.16-3.32c.79-.37 2.75-1.11 3.9-.43zM3.65 19.78c-.6-.6-.71-2.05.62-4.7A8.16 8.16 0 0 0 8 19.43c-.86.46-3.1 1.45-4.35.29zm4.97-8.54c.07-1.88 1.77-3.41 3.9-3.41s3.82 1.53 3.9 3.41z" fill="#1ebbee"/></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/ie_mob.svg b/client/data/browsers-logos/ie_mob.svg new file mode 100644 index 00000000..fb684e68 --- /dev/null +++ b/client/data/browsers-logos/ie_mob.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="25" xmlns="http://www.w3.org/2000/svg"><path d="M20.96 12.44c0-1.45-.4-2.82-1.07-4.01 2.93-6.32-3.1-5.38-3.46-5.38a16 16 0 0 0-3.55 1.1c-4.08-.04-7.63 2.06-8.79 6.4 2.13-2.3 3.64-3.23 4.53-3.58l-.56.5a25.54 25.54 0 0 0-3.55 4.19c-.76 1.28-1.6 2.39-2.04 3.84-2.4 8.36 5.15 4.86 6.21 4.27 1.15.54 2.4.84 3.82.84 3.72 0 6.92-2.3 8.07-5.46h-4.52c-2.13 3.24-7.2 1.8-7.37-1.7h12.25c.05-.36.07-.7.07-1.03zm-1.6-8.11c.73.48 1.33 1.2.3 3.75a7.94 7.94 0 0 0-4.16-3.32c.79-.37 2.75-1.11 3.9-.43zM3.65 19.78c-.6-.6-.71-2.05.62-4.7A8.16 8.16 0 0 0 8 19.43c-.86.46-3.1 1.45-4.35.29zm4.97-8.54c.07-1.88 1.77-3.41 3.9-3.41s3.82 1.53 3.9 3.41z" fill="#1ebbee"/></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/ios_saf.svg b/client/data/browsers-logos/ios_saf.svg new file mode 100644 index 00000000..e5ece08d --- /dev/null +++ b/client/data/browsers-logos/ios_saf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" fill="none"><path d="M21.16 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" fill="#119BFF"/><path d="M12.17 3.47a.13.13 0 0 0-.14.13v1.51a.13.13 0 1 0 .27 0v-1.5a.13.13 0 0 0-.13-.14Zm-.86.05h-.03a.13.13 0 0 0-.12.15l.07.63c0 .07.07.13.14.12.08 0 .13-.07.12-.15l-.07-.63a.13.13 0 0 0-.11-.12Zm1.72 0a.13.13 0 0 0-.12.12l-.06.63a.13.13 0 1 0 .26.03l.06-.63a.13.13 0 0 0-.14-.15Zm-2.6.13h-.03a.13.13 0 0 0-.1.16l.31 1.48c.02.07.09.12.16.1a.13.13 0 0 0 .1-.15l-.32-1.48a.13.13 0 0 0-.13-.1Zm3.48 0a.13.13 0 0 0-.13.1l-.31 1.49c-.02.07.03.14.1.15.07.02.14-.03.15-.1l.32-1.48a.13.13 0 0 0-.13-.16Zm-4.33.24h-.05c-.07.03-.1.1-.08.17l.2.6a.13.13 0 1 0 .24-.08l-.2-.6a.13.13 0 0 0-.1-.1Zm5.17 0c-.05 0-.1.04-.12.09l-.2.6a.13.13 0 1 0 .26.09l.2-.6a.13.13 0 0 0-.14-.18Zm-6 .3-.05.01c-.07.03-.1.11-.07.18l.62 1.38c.03.07.1.1.17.07s.1-.1.07-.18l-.62-1.38a.13.13 0 0 0-.12-.08Zm6.84 0c-.05 0-.1.04-.12.09l-.62 1.38a.13.13 0 1 0 .24.1l.62-1.38a.13.13 0 0 0-.12-.18Zm-7.61.41c-.03 0-.05 0-.08.02a.13.13 0 0 0-.04.18l.31.55a.13.13 0 1 0 .23-.13l-.32-.55a.13.13 0 0 0-.1-.07Zm8.37 0a.13.13 0 0 0-.1.07l-.32.55a.13.13 0 1 0 .23.13l.31-.55a.13.13 0 0 0-.12-.2Zm-9.12.47a.13.13 0 0 0-.1.2l.89 1.23a.13.13 0 1 0 .2-.15l-.88-1.23a.13.13 0 0 0-.11-.05Zm9.88 0a.13.13 0 0 0-.11.06l-.89 1.22a.13.13 0 1 0 .21.15l.9-1.21a.13.13 0 0 0-.1-.21Zm-10.55.56c-.04 0-.07.01-.1.04a.13.13 0 0 0 0 .18l.42.47c.05.06.13.06.19.01a.13.13 0 0 0 0-.18l-.42-.47a.13.13 0 0 0-.1-.05Zm11.21 0a.13.13 0 0 0-.09.05l-.42.47a.13.13 0 1 0 .2.18l.42-.48a.13.13 0 0 0-.1-.22Zm-11.85.62a.13.13 0 0 0-.09.23l1.13 1.01a.13.13 0 1 0 .18-.2L6 6.3a.13.13 0 0 0-.1-.04Zm12.5 0c-.03 0-.07.01-.1.04l-1.12 1a.13.13 0 1 0 .17.2l1.13-1a.13.13 0 0 0-.08-.24Zm-13.04.69a.13.13 0 0 0-.08.24l.51.37c.06.04.15.03.19-.03a.13.13 0 0 0-.03-.18l-.52-.38a.13.13 0 0 0-.07-.02Zm13.57 0c-.02 0-.05.01-.07.03l-.52.37a.13.13 0 1 0 .16.21l.51-.37a.13.13 0 0 0-.08-.24Zm-14.07.73a.13.13 0 0 0-.06.24l1.32.76a.13.13 0 1 0 .13-.23L4.96 7.7a.13.13 0 0 0-.08-.02Zm14.57 0c-.03 0-.05 0-.08.02l-1.3.75a.13.13 0 0 0-.05.18c.03.07.11.09.17.05l1.31-.76a.13.13 0 0 0-.05-.24ZM4.5 8.45c-.05 0-.1.03-.12.08-.03.07 0 .14.07.17l.58.26a.13.13 0 1 0 .1-.24l-.57-.26a.13.13 0 0 0-.06 0Zm15.33 0-.05.02-.58.26a.13.13 0 1 0 .1.24l.58-.26a.13.13 0 0 0-.05-.25Zm-15.66.82c-.05 0-.1.04-.12.09-.02.07.02.14.09.16l1.44.47a.13.13 0 1 0 .08-.25l-1.44-.47h-.05Zm16 0h-.06l-1.44.48a.13.13 0 1 0 .08.25l1.44-.47a.13.13 0 0 0-.03-.26Zm-16.21.85a.13.13 0 0 0-.03.26l.62.14a.13.13 0 1 0 .06-.26l-.63-.13h-.02Zm16.41 0h-.02l-.63.14a.13.13 0 1 0 .06.26l.62-.13a.13.13 0 0 0-.03-.26ZM3.8 11a.13.13 0 0 0 0 .26l1.5.16a.13.13 0 1 0 .03-.26L3.83 11H3.8Zm16.73 0h-.02l-1.51.17a.13.13 0 1 0 .03.26l1.5-.16a.13.13 0 0 0 0-.26Zm-16.76.88a.13.13 0 1 0 0 .26h.64a.13.13 0 1 0 0-.26h-.64Zm16.15 0a.13.13 0 1 0 0 .26h.64c.07 0 .13-.06.13-.13a.13.13 0 0 0-.13-.13h-.64Zm-14.59.71H5.3l-1.5.16a.13.13 0 1 0 .03.26l1.5-.15a.13.13 0 0 0 0-.27ZM19 12.6a.13.13 0 0 0 0 .26l1.5.16a.13.13 0 1 0 .03-.26l-1.5-.16H19Zm-14.42.89h-.03l-.62.14a.13.13 0 1 0 .05.25l.63-.13a.13.13 0 0 0-.03-.26Zm15.17 0a.13.13 0 0 0-.13.1c-.01.08.03.15.1.16l.63.13c.07.02.14-.03.15-.1a.13.13 0 0 0-.1-.15l-.62-.14h-.03ZM5.63 14h-.05l-1.44.47a.13.13 0 1 0 .08.25l1.44-.47a.13.13 0 0 0-.03-.25Zm13.07 0c-.05 0-.1.04-.11.1-.02.06.01.14.08.16l1.44.47a.13.13 0 1 0 .08-.25L18.75 14h-.05ZM5.08 15.02l-.05.01-.58.26c-.07.03-.1.11-.07.18.03.06.1.1.17.06l.58-.26a.13.13 0 0 0-.05-.25Zm14.17 0c-.05 0-.1.04-.12.09-.03.06 0 .14.06.17l.59.26a.13.13 0 1 0 .1-.24l-.58-.26a.13.13 0 0 0-.05-.01Zm-13.04.3c-.02-.01-.05 0-.07.01l-1.31.76a.13.13 0 0 0-.05.18c.03.06.11.08.18.04l1.3-.75a.13.13 0 0 0-.05-.25Zm11.9 0a.13.13 0 0 0-.06.24l1.32.75a.13.13 0 1 0 .13-.22l-1.3-.76a.13.13 0 0 0-.08-.02Zm-12.23 1.1c-.02 0-.05.01-.07.03l-.51.37a.13.13 0 1 0 .15.21l.52-.37a.13.13 0 0 0-.09-.24Zm12.56 0a.13.13 0 0 0-.08.24l.52.38c.06.04.14.03.18-.03a.13.13 0 0 0-.03-.18l-.51-.38a.13.13 0 0 0-.08-.02Zm-11.39.05c-.03 0-.07.01-.1.04l-1.12 1a.13.13 0 1 0 .18.2l1.12-1a.13.13 0 0 0-.08-.24Zm10.23 0a.13.13 0 0 0-.08.23l1.12 1.02a.13.13 0 1 0 .18-.2l-1.13-1.01a.13.13 0 0 0-.1-.03Zm-9.16.97a.13.13 0 0 0-.11.05l-.9 1.23a.13.13 0 1 0 .22.15l.89-1.22a.13.13 0 0 0-.1-.21Zm8.08 0c-.02 0-.05.01-.07.03a.13.13 0 0 0-.03.18l.9 1.23c.03.06.12.07.17.03a.13.13 0 0 0 .03-.19l-.89-1.22a.13.13 0 0 0-.1-.06Zm-9.23.2a.13.13 0 0 0-.1.04l-.42.47a.13.13 0 1 0 .2.17l.42-.47a.13.13 0 0 0-.1-.22Zm10.39 0c-.03 0-.07 0-.1.03a.13.13 0 0 0 0 .18l.42.47a.13.13 0 1 0 .2-.17l-.43-.47a.13.13 0 0 0-.09-.05Zm-8 .52c-.05 0-.1.03-.12.08l-.62 1.38a.13.13 0 1 0 .24.1l.62-1.38a.13.13 0 0 0-.12-.18Zm5.6 0-.05.01c-.07.03-.1.1-.07.18l.62 1.38a.13.13 0 1 0 .24-.1l-.62-1.4a.13.13 0 0 0-.12-.07Zm-6.68.42a.13.13 0 0 0-.1.07l-.32.55a.13.13 0 0 0 .04.18c.07.04.15.02.18-.05l.32-.55a.13.13 0 0 0-.12-.2Zm7.77 0c-.02 0-.05 0-.07.02a.13.13 0 0 0-.05.18l.32.55a.13.13 0 1 0 .22-.13l-.31-.55a.13.13 0 0 0-.1-.07Zm-5.31.02a.13.13 0 0 0-.13.1l-.32 1.49a.13.13 0 1 0 .26.05l.31-1.48a.13.13 0 0 0-.12-.16Zm2.85 0h-.03a.13.13 0 0 0-.1.16l.32 1.48a.13.13 0 1 0 .25-.05l-.31-1.48a.13.13 0 0 0-.13-.1Zm-1.42.15a.13.13 0 0 0-.14.14v1.51a.13.13 0 1 0 .27 0v-1.51a.13.13 0 0 0-.13-.14Zm-2.41.5c-.05 0-.1.03-.12.08l-.2.61a.13.13 0 1 0 .26.08l.2-.6a.13.13 0 0 0-.14-.18Zm4.81 0h-.05c-.07.02-.1.1-.08.17l.2.6c.02.07.09.1.16.09.07-.03.1-.1.08-.17l-.2-.6a.13.13 0 0 0-.1-.1Zm-3.23.33a.13.13 0 0 0-.12.12l-.06.63c-.01.07.04.14.11.15.08 0 .14-.05.15-.12l.06-.63a.13.13 0 0 0-.14-.15Zm1.64 0h-.02a.13.13 0 0 0-.12.15l.07.63c0 .07.07.12.14.12.07-.01.12-.08.12-.15l-.07-.63a.13.13 0 0 0-.12-.12Z" fill="#F4F2F3"/><g opacity=".41" filter="url(#a)"><path d="m18.32 6.75-7.18 4.17-4.54 7.15 6.64-4.92 5.08-6.4Z" fill="#000"/></g><path d="m13.2 13.08-2.06-2.16 7.3-4.9-5.25 7.06Z" fill="#FF5150"/><path d="m13.2 13.08-2.06-2.16L5.89 18l7.3-4.91Z" fill="#F1F1F1"/><path opacity=".24" d="m5.9 17.99 7.3-4.91L18.43 6 5.89 18Z" fill="#000"/><defs><filter id="a" x="5.92" y="6.08" width="13.06" height="12.66" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation=".34" result="effect1_foregroundBlur_5_917"/></filter></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/kaios.svg b/client/data/browsers-logos/kaios.svg new file mode 100644 index 00000000..9c88539f --- /dev/null +++ b/client/data/browsers-logos/kaios.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" fill="none"><path d="M8.64 5a1.61 1.61 0 0 0-1.51 1c-.08.2-.13.4-.13.62v10.75a1.65 1.65 0 0 0 1.02 1.51c.2.08.4.12.62.12a1.6 1.6 0 0 0 1.52-1c.09-.2.13-.4.13-.62V6.62A1.66 1.66 0 0 0 8.64 5Zm5.44 4.98a1.62 1.62 0 0 0-2.9 1.26c.05.21.13.4.26.57l4.63 6.5a1.62 1.62 0 0 0 2.9-.6 1.58 1.58 0 0 0-.23-1.18l-.04-.05-4.61-6.5Zm2.11-.69a2.14 2.14 0 1 0 0-4.28 2.13 2.13 0 0 0-2 1.32c-.1.26-.16.54-.17.82a2.18 2.18 0 0 0 1.35 1.99c.26.1.54.16.82.15Z" fill="#6F02B5"/></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/node.svg b/client/data/browsers-logos/node.svg new file mode 100644 index 00000000..47f791ee --- /dev/null +++ b/client/data/browsers-logos/node.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="25" xmlns="http://www.w3.org/2000/svg"><filter id="e" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="66.916" width="61.425" x="-18.24" y="-17.71"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="4"/><feGaussianBlur stdDeviation="10"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_892_72177"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_892_72177" result="shape"/></filter><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="4.994" x2="15.234" y1="2.355" y2="4.939"><stop offset="0" stop-color="#639a59"/><stop offset="1" stop-color="#69a05c"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="5.624" x2="11.351" y1="12.409" y2="22.416"><stop offset="0" stop-color="#5aac45"/><stop offset="1" stop-color="#55934f"/></linearGradient><linearGradient id="d" gradientUnits="userSpaceOnUse" x1=".157" x2="5.969" y1="2.742" y2="13.185"><stop offset="0" stop-color="#3e863d"/><stop offset="1" stop-color="#52914c"/></linearGradient><linearGradient id="f" gradientUnits="userSpaceOnUse" x1=".221" x2="11.518" y1="2.6" y2="22.471"><stop offset="0" stop-color="#6bbf47"/><stop offset=".294" stop-color="#70a861"/><stop offset=".63" stop-color="#54944d"/><stop offset="1" stop-color="#3e863d"/></linearGradient><mask id="a" height="24" maskUnits="userSpaceOnUse" width="22" x="1" y="0"><path d="M1.59 16.775V6.997a2 2 0 0 1 1.04-1.755L11.248.53a2 2 0 0 1 1.937.01l8.384 4.697a2 2 0 0 1 1.022 1.745v9.806a2 2 0 0 1-.99 1.727l-8.384 4.901a2 2 0 0 1-2 .01L2.6 18.511a2 2 0 0 1-1.009-1.737z" fill="#d9d9d9"/></mask><g mask="url(#a)"><rect fill="url(#b)" height="10.468" rx="2" transform="matrix(.87553 .48317 -.49635 .86813 10.13 -3.447)" width="18.767"/><rect fill="#3e863d" height="10.468" rx="2" transform="matrix(.87553 .48317 -.49635 .86813 1.986 8.842)" width="18.767"/><rect fill="url(#c)" height="26.1" rx="2" transform="matrix(.86982 .49338 -.50665 .86215 2.985 -7.832)" width="12.186"/><rect fill="url(#d)" height="26.096" rx="2" transform="matrix(.87553 .48317 -.49635 .86813 23.728 3.607)" width="12.188"/><g filter="url(#e)"><rect fill="url(#f)" height="26.089" rx="2" transform="matrix(.88325 -.4689 .48192 .87621 1.043 3.049)" width="11.646"/></g></g></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/op_mini.svg b/client/data/browsers-logos/op_mini.svg new file mode 100644 index 00000000..251b6938 --- /dev/null +++ b/client/data/browsers-logos/op_mini.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="26" height="24" fill="none"><path d="M8.88 7.6c.82-1.18 1.96-1.9 3.22-1.9 2.48 0 4.5 2.82 4.5 6.3 0 3.47-2.02 6.3-4.5 6.3-1.39 0-2.63-.89-3.46-2.27a7 7 0 0 0 6.07 3.67c1.34 0 2.29-.32 3-.74a8.98 8.98 0 0 0-.17-14.04 6.63 6.63 0 0 0-2.83-.63A6.98 6.98 0 0 0 8.88 7.6Z" fill="url(#a)"/><path d="M3 12a9 9 0 0 0 14.72 6.95c-.71.42-1.66.74-3 .74a7 7 0 0 1-6.07-3.67 8.2 8.2 0 0 1-1.04-4v-.48c.08-1.45.54-2.8 1.27-3.94a6.98 6.98 0 0 1 5.84-3.32c1 0 1.96.23 2.83.63A9 9 0 0 0 3 12" fill="url(#b)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M21.7 12.38h-7.84c-2.54 0-2.86 2.54-2.86 3.47v1.3h7.11c3.27 0 3.58-2.79 3.58-3.72v-1.05Z" fill="#439F46"/><path d="M13.2 13.58h.47l.76 1.88.75-1.88h.47v2.37h-.44V14.5l-.11.36-.46 1.09h-.43l-.46-1.09-.11-.36v1.45h-.43v-2.37Zm2.77 0h.45v2.37h-.45v-2.37Zm.77 0h.45l.99 1.5.1.2v-1.7h.43v2.37h-.45l-.99-1.51-.1-.19v1.7h-.43v-2.37Zm2.29 0h.45v2.37h-.45v-2.37Z" fill="#fff"/><defs><linearGradient id="a" x1="14.83" y1="4.28" x2="14.83" y2="19.69" gradientUnits="userSpaceOnUse"><stop stop-color="#9C0000"/><stop offset=".7" stop-color="#FF4B4B"/><stop offset="1" stop-color="#FF4B4B"/></linearGradient><linearGradient id="b" x1="10.36" y1="3" x2="10.36" y2="21" gradientUnits="userSpaceOnUse"><stop stop-color="#FF1B2D"/><stop offset=".3" stop-color="#FF1B2D"/><stop offset=".61" stop-color="#FF1B2D"/><stop offset="1" stop-color="#A70014"/></linearGradient></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/op_mob.svg b/client/data/browsers-logos/op_mob.svg new file mode 100644 index 00000000..cf4c44d8 --- /dev/null +++ b/client/data/browsers-logos/op_mob.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" fill="none"><path d="M12 3a9 9 0 1 0 6 15.71 6.5 6.5 0 0 1-3.6 1.1 6.76 6.76 0 0 1-5.36-2.74 7.84 7.84 0 0 1-1.69-4.86v-.42a7.84 7.84 0 0 1 1.69-4.86 6.76 6.76 0 0 1 5.35-2.74c1.32 0 2.55.4 3.6 1.1A8.97 8.97 0 0 0 12.04 3H12Z" fill="url(#a)"/><path d="M9.04 6.93a4.03 4.03 0 0 1 3.06-1.56c2.62 0 4.74 2.97 4.74 6.63 0 3.66-2.12 6.64-4.74 6.64a4.03 4.03 0 0 1-3.06-1.57 6.76 6.76 0 0 0 5.35 2.74 6.5 6.5 0 0 0 3.6-1.1 8.98 8.98 0 0 0 0-13.42 6.5 6.5 0 0 0-3.6-1.1 6.76 6.76 0 0 0-5.35 2.74" fill="url(#b)"/><defs><linearGradient id="a" x1="10.5" y1="3.29" x2="10.5" y2="20.74" gradientUnits="userSpaceOnUse"><stop stop-color="#FF1B2D"/><stop offset=".3" stop-color="#FF1B2D"/><stop offset=".61" stop-color="#FF1B2D"/><stop offset="1" stop-color="#A70014"/></linearGradient><linearGradient id="b" x1="15.02" y1="4.32" x2="15.02" y2="19.75" gradientUnits="userSpaceOnUse"><stop stop-color="#9C0000"/><stop offset=".7" stop-color="#FF4B4B"/><stop offset="1" stop-color="#FF4B4B"/></linearGradient></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/opera.svg b/client/data/browsers-logos/opera.svg new file mode 100644 index 00000000..cf4c44d8 --- /dev/null +++ b/client/data/browsers-logos/opera.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" fill="none"><path d="M12 3a9 9 0 1 0 6 15.71 6.5 6.5 0 0 1-3.6 1.1 6.76 6.76 0 0 1-5.36-2.74 7.84 7.84 0 0 1-1.69-4.86v-.42a7.84 7.84 0 0 1 1.69-4.86 6.76 6.76 0 0 1 5.35-2.74c1.32 0 2.55.4 3.6 1.1A8.97 8.97 0 0 0 12.04 3H12Z" fill="url(#a)"/><path d="M9.04 6.93a4.03 4.03 0 0 1 3.06-1.56c2.62 0 4.74 2.97 4.74 6.63 0 3.66-2.12 6.64-4.74 6.64a4.03 4.03 0 0 1-3.06-1.57 6.76 6.76 0 0 0 5.35 2.74 6.5 6.5 0 0 0 3.6-1.1 8.98 8.98 0 0 0 0-13.42 6.5 6.5 0 0 0-3.6-1.1 6.76 6.76 0 0 0-5.35 2.74" fill="url(#b)"/><defs><linearGradient id="a" x1="10.5" y1="3.29" x2="10.5" y2="20.74" gradientUnits="userSpaceOnUse"><stop stop-color="#FF1B2D"/><stop offset=".3" stop-color="#FF1B2D"/><stop offset=".61" stop-color="#FF1B2D"/><stop offset="1" stop-color="#A70014"/></linearGradient><linearGradient id="b" x1="15.02" y1="4.32" x2="15.02" y2="19.75" gradientUnits="userSpaceOnUse"><stop stop-color="#9C0000"/><stop offset=".7" stop-color="#FF4B4B"/><stop offset="1" stop-color="#FF4B4B"/></linearGradient></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/safari.svg b/client/data/browsers-logos/safari.svg new file mode 100644 index 00000000..e5ece08d --- /dev/null +++ b/client/data/browsers-logos/safari.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" fill="none"><path d="M21.16 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" fill="#119BFF"/><path d="M12.17 3.47a.13.13 0 0 0-.14.13v1.51a.13.13 0 1 0 .27 0v-1.5a.13.13 0 0 0-.13-.14Zm-.86.05h-.03a.13.13 0 0 0-.12.15l.07.63c0 .07.07.13.14.12.08 0 .13-.07.12-.15l-.07-.63a.13.13 0 0 0-.11-.12Zm1.72 0a.13.13 0 0 0-.12.12l-.06.63a.13.13 0 1 0 .26.03l.06-.63a.13.13 0 0 0-.14-.15Zm-2.6.13h-.03a.13.13 0 0 0-.1.16l.31 1.48c.02.07.09.12.16.1a.13.13 0 0 0 .1-.15l-.32-1.48a.13.13 0 0 0-.13-.1Zm3.48 0a.13.13 0 0 0-.13.1l-.31 1.49c-.02.07.03.14.1.15.07.02.14-.03.15-.1l.32-1.48a.13.13 0 0 0-.13-.16Zm-4.33.24h-.05c-.07.03-.1.1-.08.17l.2.6a.13.13 0 1 0 .24-.08l-.2-.6a.13.13 0 0 0-.1-.1Zm5.17 0c-.05 0-.1.04-.12.09l-.2.6a.13.13 0 1 0 .26.09l.2-.6a.13.13 0 0 0-.14-.18Zm-6 .3-.05.01c-.07.03-.1.11-.07.18l.62 1.38c.03.07.1.1.17.07s.1-.1.07-.18l-.62-1.38a.13.13 0 0 0-.12-.08Zm6.84 0c-.05 0-.1.04-.12.09l-.62 1.38a.13.13 0 1 0 .24.1l.62-1.38a.13.13 0 0 0-.12-.18Zm-7.61.41c-.03 0-.05 0-.08.02a.13.13 0 0 0-.04.18l.31.55a.13.13 0 1 0 .23-.13l-.32-.55a.13.13 0 0 0-.1-.07Zm8.37 0a.13.13 0 0 0-.1.07l-.32.55a.13.13 0 1 0 .23.13l.31-.55a.13.13 0 0 0-.12-.2Zm-9.12.47a.13.13 0 0 0-.1.2l.89 1.23a.13.13 0 1 0 .2-.15l-.88-1.23a.13.13 0 0 0-.11-.05Zm9.88 0a.13.13 0 0 0-.11.06l-.89 1.22a.13.13 0 1 0 .21.15l.9-1.21a.13.13 0 0 0-.1-.21Zm-10.55.56c-.04 0-.07.01-.1.04a.13.13 0 0 0 0 .18l.42.47c.05.06.13.06.19.01a.13.13 0 0 0 0-.18l-.42-.47a.13.13 0 0 0-.1-.05Zm11.21 0a.13.13 0 0 0-.09.05l-.42.47a.13.13 0 1 0 .2.18l.42-.48a.13.13 0 0 0-.1-.22Zm-11.85.62a.13.13 0 0 0-.09.23l1.13 1.01a.13.13 0 1 0 .18-.2L6 6.3a.13.13 0 0 0-.1-.04Zm12.5 0c-.03 0-.07.01-.1.04l-1.12 1a.13.13 0 1 0 .17.2l1.13-1a.13.13 0 0 0-.08-.24Zm-13.04.69a.13.13 0 0 0-.08.24l.51.37c.06.04.15.03.19-.03a.13.13 0 0 0-.03-.18l-.52-.38a.13.13 0 0 0-.07-.02Zm13.57 0c-.02 0-.05.01-.07.03l-.52.37a.13.13 0 1 0 .16.21l.51-.37a.13.13 0 0 0-.08-.24Zm-14.07.73a.13.13 0 0 0-.06.24l1.32.76a.13.13 0 1 0 .13-.23L4.96 7.7a.13.13 0 0 0-.08-.02Zm14.57 0c-.03 0-.05 0-.08.02l-1.3.75a.13.13 0 0 0-.05.18c.03.07.11.09.17.05l1.31-.76a.13.13 0 0 0-.05-.24ZM4.5 8.45c-.05 0-.1.03-.12.08-.03.07 0 .14.07.17l.58.26a.13.13 0 1 0 .1-.24l-.57-.26a.13.13 0 0 0-.06 0Zm15.33 0-.05.02-.58.26a.13.13 0 1 0 .1.24l.58-.26a.13.13 0 0 0-.05-.25Zm-15.66.82c-.05 0-.1.04-.12.09-.02.07.02.14.09.16l1.44.47a.13.13 0 1 0 .08-.25l-1.44-.47h-.05Zm16 0h-.06l-1.44.48a.13.13 0 1 0 .08.25l1.44-.47a.13.13 0 0 0-.03-.26Zm-16.21.85a.13.13 0 0 0-.03.26l.62.14a.13.13 0 1 0 .06-.26l-.63-.13h-.02Zm16.41 0h-.02l-.63.14a.13.13 0 1 0 .06.26l.62-.13a.13.13 0 0 0-.03-.26ZM3.8 11a.13.13 0 0 0 0 .26l1.5.16a.13.13 0 1 0 .03-.26L3.83 11H3.8Zm16.73 0h-.02l-1.51.17a.13.13 0 1 0 .03.26l1.5-.16a.13.13 0 0 0 0-.26Zm-16.76.88a.13.13 0 1 0 0 .26h.64a.13.13 0 1 0 0-.26h-.64Zm16.15 0a.13.13 0 1 0 0 .26h.64c.07 0 .13-.06.13-.13a.13.13 0 0 0-.13-.13h-.64Zm-14.59.71H5.3l-1.5.16a.13.13 0 1 0 .03.26l1.5-.15a.13.13 0 0 0 0-.27ZM19 12.6a.13.13 0 0 0 0 .26l1.5.16a.13.13 0 1 0 .03-.26l-1.5-.16H19Zm-14.42.89h-.03l-.62.14a.13.13 0 1 0 .05.25l.63-.13a.13.13 0 0 0-.03-.26Zm15.17 0a.13.13 0 0 0-.13.1c-.01.08.03.15.1.16l.63.13c.07.02.14-.03.15-.1a.13.13 0 0 0-.1-.15l-.62-.14h-.03ZM5.63 14h-.05l-1.44.47a.13.13 0 1 0 .08.25l1.44-.47a.13.13 0 0 0-.03-.25Zm13.07 0c-.05 0-.1.04-.11.1-.02.06.01.14.08.16l1.44.47a.13.13 0 1 0 .08-.25L18.75 14h-.05ZM5.08 15.02l-.05.01-.58.26c-.07.03-.1.11-.07.18.03.06.1.1.17.06l.58-.26a.13.13 0 0 0-.05-.25Zm14.17 0c-.05 0-.1.04-.12.09-.03.06 0 .14.06.17l.59.26a.13.13 0 1 0 .1-.24l-.58-.26a.13.13 0 0 0-.05-.01Zm-13.04.3c-.02-.01-.05 0-.07.01l-1.31.76a.13.13 0 0 0-.05.18c.03.06.11.08.18.04l1.3-.75a.13.13 0 0 0-.05-.25Zm11.9 0a.13.13 0 0 0-.06.24l1.32.75a.13.13 0 1 0 .13-.22l-1.3-.76a.13.13 0 0 0-.08-.02Zm-12.23 1.1c-.02 0-.05.01-.07.03l-.51.37a.13.13 0 1 0 .15.21l.52-.37a.13.13 0 0 0-.09-.24Zm12.56 0a.13.13 0 0 0-.08.24l.52.38c.06.04.14.03.18-.03a.13.13 0 0 0-.03-.18l-.51-.38a.13.13 0 0 0-.08-.02Zm-11.39.05c-.03 0-.07.01-.1.04l-1.12 1a.13.13 0 1 0 .18.2l1.12-1a.13.13 0 0 0-.08-.24Zm10.23 0a.13.13 0 0 0-.08.23l1.12 1.02a.13.13 0 1 0 .18-.2l-1.13-1.01a.13.13 0 0 0-.1-.03Zm-9.16.97a.13.13 0 0 0-.11.05l-.9 1.23a.13.13 0 1 0 .22.15l.89-1.22a.13.13 0 0 0-.1-.21Zm8.08 0c-.02 0-.05.01-.07.03a.13.13 0 0 0-.03.18l.9 1.23c.03.06.12.07.17.03a.13.13 0 0 0 .03-.19l-.89-1.22a.13.13 0 0 0-.1-.06Zm-9.23.2a.13.13 0 0 0-.1.04l-.42.47a.13.13 0 1 0 .2.17l.42-.47a.13.13 0 0 0-.1-.22Zm10.39 0c-.03 0-.07 0-.1.03a.13.13 0 0 0 0 .18l.42.47a.13.13 0 1 0 .2-.17l-.43-.47a.13.13 0 0 0-.09-.05Zm-8 .52c-.05 0-.1.03-.12.08l-.62 1.38a.13.13 0 1 0 .24.1l.62-1.38a.13.13 0 0 0-.12-.18Zm5.6 0-.05.01c-.07.03-.1.1-.07.18l.62 1.38a.13.13 0 1 0 .24-.1l-.62-1.4a.13.13 0 0 0-.12-.07Zm-6.68.42a.13.13 0 0 0-.1.07l-.32.55a.13.13 0 0 0 .04.18c.07.04.15.02.18-.05l.32-.55a.13.13 0 0 0-.12-.2Zm7.77 0c-.02 0-.05 0-.07.02a.13.13 0 0 0-.05.18l.32.55a.13.13 0 1 0 .22-.13l-.31-.55a.13.13 0 0 0-.1-.07Zm-5.31.02a.13.13 0 0 0-.13.1l-.32 1.49a.13.13 0 1 0 .26.05l.31-1.48a.13.13 0 0 0-.12-.16Zm2.85 0h-.03a.13.13 0 0 0-.1.16l.32 1.48a.13.13 0 1 0 .25-.05l-.31-1.48a.13.13 0 0 0-.13-.1Zm-1.42.15a.13.13 0 0 0-.14.14v1.51a.13.13 0 1 0 .27 0v-1.51a.13.13 0 0 0-.13-.14Zm-2.41.5c-.05 0-.1.03-.12.08l-.2.61a.13.13 0 1 0 .26.08l.2-.6a.13.13 0 0 0-.14-.18Zm4.81 0h-.05c-.07.02-.1.1-.08.17l.2.6c.02.07.09.1.16.09.07-.03.1-.1.08-.17l-.2-.6a.13.13 0 0 0-.1-.1Zm-3.23.33a.13.13 0 0 0-.12.12l-.06.63c-.01.07.04.14.11.15.08 0 .14-.05.15-.12l.06-.63a.13.13 0 0 0-.14-.15Zm1.64 0h-.02a.13.13 0 0 0-.12.15l.07.63c0 .07.07.12.14.12.07-.01.12-.08.12-.15l-.07-.63a.13.13 0 0 0-.12-.12Z" fill="#F4F2F3"/><g opacity=".41" filter="url(#a)"><path d="m18.32 6.75-7.18 4.17-4.54 7.15 6.64-4.92 5.08-6.4Z" fill="#000"/></g><path d="m13.2 13.08-2.06-2.16 7.3-4.9-5.25 7.06Z" fill="#FF5150"/><path d="m13.2 13.08-2.06-2.16L5.89 18l7.3-4.91Z" fill="#F1F1F1"/><path opacity=".24" d="m5.9 17.99 7.3-4.91L18.43 6 5.89 18Z" fill="#000"/><defs><filter id="a" x="5.92" y="6.08" width="13.06" height="12.66" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation=".34" result="effect1_foregroundBlur_5_917"/></filter></defs></svg> \ No newline at end of file diff --git a/client/data/browsers-logos/samsung.svg b/client/data/browsers-logos/samsung.svg new file mode 100644 index 00000000..3c3e6276 --- /dev/null +++ b/client/data/browsers-logos/samsung.svg @@ -0,0 +1 @@ +<svg fill="none" height="24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M21.82 9.02a8.52 8.52 0 0 0-2.06-4.78 8.53 8.53 0 0 0-4.78-2.06C13.21 1.95 12 2.01 12 2.01s-1.2-.06-2.98.17a8.5 8.5 0 0 0-4.77 2.06 8.5 8.5 0 0 0-2.07 4.78C1.95 10.79 2.01 12 2.01 12s-.06 1.2.17 2.98c.25 1.86.9 3.54 2.07 4.77a8.5 8.5 0 0 0 4.77 2.07c1.77.23 2.98.17 2.98.17s1.2.06 2.98-.17a8.48 8.48 0 0 0 4.77-2.07 8.47 8.47 0 0 0 2.06-4.77C22.05 13.2 22 12 22 12s.07-1.21-.17-2.98z" fill="#7882ff"/><g fill="#fff"><path d="M17.12 10.52a5.34 5.34 0 1 1-10.28 2.86 5.34 5.34 0 0 1 10.28-2.86z"/><path d="M17.12 10.52a5.32 5.32 0 0 1-.16 3.35"/><path d="M17.04 10.52c.2.74.25 1.5.14 2.22z"/></g><path d="M15.55 15.7c-1.35 0-3-.35-4.63-.97a13.57 13.57 0 0 1-4.11-2.35C5.17 10.92 5.27 9.8 5.48 9.25c.2-.54.88-1.45 3.07-1.45 1.35 0 3 .34 4.63.96 1.64.62 3.1 1.46 4.1 2.35 1.65 1.46 1.55 2.59 1.34 3.13-.2.54-.88 1.46-3.07 1.46zm-7-6.21c-1.01 0-1.44.25-1.49.36-.04.12.12.6.88 1.27.85.75 2.15 1.5 3.58 2.03 1.43.55 2.9.86 4.03.86 1.02 0 1.45-.25 1.5-.37.04-.1-.12-.59-.88-1.26-.84-.75-2.15-1.5-3.58-2.04-1.44-.54-2.9-.85-4.04-.85z" fill="#4d5cc1"/><path d="m7.06 9.87 9.98 3.79a5.34 5.34 0 0 0-9.98-3.79z" fill="#fff"/></svg> \ No newline at end of file diff --git a/client/data/regions.js b/client/data/regions.js new file mode 100644 index 00000000..0e881685 --- /dev/null +++ b/client/data/regions.js @@ -0,0 +1,31 @@ +// regions.json is created on `postinstall` step +import { continents, countryCodes } from './regions.json' + +export const DEFAULT_REGION = 'alt-ww' + +export const regionList = [...Object.keys(continents), ...countryCodes] + +export const regionGroups = { + continents: Object.entries(continents).map(([id, name]) => { + return { + id, + name + } + }), + countries: countryCodes.map(id => { + return { + id, + name: getCountryName(id) + } + }) +} + +function getCountryName(id) { + let isIntlDisplayNameSupports = + 'Intl' in window && 'DisplayNames' in window.Intl + + // Show country `id` instead country fullname for old browsers + return isIntlDisplayNameSupports + ? new Intl.DisplayNames('en-US', { type: 'region' }).of(id) + : id +} diff --git a/client/data/wikipedia-links.js b/client/data/wikipedia-links.js new file mode 100644 index 00000000..0b4572e7 --- /dev/null +++ b/client/data/wikipedia-links.js @@ -0,0 +1,30 @@ +const WIKIPEDIA_URL = 'https://en.wikipedia.org/wiki/' + +const WIKIPEDIA_LINKS = { + and_chr: 'Google_Chrome#Android', + and_ff: 'Firefox_for_Android', + and_qq: 'Tencent_QQ', + and_uc: 'UC_Browser', + android: 'List_of_features_in_Android#AndroidBrowser', + baidu: 'Baidu_Browser', + bb: 'BlackBerry#Software', + chrome: 'Google_Chrome', + edge: 'Microsoft_Edge', + firefox: 'Mozilla_Firefox', + ie: 'Internet_Explorer', + ie_mob: 'Internet_Explorer_Mobile', + ios_saf: 'Safari_(web_browser)', + kaios: 'KaiOS', + node: 'Node.js', + op_mini: 'Opera_Mini', + op_mob: 'Opera_Mobile', + opera: 'Opera_(web_browser)', + safari: 'Safari_(web_browser)', + samsung: 'Samsung_Internet' +} + +for (let browser in WIKIPEDIA_LINKS) { + WIKIPEDIA_LINKS[browser] = WIKIPEDIA_URL + WIKIPEDIA_LINKS[browser] +} + +export default WIKIPEDIA_LINKS diff --git a/client/index.css b/client/index.css new file mode 100644 index 00000000..637115ab --- /dev/null +++ b/client/index.css @@ -0,0 +1,2 @@ +@import "./view/base/index.css"; +@import "./view/base/colors.css"; diff --git a/client/index.html b/client/index.html new file mode 100644 index 00000000..31a04223 --- /dev/null +++ b/client/index.html @@ -0,0 +1,465 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <meta name="color-scheme" content="dark light"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Browserslist + + + + + + + + + + + +
+
+

+ + Browserslist +

+ + 10.5k + + + Count of twitter followers 4k + +
+

Shared browser and platform compatibility config for popular JavaScript tools, + including Autoprefixer, Babel, ESLint, PostCSS, and Webpack

+

+ Supported by + + Evil Martians and + + Cube +

+
+ +
+

Display compatible browsers

+ +
+ +

Write the Browserslist config here…
+ For example + defaults, + > 0.2% and not dead +

+

Press Enter + + + + + + to submit +

+

Query should be not empty

+

Unknown query

+

Loading...

+
+
+

Region coverage:

+ +
+ + +
+
+ +

add the Browserslist config to display compatible browsers

+
+ +
+
    +
    + +
    +

    + Browserslist version: +

    +

    + Data provided by caniuse-db +

    +
    +
    +
    +
    + +
    +

    How to get started

    +

    + defaults - if you're building a web application for + the global audience. +

    +

    + node 18 - if you're building a Node.js application, + e.g., for SSR. +

    +

    Autoprefixer, + Babel or any of the following libraries will find + target browsers automatically, when + you add the following to package.json: +

    +
    +      "browserslist": [
    +        "defaults",
    +        "not IE 11",
    +        "maintained node versions"
    +      ]
    +    
    +
    +

    Query Syntax

    +
    +

    Start with the default configuration

    + +

    You can pick a sound set of versions with the `defaults` query which is a + shortcut for + + > 0.5%, last 2 versions, Firefox ESR, not dead + . It matches recent versions of popular and supported browsers worldwide and includes + Firefox Extended Support Release which is updated roughly annually. +

    + +

    The defaults query was thoroughly designed by the + Browserslist community. + It helps promote best practices and avoid common pitfalls. +

    +
    + +
    +

    Select browser versions with certain usage

    + +

    You can pick versions that have more than or less than a certain size of the + audience worldwide, in a region, or in a country. You can also use the visitor + data of your own website.

    + +

    Examples:

    +
      +
    • > 5% - all versions with > 5% of the audience + worldwide. +
    • +
    • >= 5% in US - same as above but in the US. +
    • +
    • >= 5% in alt-AS - same as above but in + Asia. +
    • +
    + +

    Beware:

    +
      +
    • You may exclude the most recent versions of all browsers that have been just + released. Please always add last … + versions to include them back. +
    • +
    • You can exclude your global audience. Please be careful when narrowing the + audience to a region or a country. +
    • +
    • You may include dead versions. Please consider + adding not dead.
    • +
    + +
    +

    Advanced

    +
      +
    • > 5% in my stats - versions with > + 5% + of usage + within your own audience. +
    • +
    • > 5% in circle-ci stats - + versions with > 5% of usage within the audience data from shareable configuration, available as + github.com/circleci/circleci-docs/blob/master/browserslist-stats.json +
    • +
    • cover 99.5% - the smallest set of popular + versions with collective usage over 99.5% of the audience worldwide. +
    • +
    • cover 99.5% in CN - same as above + but in China. +
    • +
    • cover 99.5% in alt-EU - same + as above but in Europe. +
    • +
    +
    +
    + +
    +

    Select recent browser versions

    + +

    You can pick a few recent browser versions.

    + +

    Examples:

    + + +

    Beware:

    +
      +
    • ou might exclude older versions still used by a substantial audience. + Please always add > … to include them back. +
    • +
    • ou may pick dead browsers like Internet Explorer. + Always uselast … versions + with `not dead`. +
    • +
    + +
    +

    Advanced

    + +
    +
    + +
    +

    Select specific browser versions

    + +

    You can pick browser versions or a version range of your choice.

    + +

    Examples:

    + + +

    Beware:

    +
      +
    • Make sure that your audience uses specific versions (e.g., in a corporate + setting) or that your application is not built to work with specific + versions (e.g., it's a bleeding-edge demo project). Please consider using + last … versions + or > … to include more versions. +
    • +
    + +
    +

    Advanced

    +
      +
    • ie 6-8 - an inclusive range of Internet + Explorer + versions. +
    • +
    • Firefox ESR - the latest Firefox Extended + Support Release. +
    • +
    +
    +
    + +
    +

    Select specific Node.js versions

    + +

    You can pick Node.js versions or a version range of your choice. Useful if you + know for sure the runtime configuration of your server-side code.

    + +

    Examples:

    + + +
    +

    Advanced

    + +
    +
    + +
    +

    Select browser versions that support a certain feature

    + +

    You can pick browser versions that fully support features from the Can I Use database. See the + + caniuse-lite repository + + for the full list of features.

    + +

    Examples:

    + + +

    Beware:

    +
      +
    • This query rarely works well on its own. Please consider combining it with other queries. +
    • +
    +
    + +
    +

    Combine multiple queries into one

    + +

    You can combine versions matched by multiple queries with or or ,; you can + intersect them with and. You can also negate any query with not if it's + not the first one in your list.

    + +

    Examples:

    + + +

    Beware:

    +
      +
    • A query with `not` can't be the left-hand one in the list.
    • +
    • A query with not is always joined to the left-hand one with `and`, even if `or` or `,` are used.
    • +
    + +
    +

    Advanced

    + +
    +
    + +
    +

    Exclude unmaintained browser versions

    + +

    You can combine your queries with + not dead + to exclude dead browsers, i.e., + browsers without official support or updates for more than 24 months. + Right now these include IE 11, IE Mobile 11, BlackBerry 10, BlackBerry 7, + Samsung 4, Opera Mobile 12.1, and all versions of Baidu.

    + +

    Examples:

    + +
    + +

    Why Browserslist

    +

    Browserslist helps you keep the right balance between browser compatibility and bundle size. + You will cover wider audience and have smaller bundle size.

    + +

    What people say about Browserslist

    +
    +
    + +
    + Ross Kaffenberger avatar + Ross Kaffenberger + @rossta +
    +

    + Use browserslist!

    + + Leveraged through a module bundler like Webpack, you can specify the supported browser range in a + browserslist file to automagically help you avoid the dangers + @dhh describes.

    + + For Rails devs: it's integrated into Webpacker! +

    +
    + +
    + +
    + Gibbs Herbert avatar + Gibbs Herbert + @gha_dev +
    +

    + + browserslist is a package that allows you to define which browsers you are currently supporting. + #100DaysOfCode + #javascript +

    +
    +
    +
    + + + diff --git a/client/index.js b/client/index.js new file mode 100644 index 00000000..08eb58b5 --- /dev/null +++ b/client/index.js @@ -0,0 +1,2 @@ +import './view/Form/form.js' +import './view/QueryLink/queryLink.js' diff --git a/client/package.json b/client/package.json new file mode 100644 index 00000000..14946161 --- /dev/null +++ b/client/package.json @@ -0,0 +1,31 @@ +{ + "name": "browserl.ist-client", + "private": true, + "type": "module", + "scripts": { + "start": "vite build --watch", + "build": "vite build -m production", + "build:regions": "node ./scripts/build-regions.js", + "test": "pnpm build && size-limit", + "postinstall": "pnpm build:regions" + }, + "dependencies": { + "@csstools/postcss-oklab-function": "^1.1.1", + "autoprefixer": "^10.4.8", + "caniuse-lite": "^1.0.30001375", + "jstransformer-markdown-it": "^3.0.0", + "postcss": "^8.4.16", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.10", + "postcss-opacity-percentage": "^1.1.2", + "vite": "^3.0.7", + "vite-plugin-pug-transformer": "^1.0.2" + }, + "devDependencies": { + "@size-limit/file": "^8.0.1", + "size-limit": "^8.0.1" + }, + "engines": { + "node": ">=18" + } +} diff --git a/client/public/browserslist.webmanifest b/client/public/browserslist.webmanifest new file mode 100644 index 00000000..5ebb4004 --- /dev/null +++ b/client/public/browserslist.webmanifest @@ -0,0 +1,10 @@ +{ + "name": "Browserslist", + "start_url": "/", + "display": "standalone", + "background_color": "#f6f6f8", + "icons": [ + { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" }, + { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" } + ] +} diff --git a/client/public/favicon.ico b/client/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a62e3e65165897f70fb2211c5249560cf94ac656 GIT binary patch literal 4286 zcmc&&=~IG_p)EvFWeP1NsA_P+LcNg#|kvRC}?v<%WT|BOC#IHR15{9 z#3`Ls~i0Uw_S7Muj~I)HnQ0i)ae zllNTXvnqLq?{d$79XzA$FW}WPz@y&-W7+|?V0vVF<=)F{;5XO!jPLMW?&03sm81J6 zu)YhJcmi+*&enLub|3s5o}*U{8N6Zx{hV^RT7mnI%Nb_@o;94&E^DN=~+S)5; z_xW`eY}ekCNO*iYGRybDEAn|-t|Q~U-N<SuLi8sVa}@I=^Cfc@K-XP%gM<>V`C$l8X8blRfUBsS7XxrrN|Unvi6)58w7H9kQ~I+ zHIz1T*8Ysxak+>ZIYM-g4B7S(k_SslN*GGU=lm?_AP>a`3GQ-+c7;^x$}V8>Zz?MPyhQ(${{Z>WSid z!2aZb#&^~IX4IBY{ZIYN%gfQx(Sh9DT*Zav=4M>JbP4N9OEIRf2)5_uskqGAan#5G z#3Z&6f5Ls{2m@F2GVX5?hxEVC=R<96t->xSC_rUJ1$>JZBlV>>;XL$*%D?@36~Siw z5xZah*}Mlyb5|f;cpG=$BO&D=>hE+qQD0xLVxYUb8;h4LMJjXdcT)Qp|AIAeGXD@e zIRCQlvfjJu&JHX0GY0eX^U>ASh4$7~j4mvOOZt+bu!Hk2Yrv}D`Xl&R+Yd`mkr=3Z zq4|M!$ji&a>^XCg{(1$n#kbVOm_arOu0JGhzxpeCGPl;lYD-4qQ!|nHWMRm$NIS4k zVGT%IStj-5YgNze8*1Q`_}08faW*{2%)r*M=xD|Y-uBo!@{9Nnqvxj8%>G1)od zn;B3&LZC-t-b^Z9CjPI4xl@w|oaVYdT;r+l$P~L(*&AFu2D3JnP@|*4X+=AF)p*S1G@eL(ZZc?B&>> z_sc2NSKg)Ge3yH;ms}gl-x_PEE598XCxd-|8uA2e#NW&-`umePg?n%J`!iT3o}qh1 Z-7~Rn>iW%lRZD&u{`a^3e}Mn%`Zoqv!VCZa literal 0 HcmV?d00001 diff --git a/client/public/icon-192.png b/client/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..6829b358c8362fc773dacb1526e0bd9baed29d1d GIT binary patch literal 3203 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 literal 0 HcmV?d00001 diff --git a/client/public/icon-512.png b/client/public/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..07cc9124222fe488f35bdeaf0b68435f12667ffa GIT binary patch literal 7932 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�*wf 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�(~KTAij$XVE@)A|c@BTO#JvhYDe z$QkvcM3V#(%*(ym_Uep2R7n0?zcZpQ8yNNL1xidlm8}mv>9F)~+@CX31X*w^VK{=~ zUw<&t;9eRCS+Iu!pI^OlfV`g-P{{wyf@=+u!e7rwhA#d*nX?KKq9eAVNW03CGCRh|I1Rp(t;SucHXn-g`yUv|rw62ab6H_X$lz1#i~yXhErEz2r}9nvL>pn*1xG+eH&( zXm3E)fi`XE^4EyErXV*-E6ehwl-2yot^1vBA-;DSt()I=)&Ct0g>=*H?OJl9-r6_Z zCn$QihIaQrGqy1sw(`JrNbxSE6>X7Ww7})P9x~POaZv+!)R=A*DgU6oFLNP6dwVP0 zXH)Jaa!`=jWa&e0ROV_R#76G>bJTl6jJk-1a9}o{2LU;1Y;M19~Aq;WnMF%4O-&M{e z&y0WjFq6Mt_3J-qg@3^KZIL4Agfllv7A;_50{=sak(qB{;SBtt8nKm14swQG5&^}YDC+0gz;!hma6cl_d)%ta;C5h-S?9GK6IyDF^=9GMGO7Vh z;Frl-5T}d3`JeqYMQ?eEb0-((Jv7H%0>4Yx=_OPIBT*6bBZUZ33D=7iSh8t)u|J}E zTd0|bzcqUp59`9Ik;;)!yY0am1a6~Ds|I?O0nD&)#is-gqs5Jq9)vS{yNGKKNL{8@ zdfTfyy*|M9o%350o%f;~=*_wh=Tsi$?=!zZ{nxl}4IKQ#RVxv$9!#;arKVzC??QIe zXX?eq%JWcy>oVxO+OfEymoz@(L38$n^+F9E3wPQM>7K4Vm;g#-f@_?WFds9^b?Pj+ z+F1iM?M)ehH}9++57v8i zFO+tzyt;1sFV}~LaxXRE`|zejct*NtE}#H?#1IwbYknct8chuqqba||JDo^ z*tDfy6@g~9C3BeT-fhM=)^n8{@TdGhoCmmdTk3LiuqG}J5fD7XruwdDybI|yDa4RK2BZ&7G?I=;c?VL$ z1AuunYjc2ML`^X*_;}0E!vLaDVctgrJ>h`wsylcs4#<+?|8ENL z-w*)#KcSlcJ_H2+M-={U9Ppo2!2e*`|AvkKACI;HF|8H$-GnY^?>_)gkWrTYDQOb? Fe*o|RnPLC{ literal 0 HcmV?d00001 diff --git a/client/scripts/build-regions.js b/client/scripts/build-regions.js new file mode 100644 index 00000000..4e7e4bff --- /dev/null +++ b/client/scripts/build-regions.js @@ -0,0 +1,34 @@ +import { writeFileSync, readdirSync } from 'node:fs' + +const DATA_REGION_FILE = 'data/regions.json' +const REGIONS_LIST_PATH = './node_modules/caniuse-lite/data/regions' + +const regions = { + continents: { + 'alt-ww': 'Global', + 'alt-af': 'Africa', + 'alt-an': 'Antarctica', + 'alt-as': 'Asia', + 'alt-eu': 'Europe', + 'alt-na': 'North America', + 'alt-oc': 'Oceania', + 'alt-sa': 'South America' + }, + countryCodes: getCaniuseCountries() +} + +writeFileSync(DATA_REGION_FILE, JSON.stringify(regions)) +process.stdout.write( + `A file "client/${DATA_REGION_FILE}" with regions has been created\n` +) + +function getCaniuseCountries() { + let regionCodes = readdirSync(REGIONS_LIST_PATH).map(f => f.split('.js')[0]) + + return regionCodes + .filter(regionCode => { + let isContinentCode = regionCode.includes('alt-') + return !isContinentCode + }) + .sort((a, b) => b - a) +} diff --git a/client/view/Article/Article.css b/client/view/Article/Article.css new file mode 100644 index 00000000..87d63139 --- /dev/null +++ b/client/view/Article/Article.css @@ -0,0 +1,99 @@ +.Article { + box-sizing: border-box; + flex-basis: 0; + flex-grow: 1; + width: 50%; + padding: 24px 32px; +} + +.Article--stats { + position: fixed; + top: 0; + /* Hide scrollbar */ + right: calc(-1 * (100vw - 100%)); + display: flex; + flex-direction: column; + gap: 16px; + width: 50%; + height: 100vh; + max-height: 100vh; + overflow-y: scroll; + background-color: var(--bg-highlited); +} + +.Article--stats h2 { + margin: 0; + font-size: 22px; + line-height: 26px; +} + +.Article > *:last-child { + margin-bottom: 0; +} + +.Article > *:first-child { + margin-top: 0; +} + +.Article__h1 { + display: flex; + gap: 8px; + align-items: center; + margin: 0; +} + +.Article__h2 { + margin-top: 32px; + font-size: 22px; + line-height: 26px; +} + +.Article--intro__about { + margin: 16px 0; + font-size: 25px; + line-height: 32px; + letter-spacing: 0.01em; +} + +.Article--intro__supported { + font-size: 14px; + line-height: 20px; + color: var(--text-secondary); + letter-spacing: 0.02em; +} + +.Article--intro__supported img { + height: 16px; + vertical-align: middle; +} + +.Article--intro__header { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +@media (max-width: 740px) { + .Article { + width: initial; + } + + .Article--stats { + position: initial; + height: initial; + max-height: initial; + overflow: visible; + } +} + +@media (max-width: 460px) { + .Article { + padding: 16px 24px; + } + + .Article--intro__about { + font-size: 16px; + line-height: 22px; + } +} diff --git a/client/view/Article/browserlist_logo.svg b/client/view/Article/browserlist_logo.svg new file mode 100644 index 00000000..2ff11a55 --- /dev/null +++ b/client/view/Article/browserlist_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/view/Article/cube_logo.svg b/client/view/Article/cube_logo.svg new file mode 100644 index 00000000..7f2333e3 --- /dev/null +++ b/client/view/Article/cube_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/view/Article/evil_maritians_logo.svg b/client/view/Article/evil_maritians_logo.svg new file mode 100644 index 00000000..9a7e9f96 --- /dev/null +++ b/client/view/Article/evil_maritians_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/view/Badge/Badge.css b/client/view/Badge/Badge.css new file mode 100644 index 00000000..8bce01c8 --- /dev/null +++ b/client/view/Badge/Badge.css @@ -0,0 +1,19 @@ +.Badge { + display: flex; + gap: 4px; + align-items: center; + padding: 4px 6px; + font-size: 14px; + font-weight: 800; + color: inherit; + text-decoration: none; + background-color: var(--bg-highlited); + background-image: initial; + border-radius: 4px; +} + +@media (prefers-color-scheme: dark) { + .Badge__githubLogo { + filter: invert(1); + } +} diff --git a/client/view/Badge/github_logo.svg b/client/view/Badge/github_logo.svg new file mode 100644 index 00000000..f281286c --- /dev/null +++ b/client/view/Badge/github_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/view/Badge/twitter_logo.svg b/client/view/Badge/twitter_logo.svg new file mode 100644 index 00000000..1de65336 --- /dev/null +++ b/client/view/Badge/twitter_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/view/BrowserStats/BrowsersStat.css b/client/view/BrowserStats/BrowsersStat.css new file mode 100644 index 00000000..42e869cd --- /dev/null +++ b/client/view/BrowserStats/BrowsersStat.css @@ -0,0 +1,183 @@ +.BrowsersStat__regionCoverageBar { + display: flex; + gap: 1px; + justify-content: flex-start; + width: 100%; + padding: 0; + margin: 0 0 24px; + overflow: hidden; + counter-reset: alpha 0; + background-color: var(--main-bg); + border-radius: 6px; +} + +.BrowsersStat__regionCoverageBarItem { + box-sizing: border-box; + width: calc(var(--proportion, 0) * 1%); + overflow: hidden; + line-height: 32px; + text-overflow: ellipsis; + white-space: nowrap; + list-style: none; + counter-increment: alpha -1; + background-color: var(--accent-alternave); + opacity: var(--alpha, 0%); + + /* TODO types for this variables */ + --proportion: 0; + --alpha: 0; +} + +.BrowsersStat__regionCoverageBarItem--texted::after, +.BrowsersStat__regionCoverageBarItem--texted::before { + display: inline-block; + width: 8px; + content: ""; +} + +.BrowsersStat__tableContainer { + columns: 2; + column-fill: balance; +} + +@media (min-width: 740px) and (max-width: 1200px) { + .BrowsersStat__tableContainer { + columns: 1; + } +} + +@media (max-width: 600px) { + .BrowsersStat__tableContainer { + columns: 1; + } +} + +.BrowsersStat__placeholder { + box-sizing: border-box; + display: flex; + flex-direction: column; + gap: 32px; + align-items: center; + justify-content: center; + height: 100%; + color: var(--separator); +} + +@media (max-width: 740px) { + .BrowsersStat__placeholder { + gap: 16px; + padding: 32px 0; + } +} + +.BrowsersStat__placeholderImage { + width: 100%; + object-fit: cover; + max-width: 380px; +} + +@media (max-width: 740px) { + .BrowsersStat__placeholderImage { + width: initial; + max-width: 100%; + max-height: 300px; + } +} + +.BrowsersStat { + flex-grow: 1; +} + +.BrowsersStat__placeholderText { + width: 80%; + margin: 0; + text-align: center; +} + +.BrowsersStat__placeholder--hidden { + display: none; +} + +.BrowsersStat__stat { + display: flex; + flex-direction: column; + min-height: 100%; +} + +.BrowsersStat__stat--hidden { + display: none; +} + +.BrowsersStat__table { + display: block; + border-spacing: 8px 0; +} + +.BrowsersStat__table tr:first-child td:first-child { + width: 20px; +} + +.BrowsersStat__table tr:first-child td:nth-child(2) { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.BrowsersStat__table tr:first-child td:nth-child(3) { + width: 7ch; +} + +.BrowsersStat__td { + box-sizing: border-box; + height: 32px; + line-height: 32px; + vertical-align: top; + break-inside: avoid; +} + +.BrowsersStat__td:last-child { + width: 6ch; + text-align: left; +} + +.BrowsersStat__td--coverage { + --coverage: 20%; + + background-image: + linear-gradient( + to right, + var(--accent-alternave) var(--coverage), + transparent var(--coverage), + transparent + ); +} + +.BrowsersStat__table tbody { + display: inline-table; + width: 100%; + margin-bottom: -1px; + table-layout: fixed; + border-top: 1px solid var(--separator); +} + +.BrowsersStat__icon { + display: inline; + height: 20px; + line-height: 32px; + vertical-align: middle; +} + +.BrowsersStat__toolsVersions { + display: flex; + flex-wrap: wrap; + column-gap: 12px; + color: var(--text-secondary); + margin-top: auto; + padding-top: 24px; +} + +.BrowsersStat__toolsVersionsItem { + font-size: 14px; + line-height: 20px; + margin: 0; +} diff --git a/client/view/BrowserStats/browserStats.js b/client/view/BrowserStats/browserStats.js new file mode 100644 index 00000000..f442543b --- /dev/null +++ b/client/view/BrowserStats/browserStats.js @@ -0,0 +1,143 @@ +import wikipediaLinks from '../../data/wikipedia-links.js' +import * as browsersIcons from '../../data/browsers-logos.js' + +export function updateRegionCoverageCounter(coverage) { + let element = document.querySelector('[data-id=region_coverage_counter]') + element.innerHTML = coverage + '%' +} + +export function updateRegionCoverageBar(data) { + let element = document.querySelector('[data-id=region_coverage_bar]') + element.innerHTML = '' + data.forEach(item => { + let itemElem = document.createElement('li') + itemElem.classList.add('BrowsersStat__regionCoverageBarItem') + itemElem.style.setProperty('--proportion', item.coverage) + itemElem.style.setProperty('--alpha', 1 - 1 / item.coverage) + if (item.coverage > 10) { + itemElem.innerHTML = item.name + itemElem.classList.add('BrowsersStat__regionCoverageBarItem--texted') + } + element.appendChild(itemElem) + }) +} + +export function showStats() { + let statsPlaceholder = document.querySelector( + '[data-id=browsers_stats_placeholder]' + ) + let browserStats = document.querySelector('[data-id=browsers_stats]') + + statsPlaceholder.classList.add('BrowsersStat__placeholder--hidden') + browserStats.classList.remove('BrowsersStat__stat--hidden') +} + +function createCoverageCell(coverage) { + let coveragePercentageHtmlString = cov => cov + '%' + let coveragePercentageCssString = cov => { + let result = (Math.log(1 + cov) * 100) / Math.log(1 + 100) + if (result === 0) { + return '0' + } else if (result > 5) { + return result + '%' + } + return '1px' + } + + let coverageCell = document.createElement('td') + coverageCell.classList.add('BrowsersStat__td') + coverageCell.innerHTML = coveragePercentageHtmlString(coverage) + coverageCell.classList.add('BrowsersStat__td--coverage') + + coverageCell.style.setProperty( + '--coverage', + coveragePercentageCssString(coverage) + ) + return coverageCell +} + +function createVersionCell(version) { + let versionCell = document.createElement('td') + versionCell.classList.add('BrowsersStat__td') + versionCell.innerHTML = version + return versionCell +} + +export function updateBrowsersStats(data) { + let element = document.querySelector('[data-id=browsers_stats_results]') + + let table = document.createElement('table') + table.classList.add('BrowsersStat__table') + + data.forEach(({ id, name, versions: versionsInput }) => { + let versions = Object.entries(versionsInput) + .sort(([versionA], [versionB]) => versionB - versionA) + .map(([version, coverage]) => { + return { + version, + coverage + } + }) + + let tBody = document.createElement('tbody') + let tr = document.createElement('tr') + tr.classList.add('BrowsersStat_tr') + + let iconCell = document.createElement('td') + iconCell.classList.add('BrowsersStat__td') + iconCell.setAttribute('rowspan', versions.length) + tr.appendChild(iconCell) + + if (id in browsersIcons) { + let iconElem = document.createElement('img') + iconElem.classList.add('BrowsersStat__icon') + iconElem.src = browsersIcons[id] + iconElem.setAttribute('alt', '') + iconCell.appendChild(iconElem) + } + + let nameCell = document.createElement('td') + nameCell.classList.add('BrowsersStat__td') + let nameLink = document.createElement('a') + nameLink.classList.add('Link') + // TODO Need to take care of the case when we do not have link for some browser. Can I Use sometimes adds browsers + nameLink.href = wikipediaLinks[id] + nameLink.rel = 'noreferrer noopener' + nameLink.target = '_blank' + nameCell.setAttribute('rowspan', versions.length) + nameLink.innerHTML = name + nameCell.appendChild(nameLink) + tr.appendChild(nameCell) + + tr.appendChild(createVersionCell(versions[0].version)) + + tr.appendChild(createCoverageCell(versions[0].coverage)) + + tBody.appendChild(tr) + + versions.slice(1).forEach(item => { + let { version, coverage } = item + let versionTr = document.createElement('tr') + + versionTr.appendChild(createVersionCell(version)) + + versionTr.appendChild(createCoverageCell(coverage)) + + tBody.appendChild(versionTr) + }) + table.appendChild(tBody) + }) + + element.innerHTML = '' + element.appendChild(table) +} + +export function updateToolsVersions({ browserslist, caniuse }) { + let canIUseElement = document.querySelector('[data-id=can_i_use_version]') + canIUseElement.innerHTML = caniuse + + let browsersListElement = document.querySelector( + '[data-id=browsers_list_version]' + ) + browsersListElement.innerHTML = browserslist +} diff --git a/client/view/BrowserStats/hedgehog.svg b/client/view/BrowserStats/hedgehog.svg new file mode 100644 index 00000000..04c1bcec --- /dev/null +++ b/client/view/BrowserStats/hedgehog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/view/DocSection/DocSection.css b/client/view/DocSection/DocSection.css new file mode 100644 index 00000000..b3840e35 --- /dev/null +++ b/client/view/DocSection/DocSection.css @@ -0,0 +1,61 @@ +.DocSection { + padding: 16px; + background-color: var(--bg-highlited); + border-radius: 8px; +} + +.DocSection + .DocSection { + margin-top: 24px; +} + +.DocSection__header { + margin: 0; + font-size: 18px; + font-weight: 600; + line-height: 24px; +} + +.DocSection p { + font-size: 16px; + line-height: 22px; +} + +.DocSection__subHeader { + margin-top: 24px; + margin-bottom: 10px; + font-size: 12px; + font-weight: 800; + line-height: 16px; + text-transform: uppercase; +} + +summary .DocSection__subHeader { + display: inline-block; + margin-bottom: 0; +} + +.DocSection details summary { + width: fit-content; + cursor: pointer; +} + +.DocSection details[open] summary { + margin-bottom: 8px; +} + +.DocSection__list { + padding: 0; + margin: 0; +} + +.DocSection__list li { + margin: 0; + font-size: 16px; + font-weight: 400; + line-height: 22px; + list-style: none; +} + +.DocSection__list li + li { + margin-top: 10px; +} diff --git a/client/view/Form/Form.css b/client/view/Form/Form.css new file mode 100644 index 00000000..bbd0d90d --- /dev/null +++ b/client/view/Form/Form.css @@ -0,0 +1,163 @@ +.Form { + display: flex; + flex-direction: column; + gap: 24px; +} + +.Form__queryTextAreaContainer { + position: relative; +} + +.Form__queryTextArea { + box-sizing: border-box; + width: 100%; + padding: 12px; + font-family: monospace, monospace; + font-size: inherit; + color: inherit; + background-color: var(--main-bg); + border: none; + border-radius: 8px; +} + +.Form__queryTextArea::placeholder { + opacity: 0%; +} + +.Form__queryTextArea:focus-visible { + outline-color: var(--accent); +} + +.Form__hint, +.Form__loader { + position: absolute; + bottom: 16px; + left: 16px; + max-width: calc(100% - 12px * 2); + margin: 0; + font-size: 14px; + font-weight: 500; + line-height: 1; + color: var(--text-secondary); + overflow-wrap: break-word; + pointer-events: none; + background-color: var(--main-bg); + opacity: 0%; + transition: opacity 0.2s linear; +} + +.Form__hint--hidden { + opacity: 0%; +} + +.Form__enterIcon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + margin: calc((20px - 1em) / -2) 0; + vertical-align: middle; + background-color: var(--bg-highlited); + border-radius: 2px; +} + +.Form__interactivePlaceholder { + position: absolute; + top: 12px; + left: 12px; + margin: 0; + font-family: monospace, monospace; + color: var(--text-secondary); + pointer-events: none; + opacity: 0%; +} + +.Form__hint--required { + color: var(--warning); +} + +.Form__hint--error { + color: var(--error); +} + +.Form__hint--error a { + color: inherit; + pointer-events: initial; +} + +.Form.Form--serverError:not(.Form--loaded) .Form__hint--error { + opacity: 100%; +} + +.Form__queryTextArea:placeholder-shown ~ .Form__interactivePlaceholder { + pointer-events: none; + opacity: 100%; +} + +.Form__queryTextArea:placeholder-shown ~ .Form__interactivePlaceholder a { + pointer-events: initial; +} + +.Form:not(.Form--serverError):not(.Form--loaded) .Form__queryTextArea:invalid:focus-visible ~ .Form__hint--required { + opacity: 100%; +} + +.Form:not(.Form--serverError):not(.Form--justSend):not(.Form--loaded) .Form__queryTextArea:focus-visible:valid ~ .Form__hint--progress { + opacity: 100%; +} + +.Form--loaded .Form__loader { + opacity: 100%; +} + +.Form__loader::after { + display: inline-block; + width: 1em; + height: 1em; + margin-left: 1ch; + content: ""; + background-image: + radial-gradient(var(--main-bg) 60%, transparent 60%), + conic-gradient(transparent, currentcolor); + border-radius: 50%; + animation-name: form-loader; + animation-duration: 1s; + animation-timing-function: cubic-bezier(0.5, 0.2, 0.5, 0.8); + animation-iteration-count: infinite; +} + +@keyframes form-loader { + 0% { + transform: rotate(0); + } + + 100% { + transform: rotate(360deg); + } +} + +.Form__coverage { + display: flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; + justify-content: space-between; +} + +.Form__coverage--hidden { + display: none; +} + +.Form__coverageSelect { + width: fit-content; + max-width: 200px; + padding: 2px 8px; + font-size: 16px; + line-height: 20px; + color: var(--accent); + background-color: var(--main-bg); + background-image: none; + border: none; + border-radius: 4px; +} diff --git a/client/view/Form/form.js b/client/view/Form/form.js new file mode 100644 index 00000000..eec7012a --- /dev/null +++ b/client/view/Form/form.js @@ -0,0 +1,196 @@ +import { DEFAULT_REGION, regionList, regionGroups } from '../../data/regions.js' +import { + updateBrowsersStats, + updateRegionCoverageCounter, + updateRegionCoverageBar, + updateToolsVersions, + showStats +} from '../BrowserStats/browserStats.js' + +const form = document.querySelector('[data-id=query_form]') +const textarea = document.querySelector('[data-id=query_text_area]') +const regionCoverage = document.querySelector('[data-id=region_coverage]') +const regionCoverageSelect = document.querySelector( + '[data-id=region_coverage_select]' +) +const errorMessage = document.querySelector('[data-id=error_message]') + +form.addEventListener('submit', handleFormSubmit) + +textarea.addEventListener('keypress', e => { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault() + submitForm() + } +}) + +renderRegionSelectOptions() + +regionCoverageSelect.addEventListener('change', () => { + submitForm() +}) + +submitFormWithUrlParams() + +window.addEventListener('popstate', () => { + submitFormWithUrlParams() +}) + +function handleFormSubmit(e) { + e.preventDefault() + if (!form.checkValidity()) { + return + } + + let formData = new FormData(form) + let query = formData.get('query') + let region = formData.get('region') + + changeUrl(query, region) + + e.preventDefault() + form.classList.add('Form--justSend') + textarea.addEventListener( + 'input', + () => { + form.classList.remove('Form--justSend') + }, + { + once: true + } + ) + updateStatsView(query, region) +} + +export function setFormValues({ query, region }) { + if (query) { + textarea.value = query + form.classList.remove('Form--serverError') + } + + let isRegionExists = regionList.includes(region) + + if (region && isRegionExists) { + regionCoverageSelect.value = region + } +} + +export function submitForm() { + form.dispatchEvent(new Event('submit', { cancelable: true })) +} + +function showCoverageControls() { + regionCoverage.classList.remove('Form__coverage--hidden') +} + +function renderRegionSelectOptions() { + let renderOptgroups = ({ continents, countries }) => { + let renderOption = (id, name) => { + let option = document.createElement('option') + option.value = id + option.innerHTML = name + return option + } + + let renderOptgroup = (groupName, regionsGroup) => { + let optgroup = document.createElement('optgroup') + optgroup.label = groupName + for (let { id, name } of regionsGroup) { + let option = renderOption(id, name) + optgroup.appendChild(option) + } + return optgroup + } + + return { + continentsOptgroup: renderOptgroup('Continents', continents), + countriesOptgroup: renderOptgroup('Countries', countries) + } + } + + let { continentsOptgroup, countriesOptgroup } = renderOptgroups(regionGroups) + regionCoverageSelect.appendChild(continentsOptgroup) + regionCoverageSelect.appendChild(countriesOptgroup) +} + +function renderError(message) { + errorMessage.innerHTML = message + form.classList.add('Form--serverError') + textarea.addEventListener( + 'input', + () => { + form.classList.remove('Form--serverError') + }, + { + once: true + } + ) +} + +async function updateStatsView(query, region) { + let response + try { + form.classList.add('Form--loaded') + let urlParams = new URLSearchParams({ q: query, region }) + response = await fetch(`/api/browsers?${urlParams}`) + } catch (error) { + renderError(`Network error. Check that you are online.`) + form.classList.remove('Form--loaded') + return false + } + + let data = await response.json() + + form.classList.remove('Form--loaded') + + if (!response.ok) { + if (data.message === 'Custom usage statistics was not provided') { + renderError(`This website does not support in my stats queries yet. Run Browserslist + locally.`) + return false + } + if (response.status === 500) { + renderError(`Server error. +Report an issue to our repository.`) + return false + } + renderError(data.message) + return false + } + + let { browsers, coverage, versions } = data + + showCoverageControls() + showStats() + updateBrowsersStats(browsers) + updateRegionCoverageCounter(coverage) + updateRegionCoverageBar(browsers) + updateToolsVersions(versions) + + return true +} + +function changeUrl(query, region) { + let urlParams = new URLSearchParams() + if (query) { + urlParams.set('q', query) + } + + if (region && region !== DEFAULT_REGION) { + urlParams.set('region', region) + } + + window.history.pushState({}, query, '?' + urlParams) +} + +function submitFormWithUrlParams() { + let urlParams = new URLSearchParams(window.location.search) + + let query = urlParams.get('q') + let region = urlParams.get('region') + + if (!query) return + + setFormValues({ query, region }) + submitForm() +} diff --git a/client/view/Link/Link.css b/client/view/Link/Link.css new file mode 100644 index 00000000..d55dbfc5 --- /dev/null +++ b/client/view/Link/Link.css @@ -0,0 +1,17 @@ +.Link { + padding-bottom: 0.2em; + margin-bottom: -0.2em; + color: var(--text-primary); + text-decoration-line: underline; + text-decoration-style: solid; + text-decoration-color: var(--text-secondary); + text-underline-offset: 2px; + transition: text-decoration-color 0.3s; +} + +@media (hover) { + .Link:hover { + text-decoration-color: currentcolor; + background-position: 0 1.1em; + } +} diff --git a/client/view/Pre/Pre.css b/client/view/Pre/Pre.css new file mode 100644 index 00000000..4c186940 --- /dev/null +++ b/client/view/Pre/Pre.css @@ -0,0 +1,17 @@ +.Pre { + display: flex; + flex-direction: column; + padding: 12px; + font-size: inherit; + color: var(--accent); + background-color: var(--text-highlited); + border-radius: 8px; + transition: background-color 0.3s; +} + +.Pre code { + overflow: hidden; + font-size: inherit; + white-space: pre-wrap; + background-color: initial; +} diff --git a/client/view/QueryLink/QueryLink.css b/client/view/QueryLink/QueryLink.css new file mode 100644 index 00000000..0583bffb --- /dev/null +++ b/client/view/QueryLink/QueryLink.css @@ -0,0 +1,19 @@ +.QueryLink { + cursor: pointer; +} + +@media (hover) { + .QueryLink:hover > code, + .QueryLink:hover > pre { + background-color: var(--text-highlited-hover); + } +} + +.QueryLink > code { + padding: 0 4px; + line-height: 20px; + color: var(--accent); + background-color: var(--text-highlited); + border-radius: 4px; + transition: background-color 0.3s; +} diff --git a/client/view/QueryLink/queryLink.js b/client/view/QueryLink/queryLink.js new file mode 100644 index 00000000..bcaf056f --- /dev/null +++ b/client/view/QueryLink/queryLink.js @@ -0,0 +1,21 @@ +import { setFormValues, submitForm } from '../Form/form.js' + +const queryContainer = document.querySelector('[data-id=query_container]') +const links = document.querySelectorAll('a.QueryLink') + +links.forEach(item => { + item.addEventListener('click', e => { + e.preventDefault() + let queryAttr = item.getAttribute('data-query') + if (queryAttr) { + setFormValues({ query: queryAttr }) + } else { + setFormValues({ query: item.innerText.trim() }) + } + + submitForm() + + queryContainer.scrollTo({ top: 0 }) + queryContainer.scrollIntoView() + }) +}) diff --git a/client/view/Tweet/Tweet.css b/client/view/Tweet/Tweet.css new file mode 100644 index 00000000..ee8d61b4 --- /dev/null +++ b/client/view/Tweet/Tweet.css @@ -0,0 +1,86 @@ +.Tweet { + position: relative; + z-index: 1; + height: fit-content; + padding: 16px; + overflow: hidden; + pointer-events: none; + border: 1px solid var(--separator); + border-radius: 12px; +} + +.Tweet__link { + position: absolute; + inset: 0; + z-index: -1; + pointer-events: all; + transition: background-color 0.3s; +} + +@media (hover) { + .Tweet__link:hover { + background-color: var(--text-highlited); + } +} + +.Tweet__address { + position: relative; + display: grid; + grid-template-columns: 40px 1fr; + grid-auto-rows: 1fr 1fr; + column-gap: 10px; + margin-bottom: 10px; + font-style: normal; +} + +.Tweet__address::after { + position: absolute; + bottom: -3px; + left: 26px; + width: 16px; + height: 16px; + content: ""; + background-color: var(--twitter); + background-image: url(./twitter_white.svg); + background-repeat: no-repeat; + background-position: center; + border-radius: 50%; +} + +.Tweet__img { + grid-row: span 2; + width: 40px; + height: 40px; + border-radius: 50%; +} + +.Tweet__nickName { + color: var(--text-secondary); + text-decoration: none; +} + +.Tweet__name { + font-weight: 600; +} + +.Tweet__text { + margin: 0; +} + +.Tweet__text a { + color: var(--accent); + text-decoration: none; + pointer-events: initial; +} + +@media (hover) { + .Tweet__text a:hover { + text-decoration: underline; + } +} + +.Tweet__list { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 12px; +} diff --git a/client/view/Tweet/gha_dev.webp b/client/view/Tweet/gha_dev.webp new file mode 100644 index 0000000000000000000000000000000000000000..ca583c6659d5dc05d33272bc6fe7a0441b99317f GIT binary patch literal 938 zcmV;b16BM|Nk&GZ0{{S5MM6+kP&go#0{{T95CEM4DkuOb06vL2l}Du`q9HCj{$QXH z32XqJGK6-=yZM4wKgI26mB>JCvgd&PK=y6Co9IjW0oIp3%bed|NpRpkp2o3gfq^P^ zX8t(7oc0Xq5#<11QGYdCXu@eVxXJC5$VYx6?Sj`c#MH_xZJj7ncLZ}j&U zsWozDq;|kU)m;s#gqIwZBBn{kWfMu|@W7N3ExGIt6_LGd3O5QNtA4HB8$m>0>%?Q8 zg6~C@0Wsnj!SC8X>Zf(4BYtpVqd-R9&P?xvS<++jFDlvN0!hOsF-KYnql;zm%$NB$ zX^20r=O<5^{G4ZxB`lSW%_6iWIJx53HvY8g2p?#lWaoY%R~bfkH90!{-UE1)X7CZc zFE70WI1$e;6XrbKh1gZOmkp#9E*TIQ`_@g{@aUtd2B@EKX&USN=y(j}Wd%7ADscHq z=22bh{_7hZ%=JN*DnsL!iaZiue`S`v8lYJHVPw5GX|r3wZc+*c4vlM;Lq{Z#uXZB> zGVMP!9jF5v+^a@rzJnLpl^wB*rNRt-IKi4RaI@`=7lK3KLPCZ&YUxFM+SIXBA4QEC zE6_#tNr~lXwiZAa7u)>JzZNs69`v^jygPTOZ^uR@URXEP{NtXuWwfp+C1(u^f%}cp-*em`pW_OpR>mIp3DDVeA;i$ z84gw#8Z}l}mq* z(+?k6mDpxrsFO|;pRv?p(7DX!q~iNv;IdK82&|seGsBd^x8USU@ir4|-% z<$Aai6kzWuvF>zM6G=;2W>(~Jjg>Er+`O;E=PXihWCw*0k4|Um9;b+}^IH1ujOF7d z@70k<{fjF!JNy#Q7DMtth%Sxb1nN$>-Cps?JL}p9bVY8CxqN3a{y)JS=#5d^QMZjo*&ssb2kwM7-+{M zw-YhQp>Npxb7yjgJ^)Zoo1KJW+@CQp_pZuT2<1fxAqpqg`lbkK>rFwBJH%Obt8A;X s60~TtmvdNL>XE7-?yPhVipC#TGC%Ii@+AAy_Wz#|o?pF literal 0 HcmV?d00001 diff --git a/client/view/Tweet/twitter_white.svg b/client/view/Tweet/twitter_white.svg new file mode 100644 index 00000000..8ec83749 --- /dev/null +++ b/client/view/Tweet/twitter_white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/view/base/apple-touch-icon.png b/client/view/base/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2c5e28bd220d26cd8023f4f6026d4b0dd32c6e GIT binary patch literal 3003 zcmV;s3q3|J6AE*E;{!Iseu<|I#`C);a&yIser;|JFJG)j0pwIseo;|JFJG*Es*zI{(x; z|J6AE)H(mtIser)|J6DF)j9vwI#x_1fp03u$H&IT#$;C}$EY%ZZYjs7GOLg;R#sLz zIyx*YERTSkkuPLe zCb^t2xw*OHzBZ0}EAjF1s;a90|NoATj@7d>fPjF8q(~$eGZQsl&Osz{Q-ui`Pv<~^g{k~~ zIht?|j$o7%GJp>CXP?}p593KjZFTIn(erMk;0%>~Kzau*k#a^>GMb&?n2;}2IEJ_# zhB7*vv*tMOp&N#S%EysMqBx_q-ZeOg=`moT$u*ddfXXt}5w+) zP#jROR_V{b4m)xO3w@*1y+24eUZZh#wDDDPuc|%=(Xoq#9_7<18N=yeW1|O%hS@j` zJlf=%FI1tWI4y6$IMTxVx&-jp8BH&ok?45cG2Sx;!3NE8rW5Q2_)SFi-VONeTD5Ud zh4lgmh%#NC_G7h0h`j@Gcd2yf)}9jxbPD*mWE77OJ=zMfP5__(5<_^q%vdY$`act6 z_^e`Q$AkkYdZQJ1Ld@ZQfpAK);rL8OtbM}3WU^O;!+}HkfEq2v@WQR=r)uX z#{DGOLH-3aJuCqJ)hGuL!h+O3X@B&;a>#_N(=si(f@w1%z0+-1>|pSJ2j_OX?7QLC zImQ_fgwYsT+Ipo|`*sH?&f9*N^^{nlu`i>xqtCeA0TvF>B*Y61T{6Nt(ZgRIkY!4s z&?s#J8>C5a3vGC8*T@A8kY`GGch?}A*=la$%`+M31~Lx}Dw@l@)@r>c7szLt?$xmEvqS2&hyls4Mz}|a*WKOIw-l?_z3ye}nqP)@ zU1ce) z!#2^%e+JU8ufBo$g?^QgTI+(RcyB^B)Cn`=1i9+budcV$TZ340iI{S0Za$>Jxo5 zhm(b|fvUe6Idj?f-OG6#@K@rB(Vai)HEW|C1$l}`MZNXwKY!w`Lz@ZMR+!d)zJG%U-?16Nz;e00~#Z=(z2Y_Y6a z;IZ!#P57$5*rqM(Z@^)f=;ImaAxj-H8$9N6HCd^b;jbX#K0$-acxj1 zZ(TBLYzfjFXjzA>mDoEr_IiaPQ_Lrr+HNc_4k5p4Es6cK8bH$^AmT%g{ISi z`A7kaO8njqcd{T^;9xiWIK^M^Ckyf|jG<%474SX?EJIw1T!P6vW0S_E$Y*_$&N#xQ zO1&S?sIf&hct{br#4>4C9ocvL^8AmQFpp;o?4)H%?U}FguE2GcRH+Y4XSr*OT(U@& zI>6a7p(vw()htXc3M3xvI*=97(AVgB~qhF4RQT_xZ(kB}& zi-tqv%4~oD4=fHVV;{A5z4db2?zpk$BX9920Zm}rl>xRLnE1pD8^%(wxMTr|Y5(La zgo6%9Tt@`9LO6IG#ORYOzG&x=>mY_7WcdO-mMsB(07U=GdG3b17uE~)`zW~&MIKU0itXADdpgY@4RqK6 z-zN#@jHTJSfni1}R5&PWTftd5*ES*R4)23Fz3}HLpDE^9Z5vXy`ESVm0ib^kzTeGDdjkkng<>wE@$zJUJoCJ4PG*utG@cx#;*y~Fo#gU2*6ksa&My5p#& \ No newline at end of file diff --git a/client/view/base/index.css b/client/view/base/index.css new file mode 100644 index 00000000..61f8ce9a --- /dev/null +++ b/client/view/base/index.css @@ -0,0 +1,48 @@ +@import "../BrowserStats/BrowsersStat.css"; +@import "../Article/Article.css"; +@import "../Form/Form.css"; +@import "../Badge/Badge.css"; +@import "../QueryLink/QueryLink.css"; +@import "../DocSection/DocSection.css"; +@import "../Link/Link.css"; +@import "../Pre/Pre.css"; +@import "../Tweet/Tweet.css"; + +@media (prefers-reduced-motion: reduce) { + * { + transition: none !important; + } +} + +body { + margin: 0; + font-family: + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + Oxygen, + Ubuntu, + Cantarell, + "Fira Sans", + "Droid Sans", + "Helvetica Neue", + sans-serif; + color: var(--text-primary); + overflow-wrap: break-word; + background-color: var(--main-bg); + accent-color: var(--accent); +} + +p { + font-size: 16px; + line-height: 22px; + letter-spacing: 0.01em; +} + +code { + /* stylelint-disable-next-line font-family-no-duplicate-names */ + font-family: monospace, monospace; + + /* explain: https://github.com/necolas/normalize.css/issues/519#issuecomment-197131966 */ +} diff --git a/client/vite.config.js b/client/vite.config.js new file mode 100644 index 00000000..f128a1f2 --- /dev/null +++ b/client/vite.config.js @@ -0,0 +1,10 @@ +import { defineConfig } from 'vite' +import vitePluginPug from 'vite-plugin-pug-transformer' + +export default defineConfig({ + build: { + assetsDir: '.', + assetsInlineLimit: 0 + }, + plugins: [vitePluginPug()] +}) diff --git a/index.html b/index.html deleted file mode 100644 index 4eeb989c..00000000 --- a/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - Help Browserslist - - - -

    -

    Browserslist website is down.
    Help us make a new and better website.

    -

    Short-term solution

    -

    Use CLI tool instead of the website
    npx browserslist "last 1 version, >1%"

    -

    Long-term solution

    - -

    Why Browserslist is important for JS ecosystem?

    -

    Browserslist is used by many popular tools, including Autoprefixer, Babel, Gatsby, Next.js, Create React App, and other 600+ projects. It has 75+ million downloads per month.

    -

    It helps to keep browsers diversity by moving the focus from few well-know Western browsers (like chrome: 60) to general queries (like 1 last version, >1% or supports es6-module and >0.5% in my stats).

    -

    You can learn more about philosophy under Browserslist in our interview with Google’s The State of the Web.

    -
    - xkcd about dependencies problem in modern open source -
    xkcd: Dependency
    -
    -

    How will we use your donations?

    -
      -
    1. We will pay to the designer and make a redesign for the website.
    2. -
    3. We will refactor the website to run it in a new hosting.
    4. -
    5. In the new website design, we will Browserslist config best practices to promote browser diversity.
    6. -
    7. We will refactor the Browserslist data updates system to avoid the security issue similar to the recent ESLint issue.
    8. -
    9. Add Browserslist config linter.
    10. -
    -
    - - \ No newline at end of file diff --git a/nano-staged.json b/nano-staged.json new file mode 100644 index 00000000..fb6147b0 --- /dev/null +++ b/nano-staged.json @@ -0,0 +1,5 @@ +{ + "*.css": "stylelint --fix", + "*.js": "prettier --write", + "*.svg": "svgo" +} diff --git a/package.json b/package.json index 9443f60f..266d8569 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,42 @@ { - "name": "browserlist", - "version": "0.0.0", + "name": "browserl.ist", "private": true, + "homepage": "https://browsersl.ist/", + "type": "module", + "license": "MIT", + "engines": { + "node": ">=18" + }, "scripts": { - "build": "", - "lint": "eslint bin/www .", - "deploy": "script/deploy", - "start": "node ./bin/www", - "test": "npm run lint" + "start": "pnpm -r start", + "build": "pnpm -r build", + "lint": "eslint . && stylelint **/*.css", + "test": "pnpm audit --prod && pnpm lint && pnpm -r test" }, "dependencies": { - "body-parser": "^1.19.0", - "browserslist": "4.8.3", - "caniuse-db": "1.0.30001019", - "cookie-parser": "^1.4.4", - "debug": "^4.1.1", - "express": "^4.17.1", - "morgan": "^1.9.1", - "pug": "^2.0.4" + "ssdeploy": "^0.9.1" }, "devDependencies": { - "eslint": "^6.6.0", - "eslint-plugin-github": "^3.2.1" + "@logux/eslint-config": "^47.2.0", + "@logux/stylelint-config": "^0.10.1", + "@typescript-eslint/eslint-plugin": "^5.33.0", + "@typescript-eslint/parser": "^5.33.0", + "eslint": "^8.21.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.2.4", + "eslint-plugin-prefer-let": "^3.0.1", + "eslint-plugin-promise": "^6.0.0", + "nano-staged": "^0.8.0", + "prettier": "^2.7.1", + "simple-git-hooks": "^2.8.0", + "stylelint": "^14.10.0", + "svgo": "^2.8.0", + "typescript": "^4.7.4" + }, + "pnpm": { + "overrides": { + "markdown-it@<12.3.2": ">=12.3.2" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..0c7d81ab --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3208 @@ +lockfileVersion: 5.4 + +overrides: + markdown-it@<12.3.2: '>=12.3.2' + +importers: + + .: + specifiers: + '@logux/eslint-config': ^47.2.0 + '@logux/stylelint-config': ^0.10.1 + '@typescript-eslint/eslint-plugin': ^5.33.0 + '@typescript-eslint/parser': ^5.33.0 + eslint: ^8.21.0 + eslint-config-standard: ^17.0.0 + eslint-plugin-import: ^2.26.0 + eslint-plugin-n: ^15.2.4 + eslint-plugin-prefer-let: ^3.0.1 + eslint-plugin-promise: ^6.0.0 + nano-staged: ^0.8.0 + prettier: ^2.7.1 + simple-git-hooks: ^2.8.0 + ssdeploy: ^0.9.1 + stylelint: ^14.10.0 + svgo: ^2.8.0 + typescript: ^4.7.4 + dependencies: + ssdeploy: 0.9.1 + devDependencies: + '@logux/eslint-config': 47.2.0_7hz3xvmviof7onfgk6hpedqcom + '@logux/stylelint-config': 0.10.1_stylelint@14.10.0 + '@typescript-eslint/eslint-plugin': 5.33.0_njno5y7ry2l2lcmiu4tywxkwnq + '@typescript-eslint/parser': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq + eslint: 8.21.0 + eslint-config-standard: 17.0.0_dfwa53o44x4e5xhsfv5mvfhk5a + eslint-plugin-import: 2.26.0_qfqnhzzittf54udqwes54xx65q + eslint-plugin-n: 15.2.4_eslint@8.21.0 + eslint-plugin-prefer-let: 3.0.1 + eslint-plugin-promise: 6.0.0_eslint@8.21.0 + nano-staged: 0.8.0 + prettier: 2.7.1 + simple-git-hooks: 2.8.0 + stylelint: 14.10.0 + svgo: 2.8.0 + typescript: 4.7.4 + + client: + specifiers: + '@csstools/postcss-oklab-function': ^1.1.1 + '@size-limit/file': ^8.0.1 + autoprefixer: ^10.4.8 + caniuse-lite: ^1.0.30001375 + jstransformer-markdown-it: ^3.0.0 + postcss: ^8.4.16 + postcss-media-minmax: ^5.0.0 + postcss-nesting: ^10.1.10 + postcss-opacity-percentage: ^1.1.2 + size-limit: ^8.0.1 + vite: ^3.0.7 + vite-plugin-pug-transformer: ^1.0.2 + dependencies: + '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.16 + autoprefixer: 10.4.8_postcss@8.4.16 + caniuse-lite: 1.0.30001375 + jstransformer-markdown-it: 3.0.0 + postcss: 8.4.16 + postcss-media-minmax: 5.0.0_postcss@8.4.16 + postcss-nesting: 10.1.10_postcss@8.4.16 + postcss-opacity-percentage: 1.1.2 + vite: 3.0.7 + vite-plugin-pug-transformer: 1.0.2_vite@3.0.7 + devDependencies: + '@size-limit/file': 8.0.1_size-limit@8.0.1 + size-limit: 8.0.1 + + server: + specifiers: + browserslist: ^4.21.3 + caniuse-lite: ^1.0.30001375 + dependencies: + browserslist: 4.21.3 + caniuse-lite: 1.0.30001375 + +packages: + + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/helper-string-parser/7.18.10: + resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-identifier/7.18.6: + resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} + engines: {node: '>=6.9.0'} + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.18.6 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.18.11: + resolution: {integrity: sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.10 + dev: false + + /@babel/types/7.18.10: + resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.18.6 + to-fast-properties: 2.0.0 + dev: false + + /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.16: + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.16: + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: false + + /@csstools/selector-specificity/2.0.2_pnx64jze6bptzcedy5bidi3zdi: + resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + postcss-selector-parser: ^6.0.10 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@eslint/eslintrc/1.3.0: + resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.3.3 + globals: 13.17.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array/0.10.4: + resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/gitignore-to-minimatch/1.0.2: + resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@logux/eslint-config/47.2.0_7hz3xvmviof7onfgk6hpedqcom: + resolution: {integrity: sha512-nNPPkw+kfA2bLyhkxaqGzd3MWSN4S2dUf69xo2syskBd5ZfFk2WT9ssO+yDDUd26yNgN3AmweKztEwyUim9wOQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + eslint: ^8.14.0 + eslint-config-standard: ^17.0.0 + eslint-plugin-import: ^2.26.0 + eslint-plugin-n: ^15.1.0 + eslint-plugin-prefer-let: ^3.0.1 + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.21.0 + eslint-config-standard: 17.0.0_dfwa53o44x4e5xhsfv5mvfhk5a + eslint-plugin-import: 2.26.0_qfqnhzzittf54udqwes54xx65q + eslint-plugin-n: 15.2.4_eslint@8.21.0 + eslint-plugin-prefer-let: 3.0.1 + eslint-plugin-promise: 6.0.0_eslint@8.21.0 + dev: true + + /@logux/stylelint-config/0.10.1_stylelint@14.10.0: + resolution: {integrity: sha512-LdqGWEO/IisgQMhtu2t18ygmFP1c38CD4d2HmFIonTvNPKJAAyGcYexOdi8MkUxdGC3oXR4dwJII3z4apiEhNQ==} + peerDependencies: + stylelint: ^14.2.0 + dependencies: + stylelint: 14.10.0 + stylelint-config-recess-order: 3.0.0_stylelint@14.10.0 + stylelint-config-standard: 25.0.0_stylelint@14.10.0 + stylelint-order: 5.0.0_stylelint@14.10.0 + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + dev: true + + /@size-limit/file/8.0.1_size-limit@8.0.1: + resolution: {integrity: sha512-kwgc5UJQIz5qbRow3atSiW2K7vEIIw4DelT4WLn09cOwcJgWs82Imgz2UqVivHJmCisn/ltPjT4qmxaDfjFflw==} + engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} + peerDependencies: + size-limit: 8.0.1 + dependencies: + semver: 7.3.7 + size-limit: 8.0.1 + dev: true + + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + + /@types/json5/0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/minimist/1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true + + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: true + + /@typescript-eslint/eslint-plugin/5.33.0_njno5y7ry2l2lcmiu4tywxkwnq: + resolution: {integrity: sha512-jHvZNSW2WZ31OPJ3enhLrEKvAZNyAFWZ6rx9tUwaessTc4sx9KmgMNhVcqVAl1ETnT5rU5fpXTLmY9YvC1DCNg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq + '@typescript-eslint/scope-manager': 5.33.0 + '@typescript-eslint/type-utils': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq + '@typescript-eslint/utils': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq + debug: 4.3.4 + eslint: 8.21.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.33.0_qugx7qdu5zevzvxaiqyxfiwquq: + resolution: {integrity: sha512-cgM5cJrWmrDV2KpvlcSkelTBASAs1mgqq+IUGKJvFxWrapHpaRy5EXPQz9YaKF3nZ8KY18ILTiVpUtbIac86/w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.33.0 + '@typescript-eslint/types': 5.33.0 + '@typescript-eslint/typescript-estree': 5.33.0_typescript@4.7.4 + debug: 4.3.4 + eslint: 8.21.0 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.33.0: + resolution: {integrity: sha512-/Jta8yMNpXYpRDl8EwF/M8It2A9sFJTubDo0ATZefGXmOqlaBffEw0ZbkbQ7TNDK6q55NPHFshGBPAZvZkE8Pw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.33.0 + '@typescript-eslint/visitor-keys': 5.33.0 + dev: true + + /@typescript-eslint/type-utils/5.33.0_qugx7qdu5zevzvxaiqyxfiwquq: + resolution: {integrity: sha512-2zB8uEn7hEH2pBeyk3NpzX1p3lF9dKrEbnXq1F7YkpZ6hlyqb2yZujqgRGqXgRBTHWIUG3NGx/WeZk224UKlIA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/utils': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq + debug: 4.3.4 + eslint: 8.21.0 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.33.0: + resolution: {integrity: sha512-nIMt96JngB4MYFYXpZ/3ZNU4GWPNdBbcB5w2rDOCpXOVUkhtNlG2mmm8uXhubhidRZdwMaMBap7Uk8SZMU/ppw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/5.33.0_typescript@4.7.4: + resolution: {integrity: sha512-tqq3MRLlggkJKJUrzM6wltk8NckKyyorCSGMq4eVkyL5sDYzJJcMgZATqmF8fLdsWrW7OjjIZ1m9v81vKcaqwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.33.0 + '@typescript-eslint/visitor-keys': 5.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.33.0_qugx7qdu5zevzvxaiqyxfiwquq: + resolution: {integrity: sha512-JxOAnXt9oZjXLIiXb5ZIcZXiwVHCkqZgof0O8KPgz7C7y0HS42gi75PdPlqh1Tf109M0fyUw45Ao6JLo7S5AHw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.33.0 + '@typescript-eslint/types': 5.33.0 + '@typescript-eslint/typescript-estree': 5.33.0_typescript@4.7.4 + eslint: 8.21.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.21.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.33.0: + resolution: {integrity: sha512-/XsqCzD4t+Y9p5wd9HZiptuGKBlaZO5showwqODii5C0nZawxWLF+Q6k5wYHBrQv96h6GYKyqqMHCSTqta8Kiw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.33.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.0: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.0 + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv/8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + /array-includes/3.1.5: + resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + get-intrinsic: 1.1.2 + is-string: 1.0.7 + dev: true + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.flat/1.3.0: + resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + es-shim-unscopables: 1.0.0 + dev: true + + /arrify/1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /asap/2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + + /assert-never/1.2.1: + resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} + dev: false + + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /autoprefixer/10.4.8_postcss@8.4.16: + resolution: {integrity: sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.3 + caniuse-lite: 1.0.30001375 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: false + + /babel-walk/3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + dependencies: + '@babel/types': 7.18.10 + dev: false + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /balanced-match/2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist/4.21.3: + resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001375 + electron-to-chromium: 1.4.217 + node-releases: 2.0.6 + update-browserslist-db: 1.0.5_browserslist@4.21.3 + dev: false + + /builtins/5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.3.7 + dev: true + + /bytes-iec/3.1.1: + resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} + engines: {node: '>= 0.8'} + dev: true + + /bytes/3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: false + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.2 + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase-keys/6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite/1.0.30001375: + resolution: {integrity: sha512-kWIMkNzLYxSvnjy0hL8w1NOaWNr2rn39RTAVyIwcw8juu60bZDWiF1/loOYANzjtJmy6qPgNmn38ro5Pygagdw==} + dev: false + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /character-parser/2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + dependencies: + is-regex: 1.1.4 + dev: false + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /ci-job-number/1.2.2: + resolution: {integrity: sha512-CLOGsVDrVamzv8sXJGaILUVI6dsuAkouJP/n6t+OxLPeeA4DDby7zn9SB6EUpa1H7oIKoE+rMmkW80zYsFfUjA==} + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colord/2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + dev: true + + /constantinople/4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + dependencies: + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 + dev: false + + /cosmiconfig/7.0.1: + resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-functions-list/3.1.0: + resolution: {integrity: sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==} + engines: {node: '>=12.22'} + dev: true + + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize-keys/1.1.0: + resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize/1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: false + + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine/2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctypes/1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + dev: false + + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /dotenv/16.0.1: + resolution: {integrity: sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==} + engines: {node: '>=12'} + dev: false + + /electron-to-chromium/1.4.217: + resolution: {integrity: sha512-iX8GbAMij7cOtJPZo02CClpaPMWjvN5meqXiJXkBgwvraNWTNH0Z7F9tkznI34JRPtWASoPM/xWamq3oNb49GA==} + dev: false + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /entities/3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + dev: false + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract/1.20.1: + resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.1.2 + get-symbol-description: 1.0.0 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + is-callable: 1.2.4 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-weakref: 1.0.2 + object-inspect: 1.12.2 + object-keys: 1.1.1 + object.assign: 4.1.3 + regexp.prototype.flags: 1.4.3 + string.prototype.trimend: 1.0.5 + string.prototype.trimstart: 1.0.5 + unbox-primitive: 1.0.2 + dev: true + + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.4 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild-android-64/0.14.54: + resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /esbuild-android-arm64/0.14.54: + resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /esbuild-darwin-64/0.14.54: + resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /esbuild-darwin-arm64/0.14.54: + resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-64/0.14.54: + resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-arm64/0.14.54: + resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-32/0.14.54: + resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-64/0.14.54: + resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm/0.14.54: + resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-mips64le/0.14.54: + resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-ppc64le/0.14.54: + resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-riscv64/0.14.54: + resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-s390x/0.14.54: + resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-netbsd-64/0.14.54: + resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-openbsd-64/0.14.54: + resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /esbuild-sunos-64/0.14.54: + resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-32/0.14.54: + resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-64/0.14.54: + resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild-windows-arm64/0.14.54: + resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /esbuild/0.14.54: + resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/linux-loong64': 0.14.54 + esbuild-android-64: 0.14.54 + esbuild-android-arm64: 0.14.54 + esbuild-darwin-64: 0.14.54 + esbuild-darwin-arm64: 0.14.54 + esbuild-freebsd-64: 0.14.54 + esbuild-freebsd-arm64: 0.14.54 + esbuild-linux-32: 0.14.54 + esbuild-linux-64: 0.14.54 + esbuild-linux-arm: 0.14.54 + esbuild-linux-arm64: 0.14.54 + esbuild-linux-mips64le: 0.14.54 + esbuild-linux-ppc64le: 0.14.54 + esbuild-linux-riscv64: 0.14.54 + esbuild-linux-s390x: 0.14.54 + esbuild-netbsd-64: 0.14.54 + esbuild-openbsd-64: 0.14.54 + esbuild-sunos-64: 0.14.54 + esbuild-windows-32: 0.14.54 + esbuild-windows-64: 0.14.54 + esbuild-windows-arm64: 0.14.54 + dev: false + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: false + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-standard/17.0.0_dfwa53o44x4e5xhsfv5mvfhk5a: + resolution: {integrity: sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: ^15.0.0 + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.21.0 + eslint-plugin-import: 2.26.0_qfqnhzzittf54udqwes54xx65q + eslint-plugin-n: 15.2.4_eslint@8.21.0 + eslint-plugin-promise: 6.0.0_eslint@8.21.0 + dev: true + + /eslint-import-resolver-node/0.3.6: + resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} + dependencies: + debug: 3.2.7 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils/2.7.4_xtzkthmenmjo2h753u2dv735yy: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq + debug: 3.2.7 + eslint: 8.21.0 + eslint-import-resolver-node: 0.3.6 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es/4.1.0_eslint@8.21.0: + resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 8.21.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + + /eslint-plugin-import/2.26.0_qfqnhzzittf54udqwes54xx65q: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.33.0_qugx7qdu5zevzvxaiqyxfiwquq + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.21.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.4_xtzkthmenmjo2h753u2dv735yy + has: 1.0.3 + is-core-module: 2.10.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-n/15.2.4_eslint@8.21.0: + resolution: {integrity: sha512-tjnVMv2fiXYMnuiIFI8QMtyUFI42SckEEWvi8h68SWGWshfqO6SSCASy24dGMGAiy7NUk6DZt90DM0iNUsmQ5w==} + engines: {node: '>=12.22.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + builtins: 5.0.1 + eslint: 8.21.0 + eslint-plugin-es: 4.1.0_eslint@8.21.0 + eslint-utils: 3.0.0_eslint@8.21.0 + ignore: 5.2.0 + is-core-module: 2.10.0 + minimatch: 3.1.2 + resolve: 1.22.1 + semver: 7.3.7 + dev: true + + /eslint-plugin-prefer-let/3.0.1: + resolution: {integrity: sha512-vbznkkBSXB63d4o1o0NIm5C2ey3V5wKr/25dAvPdydQXdowAcnr69cbLgxd2YAG81IV5eddCO55Lp6gL7wSE4w==} + engines: {node: '>=0.10.0'} + dependencies: + requireindex: 1.2.0 + dev: true + + /eslint-plugin-promise/6.0.0_eslint@8.21.0: + resolution: {integrity: sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.21.0 + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.21.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.21.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.21.0: + resolution: {integrity: sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.0 + '@humanwhocodes/config-array': 0.10.4 + '@humanwhocodes/gitignore-to-minimatch': 1.0.2 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.21.0 + eslint-visitor-keys: 3.3.0 + espree: 9.3.3 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.17.0 + globby: 11.1.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.3.3: + resolution: {integrity: sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob/3.2.11: + resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastest-levenshtein/1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.6 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.6: + resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==} + dev: true + + /folder-hash/4.0.2: + resolution: {integrity: sha512-Iw9GCqdA+zHfDVvk90TSAV66jq0IwiZaPvPgUiW+DHRwnaPOeZomzlgutx9QclinsQGz/XcVIGlDEJbFhCV5wA==} + engines: {node: '>=10.10.0'} + hasBin: true + dependencies: + debug: 4.3.4 + graceful-fs: 4.2.10 + minimatch: 5.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: false + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + functions-have-names: 1.2.3 + dev: true + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /get-intrinsic/1.1.2: + resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-modules/2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: true + + /global-prefix/3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + + /globals/13.17.0: + resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globjoin/0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: false + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /hard-rejection/2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.2 + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hasha/5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + dependencies: + is-stream: 2.0.1 + type-fest: 0.8.1 + dev: false + + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info/4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /html-tags/3.2.0: + resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} + engines: {node: '>=8'} + dev: true + + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} + dev: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-lazy/4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /internal-slot/1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.2 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-callable/1.2.4: + resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + dependencies: + has: 1.0.3 + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: false + + /is-expression/4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + dev: false + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-obj/1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-object/5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-promise/2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: false + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: false + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /js-stringify/1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + dev: false + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5/1.0.1: + resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} + hasBin: true + dependencies: + minimist: 1.2.6 + dev: true + + /jstransformer-markdown-it/3.0.0: + resolution: {integrity: sha512-/2fNT0ir/D0NYI5roBTVRwDV2YBjMfU3f/wSeraKLfOMNxcrIJatjJQy4zPmwQBxqKxUojXBN8hmfQBMTLZ3KA==} + engines: {node: '>=7'} + dependencies: + markdown-it: 13.0.1 + dev: false + + /jstransformer/1.0.0: + resolution: {integrity: sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=} + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + dev: false + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /known-css-properties/0.25.0: + resolution: {integrity: sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==} + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /linkify-it/4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + dependencies: + uc.micro: 1.0.6 + dev: false + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.truncate/4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /map-obj/1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj/4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + + /markdown-it/13.0.1: + resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 3.0.1 + linkify-it: 4.0.1 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: false + + /mathml-tag-names/2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + dev: true + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /mdurl/1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: false + + /meow/9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimist-options/4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true + + /mkdirp/1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /nano-staged/0.8.0: + resolution: {integrity: sha512-QSEqPGTCJbkHU2yLvfY6huqYPjdBrOaTMKatO1F8nCSrkQGXeKwtCiCnsdxnuMhbg3DTVywKaeWLGCE5oJpq0g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + picocolors: 1.0.0 + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /nanospinner/1.1.0: + resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} + dependencies: + picocolors: 1.0.0 + dev: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-releases/2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + dev: false + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data/3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.10.0 + semver: 7.3.7 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + dev: true + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign/4.1.3: + resolution: {integrity: sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.values/1.1.5: + resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: false + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /postcss-media-minmax/5.0.0_postcss@8.4.16: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.16 + dev: false + + /postcss-media-query-parser/0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + + /postcss-nesting/10.1.10_postcss@8.4.16: + resolution: {integrity: sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.0.2_pnx64jze6bptzcedy5bidi3zdi + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: false + + /postcss-opacity-percentage/1.1.2: + resolution: {integrity: sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==} + engines: {node: ^12 || ^14 || >=16} + dev: false + + /postcss-resolve-nested-selector/0.1.1: + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} + dev: true + + /postcss-safe-parser/6.0.0_postcss@8.4.16: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-selector-parser/6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-sorting/7.0.1_postcss@8.4.16: + resolution: {integrity: sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==} + peerDependencies: + postcss: ^8.3.9 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss/8.4.16: + resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier/2.7.1: + resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /promise/7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + dev: false + + /pug-attrs/3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + dev: false + + /pug-code-gen/3.0.2: + resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.0.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + dev: false + + /pug-error/2.0.0: + resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} + dev: false + + /pug-filters/4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.0.0 + pug-walk: 2.0.0 + resolve: 1.22.1 + dev: false + + /pug-lexer/5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.0.0 + dev: false + + /pug-linker/4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + dependencies: + pug-error: 2.0.0 + pug-walk: 2.0.0 + dev: false + + /pug-load/3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + dev: false + + /pug-parser/6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + dependencies: + pug-error: 2.0.0 + token-stream: 1.0.0 + dev: false + + /pug-runtime/3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + dev: false + + /pug-strip-comments/2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + dependencies: + pug-error: 2.0.0 + dev: false + + /pug-walk/2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + dev: false + + /pug/3.0.2: + resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} + dependencies: + pug-code-gen: 3.0.2 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + dev: false + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-lru/4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + + /read-pkg-up/7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /redent/3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requireindex/1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup/2.77.3: + resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /semver/7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + object-inspect: 1.12.2 + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /simple-git-hooks/2.8.0: + resolution: {integrity: sha512-ocmZQORwa6x9mxg+gVIAp5o4wXiWOHGXyrDBA0+UxGKIEKOyFtL4LWNKkP/2ornQPdlnlDGDteVeYP5FjhIoWA==} + hasBin: true + requiresBuild: true + dev: true + + /size-limit/8.0.1: + resolution: {integrity: sha512-VHrozqkQTYfcv1OlZIRIL0x6f+xhZ3TT+RTXC5AvKn/yA+3PIWERrKWqHMJPD7G/Vi0SuBtWAn3IvCGx2/UB1g==} + engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} + hasBin: true + dependencies: + bytes-iec: 3.1.1 + chokidar: 3.5.3 + ci-job-number: 1.2.2 + globby: 11.1.0 + lilconfig: 2.0.6 + mkdirp: 1.0.4 + nanospinner: 1.1.0 + picocolors: 1.0.0 + dev: true + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi/4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.11 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.11 + dev: true + + /spdx-license-ids/3.0.11: + resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + dev: true + + /ssdeploy/0.9.1: + resolution: {integrity: sha512-4jfgSGlpKGBLQcva72Vo33CSW9VlHmEaAZ4WV8hgTEL8mnOsdxOYYZlxq2+hwtHrmPVdML4A0cOHAy6bmhGI9w==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + bytes: 3.1.2 + dotenv: 16.0.1 + folder-hash: 4.0.2 + hasha: 5.2.2 + open: 8.4.0 + picocolors: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string.prototype.trimend/1.0.5: + resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /string.prototype.trimstart/1.0.5: + resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom/3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /style-search/0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + dev: true + + /stylelint-config-recess-order/3.0.0_stylelint@14.10.0: + resolution: {integrity: sha512-uNXrlDz570Q7HJlrq8mNjgfO/xlKIh2hKVKEFMTG1/ih/6tDLcTbuvO1Zoo2dnQay990OAkWLDpTDOorB+hmBw==} + peerDependencies: + stylelint: '>=14' + dependencies: + stylelint: 14.10.0 + stylelint-order: 5.0.0_stylelint@14.10.0 + dev: true + + /stylelint-config-recommended/7.0.0_stylelint@14.10.0: + resolution: {integrity: sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==} + peerDependencies: + stylelint: ^14.4.0 + dependencies: + stylelint: 14.10.0 + dev: true + + /stylelint-config-standard/25.0.0_stylelint@14.10.0: + resolution: {integrity: sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==} + peerDependencies: + stylelint: ^14.4.0 + dependencies: + stylelint: 14.10.0 + stylelint-config-recommended: 7.0.0_stylelint@14.10.0 + dev: true + + /stylelint-order/5.0.0_stylelint@14.10.0: + resolution: {integrity: sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==} + peerDependencies: + stylelint: ^14.0.0 + dependencies: + postcss: 8.4.16 + postcss-sorting: 7.0.1_postcss@8.4.16 + stylelint: 14.10.0 + dev: true + + /stylelint/14.10.0: + resolution: {integrity: sha512-VAmyKrEK+wNFh9R8mNqoxEFzaa4gsHGhcT4xgkQDuOA5cjF6CaNS8loYV7gpi4tIZBPUyXesotPXzJAMN8VLOQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + '@csstools/selector-specificity': 2.0.2_pnx64jze6bptzcedy5bidi3zdi + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 7.0.1 + css-functions-list: 3.1.0 + debug: 4.3.4 + fast-glob: 3.2.11 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.2.0 + ignore: 5.2.0 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.25.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.16 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 6.0.0_postcss@8.4.16 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + supports-hyperlinks: 2.2.0 + svg-tags: 1.0.0 + table: 6.8.0 + v8-compile-cache: 2.3.0 + write-file-atomic: 4.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks/2.2.0: + resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svg-tags/1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /table/6.8.0: + resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.11.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: false + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /token-stream/1.0.0: + resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=} + dev: false + + /trim-newlines/3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + + /tsconfig-paths/3.14.1: + resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.1 + minimist: 1.2.6 + strip-bom: 3.0.0 + dev: true + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tsutils/3.21.0_typescript@4.7.4: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.7.4 + dev: true + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest/0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + /typescript/4.7.4: + resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /uc.micro/1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + dev: false + + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /update-browserslist-db/1.0.5_browserslist@4.21.3: + resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.3 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: false + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /vite-plugin-pug-transformer/1.0.2_vite@3.0.7: + resolution: {integrity: sha512-RtXEYaEgQoy5ttNjuuNMWRzZwfJz+cjePSdQzmNJTteIzUamVb8xvAlwNouMt189V2mk6HxyfTGfAGKUQ6KGig==} + engines: {node: '>=12.22.0'} + peerDependencies: + vite: ^2.5.10 || ^3.0.0 + dependencies: + picocolors: 1.0.0 + pug: 3.0.2 + vite: 3.0.7 + dev: false + + /vite/3.0.7: + resolution: {integrity: sha512-dILhvKba1mbP1wCezVQx/qhEK7/+jVn9ciadEcyKMMhZpsuAi/eWZfJRMkmYlkSFG7Qq9NvJbgFq4XOBxugJsA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + terser: ^5.4.0 + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.14.54 + postcss: 8.4.16 + resolve: 1.22.1 + rollup: 2.77.3 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /void-elements/3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + dev: false + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /with/7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + dependencies: + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 + assert-never: 1.2.1 + babel-walk: 3.0.0-canary-5 + dev: false + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic/4.0.1: + resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..b2eff6c8 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - client + - server diff --git a/public/images/and_chr.png b/public/images/and_chr.png deleted file mode 120000 index da47ce43..00000000 --- a/public/images/and_chr.png +++ /dev/null @@ -1 +0,0 @@ -chrome.png \ No newline at end of file diff --git a/public/images/and_ff.png b/public/images/and_ff.png deleted file mode 120000 index 93c4678c..00000000 --- a/public/images/and_ff.png +++ /dev/null @@ -1 +0,0 @@ -firefox.png \ No newline at end of file diff --git a/public/images/and_qq.png b/public/images/and_qq.png deleted file mode 100644 index 6094b5ec5d3da3c74426f39d7281d63b3d4b8f1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 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 CCb^XW diff --git a/public/images/android.png b/public/images/android.png deleted file mode 100755 index 6808a3667340556a227586a643ad5a1178a7a73e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8785 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 Hu0mjf51D)v diff --git a/public/images/baidu.png b/public/images/baidu.png deleted file mode 100644 index 0919dd0d737b43e1cfa08c5bd93fbc1503e34923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4796 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 diff --git a/public/images/chrome-canary.png b/public/images/chrome-canary.png deleted file mode 100755 index 8a9d415f0c36ff350808929fab651da405b801f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4545 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 Y1`c;NL6_%)2LJ#707*qoM6N<$f_bw&pa1{> diff --git a/public/images/edge-tile.png b/public/images/edge-tile.png deleted file mode 100755 index 28aeece1edcff3e431efce9aa843bd3879cb2f85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1586 zcmV-22F>}2P)C0002AP)t-s0C>~? z|NjGe)BtbL{Qds?{{H}Q(ExJM0Cdu<)A9QK{s48-0C&^(`~Dq>*gKcqQlsJvebwUd z`tSGs2zu1@`u!w|*}vWNx!Uuv)$*Ln?&k9Q(&zVbwC8HD=1!sEHk8~iklP@J*c5@* zwAb>Z&hL%F>|UwkDUI40h1U^(*30Dg!{7CJxajKi{NC>R*z5U}#_fQ+>1C|tJ(%9c z;q|A{@R`W%NS@$Bo8O1O>w>-Nqzr$x000F!NklQo1gsuD((TxxeizJZ=n(7Ykw2wJ;=bC1~d33LY&5!r7`GN>MOFWf()Rf=6{VHcDF{CPu_y#*rF@*=$dZX$;-qs&7fI9$Z7-^W7x9ZAOeS7nf}FWTsmd70{W z0pj%c4WT7ehQse89Qp?#p{Z16?Z1uUKiGknk^X0>pTfZn&qluoE~G)iCz1^G->Gqw zNlK$%a{J5(C3^>A+6KBY<0jY|(cMtk8sOL9CJIbber|P3tHES4C|-4M?zdTR;hJYV z0K(rF^<{A;qNgDZB9i_?8K~L8lU*l>VR>DiKKCv;G8I1%YV_6PIBl67Krm7^0k9iz zf613$2LgpdDqf<(iNcaG1Q$MRB4DfE>umXR`t{63JRJGnMrZZQV4^&eW61_Wo1Q(5yxBgsZ2!U?fZq9*yImJyRAXNTXJ?ON>YD!2TSdXl#^M z`2#e|Lf``$$6tt_aEK6}l)|g|js%|!1}M};`b97-JdnM(^9dW(K|-~*<&J7}2L|LM zodeGgqWHf9CpZW|$|wM{WnHy~KIo?E1H!Jt)Hy7X5D;7f%zZ_^{S-jPd3rlGZw;e?8ziY_pOpkSgpRfi9OaUK7;DS{mXe)u%h`}HRl zCToMPoP!yuwN=Rm3UBQ2GEl#|;{jYd16Nj$rpgb%0?Q3byegg50KS5IMgyA8c@q#d z31Dx)ZU~&!04_nE*T8FXe|#v?ZXV#*=j;NFdR{Xin}vh9?sF$S-g*_5XUGl(m5sjh zXFY+MA_wDSXaFqYwCDnhy{0wddEG$k)CO3h4DWr=43*np+!rs=q zfWr8+5va>5tkWKHvZwoO9L$puEGmlZBd;*4?-g!hx7n!tKLg^S|B=b8#ojmfyYnFu zvP+#P^m{>y9m#&L-zb#FoH=Bhy2o(341n4i`1c0V-TXqjco(R&*yhOsME~uk3gAWt z>=Cu9=_v!|Pg9OesGq|Wo?wV-T51LHC+3U{5Nv^K{7hV}Kfcv`FFHlRJ^!-!^f0gf zeAkE#*drzvut}^U+nsvz<)v_4@3b$H-*mKr>?+X&l{9&bfNt)~?NPJ)o!{);5E@G# z!vMilyAyi@Ywrl;`3z`0ZvpQ43~0pk9^7*pAiUNF_iP3~&{XwaFd(&(*8qJs1ZFjt?`2vx9TKyFKI@rn?Vtlq$i=Pq_^7Df@ kIXO8wIXO8wIXNl#3$sdGl>$scB>(^b07*qoM6N<$g58`F3jhEB diff --git a/public/images/edge.png b/public/images/edge.png deleted file mode 100755 index 87cfb29e22bd1747a26b473be19c3668d6c30bbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1734 zcmd6o|3A}-1IOQ+VOwUtf6bTW%aAfUS-xB>n)$L2Y39N?!t$*{T9?gyyT&=}rZuUd zdz7d-Un=f|@~yPykknaCzO^t8_c&~}^Z746kH_ozdj9(Q?R71Lh)2Lp-~a$12>!ld zd#3*nsLEb%iYvGG#0&`v_uI2e&L95|Deu}C+*@-fD~xy=fXK2aDRWsr;b!wiQ1Bf#Or&Pe=>4Mu5-Z1 z=eOG!72=J2e%*FMYz|nrbQA75D6JidKNB)PoeY_^IOG%a66#iz#w(PL%3F0N zKNmlfPpWRt>ra{2+5G+y=wUK)gOZFDnLwVas(bObAVq_wLQS8yE9T?+sz({SNLgfk zuN_wBf&Nxgs22AQR87ne=yUCX*}V(gHm->Dv4G!M;&Y-ZY#GIkmZtQs!sycH@7}E( zHYkxaldPCrDY69`CzjqqZ!yWQ4LAy^^r5$d=Ec}dx1n?wtQ)Xz=# zxB;&5kE4ynJQfG1?uy|3Y^AAZOhmllh-1tiV;-xsf2)qPsCUT96OMn7e7p@ zJTDmQ@6585{Wb-;Qc0IM{S(PTTT*nb%Sv5fB~>sDkh0n<9j+%YggHMU;dIM)59s8zDbsNF3AUbv>#eB zB;mcs{2GNbGo~Vk#SmOv}^CVd1-U;aq_l3K(v$`CN z`&M*8idM_8m6&OsbOt!HU_u`^DT?P7Lo5T*!vL|mT?il8E`MK6*QD~yK;wguVXq|v z$ndO3HV7Wyq77=`76Xu9xR7R(IqjD8KJfa3jLF(d4*C18J1!FG!R{;3z}@ zeCly(KB*f#NA6=zAp4Vp3`XxYY}H+w2)7XTuWg7LT*5U;;L-`m<#2{gID(1SKnIvG zjK8bl{l$SjjgI*foo!#SI)pvgY=QmKly<@{>J=GY&K(h5Yuo?p3iR{Zd*(RHzvOu6 zj+y&8w4SS?k63lC?pxj93{=8CtGTXyrkPYV(EY2uI;m;T;5s>S47{)8OzH$sIri1OzX_W`SnTSVQK&Uf_2&n^AxC`Sau@ucRZ6^$0oF# zJiXhuA>BDpWW4m%g?rWJpxZr}PSkZ(uJaV0)%CTHU&q3hLPFtDOyaqZCT1hBA_3kr yELm(7JwZGqoLO_ceRS8%MHLx_9j3|2TPkQaOh0JtBzo<-la_JcktwMhO@DipZ*fSW~6_~>8?m;QbBr}GTtCO zg|tV~kYkCj7!090o_{{4>TFlI2* z(}M@<00Cs8_Oa4%+y^|cN7zHi&Qmmx*d%OJ26XPsuL~W>d5Hx?qz^3Hkqm)|C78JZ zCrrmKlqINkX}gNxMh9;sV#I&7TLLJ00000NkvXXu0mjfTpiHt diff --git a/public/images/firefox-beta.png b/public/images/firefox-beta.png deleted file mode 100755 index e824f09c6ec82968b20f6acdb69b841430404784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24762 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 FV1ipXLD>KR diff --git a/public/images/firefox-developer-edition.png b/public/images/firefox-developer-edition.png deleted file mode 100755 index e38fe35a9e8077cc0cf4dfe16c2d2a2a26d31759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24617 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

    )TzGQVc6^pWx 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 diff --git a/public/images/ios_saf.png b/public/images/ios_saf.png deleted file mode 120000 index 198bfab3..00000000 --- a/public/images/ios_saf.png +++ /dev/null @@ -1 +0,0 @@ -safari-ios.png \ No newline at end of file diff --git a/public/images/kaios.png b/public/images/kaios.png deleted file mode 100644 index 908ce92f3ab73f5bfe3fc9ad430930704626e731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2550 zcmV*Ms=%j&?T-2MFi(7omF==O(V#k9&zNCB3NgcO=000RgNkl zYeV8X5Qf`SkOYvMfZVGHim-eB|Gzt;E6_H#NwUn8?fZGn=AlV1nRjNQ`1TcHPv8ow z7;i%r<88=|k)i1tjEo7+rmI6*uU%dBbhdxl@I(MfL5z&=_QO##!d0s~nQ{oHJtO1u zMGqP8q|W-0Sz}r@BF)a%ZMAGxAru zghvgH4-^xl_#nATGkWA+jJ$>oV59qu_EKsY*_O=1!XWLX)G;P|?5W#poj5V_1@^=t zYV4HjRn3^ZVNV;VsR~lb$XeKQ25X>zR57v!_KY30lD`iq7)yz$x{`9nqEeoP04rCZGMZa82(IqLT$%q!(wavgof8-8%{6_-Eyu*MHyo6Bg< z&tZL*>_VLI&RBu*!+o>|mOVjXz=N;mCt+rQSj21h>HN{Kz{m!!W3{%$aFN&ntP)+B zmxz0xWUqgwb!Pm}aj3356wj@fTPh!bjXjNBqn~fcGvmZ53SJ(YRDi-hz?&M`Dk-j334s z9{&T478aiODK4YNPI;1cL#8&qepJS$c{hFD{B>W0XfRsbwU~SI1r0`vC#**hh6rQbxFJ0ZibNQVi`6GU zL4?ux%IgzLqr%wHkKyHrrotEvwS#ya%#mS?erZ;#@Cq~0VT?YMke)tMLX1jC-wX^& zjL}Lq5Q}{+7^E1ZWii#?KWs&eG3p#L;W@_p0Yb^d7(Xe8eJ;eY>WJXGSrDfXImV+# z%i8<h1j1}WGR59AAVyqaip^DK?6=TJC4ONVGsu(NAYp7zhlRsl) zU7tN3(#79NpC!Q9o9y`4Ar%uM`PKE~kqMo#H^`(rFcAkY+JntF%O`Yv{>yFP+(cZ) z=2#lyuuqq;5-MX)6{+H09{Id58Sm5)$7B|S?$7^&$f!#N;O>^(f)E*BwKfMHt{N&H zqoi(FM&T-k;W3U4e-JJ$8jZ1S{G(tM{LmQ9*$%;qzhNJc@_-vc_UGJvmM)F{3Rao8LZTES%D6NigbDb1&t;C9xP^tQq6j zx9W_eLj&ElGe;-fv5(1e}INff2YR!No}^FzO2_76k4sLV_`R zhiyrq-;4%h^a9(Gu%{#u#tsA#8U!K2s4q=g5bWfG3S*()mR_Kvb25z49I_=rt*PiR z+K20)lO)6l+LDmPN{BIf036gMC1tcVLVPg-HY6!Vz?Kw%P!=u5mi3ktfP=^&bvtbs z?drqnD?TAIT2%VAu4lZm+>+N`tI^J8QUS+`4dq<_2BXc7Z~H*A+>+ORcAT4lsAb=2 zVPUl;ul)`X-I;%TfZtZ{rFWQQm>TS6M-k*))WU-W${Gm6Xf%fl$niwayevQ-h(LWG zriMAe8cHuskO?Rh8HmwvH-wsqOj{CWWeL@zM0>IZZ=1EqL z{^XYl-`!=eB}<&{6={*t(E7%p-oqe1wr}KYUiVMaTo1lV2gKj47He)ZTNN4ot4?$p zt)8#Z{iJsNdGIoSO}ow|E>92Ji?s@T{7~09Mel;qwK*bDomwMaFb2#7CZTgLf(yo* zYRP`tl>LIyqg@t7B{Ig_YIMDp_MHbEdXd+jNf|*W6V!F_VVjAk1W2r;qOOV&_@PZ% z{aC^1`khQqnS-Wm?9Z!bIVJ6xlF{wpik`A3__-La&qpL7Ju@9+iaos$%AL69WAQif z(wegx<{1Ok13}d~cOX>oRQPmVCZar2(Kq6k1WZ8t{Nbg9vE-|@n0hGj{{$;2g(6A5 zn#|)Aq#3G%H&rMTWb36XdUbQSw>GjW5h!}trwFs(IW348590&Zs?b(E#r}r=pFX{ zwOEtikui=1OX)o=m%nWYtr@>uH?_b`3w+e+t`ghSNl0oQOXBAx0nTPSopQP5%$xCu zDU#&rH63=_qx-9C^tN8sA72=R&w=q9^w>HDNeqVP%vd&6jJKix0gs`XC(_-!?f?J) M07*qoM6N<$f)>gJiU0rr diff --git a/public/images/node.png b/public/images/node.png deleted file mode 100644 index 0d2013dc4d2482b9ee419d3f013ec5067c59bfd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7192 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 o1={;K1866lgEKh($ diff --git a/public/images/op_mini.png b/public/images/op_mini.png deleted file mode 120000 index 01e8a63a..00000000 --- a/public/images/op_mini.png +++ /dev/null @@ -1 +0,0 @@ -opera-mini.png \ No newline at end of file diff --git a/public/images/op_mob.png b/public/images/op_mob.png deleted file mode 120000 index 01e8a63a..00000000 --- a/public/images/op_mob.png +++ /dev/null @@ -1 +0,0 @@ -opera-mini.png \ No newline at end of file diff --git a/public/images/opera-beta.png b/public/images/opera-beta.png deleted file mode 100755 index 03e0b8911527ea6ed87d9eaa14a0a3fc4e506934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6292 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 diff --git a/public/images/opera.png b/public/images/opera.png deleted file mode 100755 index 78f71717e409a10fbc813ff80734bbc66dd8f36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4196 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 diff --git a/public/images/safari-ios.png b/public/images/safari-ios.png deleted file mode 100755 index 8f6ab13d8eccca5fd6a29e164005a7f4db6f9ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5316 zcmbtYFy5cMx;ZK8X+AbNT&)?(jYJi2`LEy5v4;=kl2VZ zR?qkMH$3;8d+)jD^LcyU+;mf89a<_76#xLB)zj59|IcCnBL(q)dbyp41^|d~riPYU z|3$+86952b0~(xp19w z#&UMta=yC(m!d##Zb0KW&_@io90e}C2B%$tx-p!2*WhOtTrn4%lX$K$B*zGjtLv8I z8=m_K0^)TZv;==1=}(KyojeC!&7x*8Cx+tfd~d)1pO?5rQ(J; z?vgI-f;JDul6}pbeoY;KWLO|jeI+pUVVSxy+|6i~!W-^76ixIcCi%K zwWFz1uMoEct~or#D4uEv&jrV@zPMudL(pblQ!f$3=J9b$ILdw;WfMju<%%Wjg5L4G z{glvufTwE5CAQqe?co;=aihDqpE58ldoZDG=&(J4!v?|hC*E`#C-DWRHiU(~xuL1Nu`jqfxhAY0;VqW&y=&N}6>PyG zwtn(9qW|{wAljo1t@r`0UXCh1A~f#fJHBD8hcGE0(U2OHWfjV-;OcJNB{cp*DDpxg z6dAsbZ(hgc&0r*J(FT>M2N_qjnr`WT2-@oe=ug7;3w*{eoYOMy{X8aU3X?L9fed0k zOx=pTMtM|TOT}I^oDjB8@s+!Hks(aQ*lohA-UmUz@^F>O|Vvc1&ekrPJDQBdVPQmCEaS)Y>%P25{=;!yt4(Zc9 z0{6>gy*NUNKoV4sfQzU@c|Cv7U z(UusgNXpw;+JVdF*|mg)t6ACqE-_r(kl{WB_u9sb;vBq=7`dOk=zfZM(}6TZ4F^ah zb-D^Xf2rRs*XEy@mG|M5NC2g8UrF>p{Hoygy!j|_1mxwh8NL)Tt3c+H9$wx22MdNt z0q1wiskh5hD;Xxp&xv98e8^0B$za=2Prc}KfKkMW=4$)F?`%2hcDb2JBOT<3t=U-; zL@7}ri%&;BDd9BB_J=MmmFoq9bY;_)^kBwq{9?lp`LP1Ey9(XzJ8~ZYzPx;8(fgr! z-XkhsqD>04JZLnvL_WpFTxu0kpX&6`j@m>G9CprA*S?utN?VSsTMn<|dp-NfN$wXlyOnaFSNRY9*)P*%I{GY! z!a@I7W0atAdBS;S zCBzQ-nZkU8V!sa{MZvrOf+fn6Sew`@AL|tSy#6!lj4mcgH)d7x$u`MY?^6PA6p6}!{*QKUsk4a<>72ws@|Ys zIgd;Od~E0F)cbAX9N`SINV7iGHnukcHF9{*;;^Cg%Hgg^-k8K`Rcz%y)1F$uIw2X} zGUGV)`}w2KNBubt%{ve2NQ_t)gTs*?gN4{#bh=Xc-5XYWN>y8-hxNS<_snyIdWF99 zune&T&_D_sB;v5Q{QdV2r8WLqGZkOlKa1!)9W;!xPt{|CwcdN`!?@yobozIH@EJ9E z#@w3GHnY1%zbwClZe@#g2Zn0$`;p-W;ZfAT4Sh!dZ3QezlaSShb{ zyXvXu83Hqv-)qzwkd@e_jpio`0^&o=uloH*UC!@yk%DLvGRcg7ZwqReDyvPB3zy_k zJT;bP^JAqVw)YrJeEDF~#e2c)-Uk~c`VQH1;>*B4c`ZetM86Hyg_Za4CB(a*le{0S zB|3$!RN81@m9q0{=lz&rCu=K3q-Oo+S`zLeqI`AP&K}!NGZ_$7ECy#F$$h5M5&mrs zwBuWp%a&X1p3UhXy>9+P{Z9h&+xsf#q~P;7F)oAA!qd;76-Q~)G~tXcRlImc`7;Ju zHE2J9OO+t0mg5rgo=5h6+HPWkzMG-n&$(my#pWh*j%pN~cvlCw*zd0R~#;e!MQY?_jM__aH$@Y)_%k@%2Qhs}hB5 zC3XY>Co=T;$6Jzf(Ri_c-SPlP@)Cn+Tl>rK8IYlW%f+2|1KR@Fy*zXtSv{#eIU6pwFg%CWME#|4mN5D5ahAKq;?nqv-{GC7 zaeg_R;nA6#X|TS?ytJFJRL`Ws0HbKhVD7*pDoHEm^Q;$g$)HzJ+D=y-whVXRA|0n?JXTGU1x8-!eZ!29))OTaVlD~*z=lgxJ$VY=cV4O7bAAj+NvYQ-LH^2K>6FV@)CXGPt%UPoYi07-api_9Yct&H}9`rYCC-^E2Z+np>w4wq^(fB1*=r>57& zdDv}QXLkF%Gc$fx0q~sW17z;X8o9GZ!9w9NYeeTUX|q{DVPSeR7XZL(`@)D^Wh`QA z52-9RT&<#OAFkS{D99|3p<4*fAZpq5)%3X7LZlMy@9AiofnOOarOyd{O*@b+F+CHw z2I>uds>G-qBA#L=;f!|fEz-{z9APJhNiXdx4?9Kni~6-&je&#N+(0|iA24AyW7skI zn+*w*;%nzo-iqp2AR!LRq3qtB{cSYd8Njz00SYv+0P2zv38_5>oI}Q!^c-H|0aXPh z$^p%i%r8FXC42-@z5JB=u6RT&&10!=KiugvPdk}`L?Xp(n8@g|i7vAR%qi7{vZk06 z`g@fl{ai-%kr{hT>?z{)coo-=*hf}*HKAY};BOJX~04-;M z%|0i={G1BIM3Mb1wEa81p=8|iBS5$LVoKW)&%UWGrT<+NXV~q&Tsue2jcQRC|7qLo zum8GWKebiDFhDF0*mu?`?~p#)6yGRaPkXXst1j3Y6~(&37)0>yV!{z1UjtRkXRvZ+ zM4+oN)d}%oSPrv+G_RMk@aGzq&F2x{jvqIdL36~y049=C;(1K>d(QZ_@QKr4%$hx>0@y^3uE4bxfl*X;Bw?!EX;y?!EG0IdxSzcZiu#h zJd~)rHvxr|ekZ9e<7q-%RO0cJiGn!bnwAY{(P5aL%X;v&wiPPqybG{G7#HkA~<6 z<2$R@)3pW@p@1KhbR_%~NhMF(3}m+5c-D+o4Ts1lNw4)3;0BXb?eX+{JGrPw%J5en z@-rV>(Qa`f=Uq4HrJ>k0(vp``^gQURo^^JyPmx3YYQe=!>IZcK;3NZ~OlQJ);7u}( z_ne+@`P7a+5q-oRcVnR#yypEh`1he3J;RhG(sFukxR%q#yAdT-Etkw`^_cdyUR z^b%$Z6Z2A#ZLlh3BYk#s63TBa%!SL=WoxBv!I6txIr(fJ4@t>)VGrK$4Kw@b!`s#z z=>MI&&#!t#YA>d&uvn3OeqK=Ni=8CBQ{Ce^yJo*10F}*kvHJ=a(1RyUo@=fLF6&?M zU(Tcgg|nWWbc8g8+>U3H!SZ?%|1Jq>(0Ip}He+u5W-O)X=U^^+rux5lCjVUlL;4rt1zctL9-0R>0AvBD+Sdf=hs#N|+*aU~>OtC>n&ClC26; z;j}OZyZ4$InsUA^n$(0`eJ#ALWu?3*gLFHt9=r1s(a0c4jnlO{)^FH4pMRBy&%-_B zrATJa^t!4Bo{PVcq~XttmsekwkCTg~)uGo~63(jIwUVoflDNfIP}B6?YV@(}DNt#c zo$y|hmBZ59IQf1)?#kLj&2ti0V>$`o3}+0ItxJaA*Q_$(<<-v zUuaAw_(y-ZEoe{V3soGBcJ`uUJHL9l$o@E_G|DU_l6cxzg!-iuyT|nBe9M}7zs<_p z7AD6Zx@caxSfFf!_yk{6K%d~$Bods=rqkB~{+@n6ulc%S`IwRSkN2WZ=)qDQgEdJ_ z$BO62RsnN?U7ME!{9g;x>_IMNmY*16=NN$B%qqX$n3ScJt0zWoW~SIsa^SQ=0?Q>B zC^*RY=otMc^Vp@e05ZcA>=TsEGrml`-|i40+E^xeGthI8^Vn)BhWvVqA@1~VU56veA3yXU?<=bu*P8eYsWV;oNwd|1b0u*+6A7EJHbNcU-s1S>Mf zq`jMFYF+zOoHX6%{)!Uh>7%ho<&g_vV`)P>YpFtktnP(0z9g5@i-_H(EVFXKjB?T7 zm||M_t&E5}EjlL*&DqLl>?J*AwKPKm?q|%=jX;Sm3a#&rgH+ zf5pnIbBC{X8Np_uoaBP?zM4i4ntB$Jn?OOIV;*~+_9n~#*0{?=4cE0EjGR#K;&Mk< zx?l4+Y$B$@mT1H?PT5YE8WOrDhWd$q&6xj)QG9+R?9c<};$|De9I6DFMiWXuMsudR zvQrKBw$~?ScLLxvHGG_HLGHRTlXg56)f~wr4a+{nqwe4jO8n!F^ix{9HqiVwZ0B&1 zg^rFmuWChk-5QUEVHXxqThEZf>09K%BmU65r~`^8Qm|yq&HO9NSHQzy-m9-=vW_x* zG#x@~-c_l#QDQ)fsMopw&4(;m?pGK@UJn^{l$?OviGZ^!e&$+e7>Tj zJOi7Z&FiKUF`$~IC}iOY5^*<=Gi2E0(EiV|@jyr*b7%KamF-NkVbxl_jZy@B;wQ$EpzOCXtS*1OV^alZzZrq%GTVCfkuo~yoC51}5+yO3Vz}+fjj*1^O sdL8l{2gPgvWAISiCNM5ug+L%vv9dxA%+7`Xx5fbUw2U=d)Ljz)4^9q_OaK4? diff --git a/public/images/safari-technology-preview.png b/public/images/safari-technology-preview.png deleted file mode 100755 index 5f512fb22f6a61fbfc2c28ea34463f2959fc5cbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7994 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 diff --git a/public/images/safari.png b/public/images/safari.png deleted file mode 100755 index 96373e247d3447a2e863c13c473d6a9bdf114b37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7072 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 KMNUMnLSTaN2V_(L diff --git a/public/images/samsung-internet.png b/public/images/samsung-internet.png deleted file mode 100755 index b2efaccc951ddab80d939c64795844e795d7d2b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5773 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
    Sk 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 diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css deleted file mode 100644 index 4acb8040..00000000 --- a/public/stylesheets/style.css +++ /dev/null @@ -1,25 +0,0 @@ -body { - color: #111; - background-color: #fff; -} - -a { - font-weight: bold; - text-decoration: none; - color: #490245; -} - -a:hover { - text-decoration: underline; -} - -.neon-carrot { color: #fda34f; } -.plum { color: #490245; } -.bg-neon-carrot { background-color: #fda34f; } -.bg-plum { background-color: #490245; } -.dt-ns ::selection { background: #ffcc00; } -.lh-copy ::selection { background: #ffcc00; } - -.bg-plum--hover:hover { - background-color: #260024; -} diff --git a/public/stylesheets/tachyons.min.css b/public/stylesheets/tachyons.min.css deleted file mode 100644 index ed7da41f..00000000 --- a/public/stylesheets/tachyons.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.border-box,article,body,code,dd,div,dl,dt,fieldset,footer,form,header,html,input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],li,main,ol,p,pre,section,textarea,ul{box-sizing:border-box}.cover{background-size:cover}.contain{background-size:contain}.ba{border-style:solid;border-width:1px}.bt{border-top-style:solid;border-top-width:1px}.br{border-right-style:solid;border-right-width:1px}.bb{border-bottom-style:solid;border-bottom-width:1px}.bl{border-left-style:solid;border-left-width:1px}.bn{border-style:none;border-width:0}.b--black{border-color:#000}.b--near-black{border-color:#111}.b--dark-gray{border-color:#333}.b--mid-gray{border-color:#555}.b--gray{border-color:#777}.b--silver{border-color:#999}.b--light-silver{border-color:#aaa}.b--light-gray{border-color:#eee}.b--near-white{border-color:#f4f4f4}.b--white{border-color:#fff}.b--white-90{border-color:hsla(0,0%,100%,.9)}.b--white-80{border-color:hsla(0,0%,100%,.8)}.b--white-70{border-color:hsla(0,0%,100%,.7)}.b--white-60{border-color:hsla(0,0%,100%,.6)}.b--white-50{border-color:hsla(0,0%,100%,.5)}.b--white-40{border-color:hsla(0,0%,100%,.4)}.b--white-30{border-color:hsla(0,0%,100%,.3)}.b--white-20{border-color:hsla(0,0%,100%,.2)}.b--white-10{border-color:hsla(0,0%,100%,.1)}.b--white-05{border-color:hsla(0,0%,100%,.05)}.b--white-025{border-color:hsla(0,0%,100%,.025)}.b--white-0125{border-color:hsla(0,0%,100%,.0125)}.b--black-90{border-color:rgba(0,0,0,.9)}.b--black-80{border-color:rgba(0,0,0,.8)}.b--black-70{border-color:rgba(0,0,0,.7)}.b--black-60{border-color:rgba(0,0,0,.6)}.b--black-50{border-color:rgba(0,0,0,.5)}.b--black-40{border-color:rgba(0,0,0,.4)}.b--black-30{border-color:rgba(0,0,0,.3)}.b--black-20{border-color:rgba(0,0,0,.2)}.b--black-10{border-color:rgba(0,0,0,.1)}.b--black-05{border-color:rgba(0,0,0,.05)}.b--black-025{border-color:rgba(0,0,0,.025)}.b--black-0125{border-color:rgba(0,0,0,.0125)}.b--dark-red{border-color:#f00008}.b--red{border-color:#ff3223}.b--orange{border-color:#f3a801}.b--gold{border-color:#f2c800}.b--yellow{border-color:#ffde37}.b--purple{border-color:#7d5da9}.b--light-purple{border-color:#8d4f92}.b--hot-pink{border-color:#d62288}.b--dark-pink{border-color:#c64774}.b--pink{border-color:#f49cc8}.b--dark-green{border-color:#006c71}.b--green{border-color:#41d69f}.b--navy{border-color:#001b44}.b--dark-blue{border-color:#00449e}.b--blue{border-color:#357edd}.b--light-blue{border-color:#96ccff}.b--lightest-blue{border-color:#cdecff}.b--washed-blue{border-color:#f6fffe}.b--washed-green{border-color:#e8fdf5}.b--washed-yellow{border-color:#fff8d5}.b--light-pink{border-color:#efa4b8}.b--light-yellow{border-color:#f3dd70}.b--light-red{border-color:#ffd3c0}.b--transparent{border-color:transparent}.br0{border-radius:0}.br1{border-radius:.125rem}.br2{border-radius:.25rem}.br3{border-radius:.5rem}.br4{border-radius:1rem}.br-100{border-radius:100%}.br--bottom{border-top-left-radius:0;border-top-right-radius:0}.br--top{border-bottom-right-radius:0}.br--right,.br--top{border-bottom-left-radius:0}.br--right{border-top-left-radius:0}.br--left{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted{border-style:dotted}.b--dashed{border-style:dashed}.b--solid{border-style:solid}.b--none{border-style:none}.bw0{border-width:0}.bw1{border-width:.125rem}.bw2{border-width:.25rem}.bw3{border-width:.5rem}.bw4{border-width:1rem}.bw5{border-width:2rem}.bt-0{border-top-width:0}.br-0{border-right-width:0}.bb-0{border-bottom-width:0}.bl-0{border-left-width:0}.shadow-1{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-1{top:1rem}.right-1{right:1rem}.bottom-1{bottom:1rem}.left-1{left:1rem}.top-2{top:2rem}.right-2{right:2rem}.bottom-2{bottom:2rem}.left-2{left:2rem}.top--1{top:-1rem}.right--1{right:-1rem}.bottom--1{bottom:-1rem}.left--1{left:-1rem}.top--2{top:-2rem}.right--2{right:-2rem}.bottom--2{bottom:-2rem}.left--2{left:-2rem}.absolute--fill{top:0;right:0;bottom:0;left:0}.cf:after,.cf:before{content:" ";display:table}.cf:after{clear:both}.cf{*zoom:1}.cl{clear:left}.cr{clear:right}.cb{clear:both}.cn{clear:none}.dn{display:none}.di{display:inline}.db{display:block}.dib{display:inline-block}.dit{display:inline-table}.dt{display:table}.dtc{display:table-cell}.dt-row{display:table-row}.dt-row-group{display:table-row-group}.dt-column{display:table-column}.dt-column-group{display:table-column-group}.dt--fixed{table-layout:fixed;width:100%}.flex{display:flex}.flex-auto{flex:1 1 auto;min-width:0;min-height:0}.flex-none{flex:none}.flex-column{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-baseline{align-self:baseline}.self-stretch{align-self:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-stretch{align-content:stretch}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-last{order:99999}.fl{float:left}.fl,.fr{_display:inline}.fr{float:right}.fn{float:none}.sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica,helvetica neue,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.serif{font-family:georgia,times,serif}.system-sans-serif{font-family:sans-serif}.system-serif{font-family:serif}.code,code{font-family:Consolas,monaco,monospace}.helvetica{font-family:helvetica neue,helvetica,sans-serif}.avenir{font-family:avenir next,avenir,sans-serif}.georgia{font-family:georgia,serif}.times{font-family:times,serif}.bodoni{font-family:Bodoni MT,serif}.calisto{font-family:Calisto MT,serif}.baskerville,.garamond{font-family:garamond,serif}.i{font-style:italic}.fs-normal{font-style:normal}.normal{font-weight:400}.b{font-weight:700}.fw1{font-weight:100}.fw2{font-weight:200}.fw3{font-weight:300}.fw4{font-weight:400}.fw5{font-weight:500}.fw6{font-weight:600}.fw7{font-weight:700}.fw8{font-weight:800}.fw9{font-weight:900}.input-reset{-webkit-appearance:none;-moz-appearance:none}.h1{height:1rem}.h2{height:2rem}.h3{height:4rem}.h4{height:8rem}.h5{height:16rem}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.h-inherit{height:inherit}.tracked{letter-spacing:.16em}.tracked-tight{letter-spacing:-.05em}.tracked-mega{letter-spacing:.32em}.lh-solid{line-height:1}.lh-title{line-height:1.3}.lh-copy{line-height:1.6}.link{text-decoration:none}.link,.link:active,.link:focus,.link:hover,.link:link,.link:visited{transition:color .15s ease-in}.list{list-style-type:none}.mw-100{max-width:100%}.mw1{max-width:1rem}.mw2{max-width:2rem}.mw3{max-width:4rem}.mw4{max-width:8rem}.mw5{max-width:16rem}.mw6{max-width:32rem}.mw7{max-width:48rem}.mw8{max-width:64rem}.mw9{max-width:96rem}.mw-none{max-width:none}.w1{width:1rem}.w2{width:2rem}.w3{width:4rem}.w4{width:8rem}.w5{width:16rem}.w-10{width:10%}.w-20{width:20%}.w-25{width:25%}.w-33{width:33%}.w-34{width:34%}.w-40{width:40%}.w-50{width:50%}.w-60{width:60%}.w-75{width:75%}.w-80{width:80%}.w-100{width:100%}.w-auto{width:auto}.overflow-visible{overflow:visible}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.overflow-x-visible{overflow-x:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-visible{overflow-y:visible}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-auto{overflow-y:auto}.static{position:static}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.o-100{opacity:1}.o-90{opacity:.9}.o-80{opacity:.8}.o-70{opacity:.7}.o-60{opacity:.6}.o-50{opacity:.5}.o-40{opacity:.4}.o-30{opacity:.3}.o-20{opacity:.2}.o-10{opacity:.1}.o-05{opacity:.05}.o-025{opacity:.025}.o-0{opacity:0}.black-90{color:rgba(0,0,0,.9)}.black-80{color:rgba(0,0,0,.8)}.black-70{color:rgba(0,0,0,.7)}.black-60{color:rgba(0,0,0,.6)}.black-50{color:rgba(0,0,0,.5)}.black-40{color:rgba(0,0,0,.4)}.black-30{color:rgba(0,0,0,.3)}.black-20{color:rgba(0,0,0,.2)}.black-10{color:rgba(0,0,0,.1)}.black-05{color:rgba(0,0,0,.05)}.white-90{color:hsla(0,0%,100%,.9)}.white-80{color:hsla(0,0%,100%,.8)}.white-70{color:hsla(0,0%,100%,.7)}.white-60{color:hsla(0,0%,100%,.6)}.white-50{color:hsla(0,0%,100%,.5)}.white-40{color:hsla(0,0%,100%,.4)}.white-30{color:hsla(0,0%,100%,.3)}.white-20{color:hsla(0,0%,100%,.2)}.white-10{color:hsla(0,0%,100%,.1)}.black{color:#000}.near-black{color:#111}.dark-gray{color:#333}.mid-gray{color:#555}.gray{color:#777}.silver{color:#999}.light-silver{color:#aaa}.moon-gray{color:#ccc}.light-gray{color:#eee}.near-white{color:#f4f4f4}.white{color:#fff}.dark-red{color:#f00008}.red{color:#ff3223}.orange{color:#f3a801}.gold{color:#f2c800}.yellow{color:#ffde37}.purple{color:#7d5da9}.light-purple{color:#8d4f92}.hot-pink{color:#d62288}.dark-pink{color:#c64774}.pink{color:#f49cc8}.dark-green{color:#006c71}.green{color:#41d69f}.navy{color:#001b44}.dark-blue{color:#00449e}.blue{color:#357edd}.light-blue{color:#96ccff}.lightest-blue{color:#cdecff}.washed-blue{color:#f6fffe}.washed-green{color:#e8fdf5}.washed-yellow{color:#fff8d5}.light-pink{color:#efa4b8}.light-yellow{color:#f3dd70}.light-red{color:#ffd3c0}.bg-black-90{background-color:rgba(0,0,0,.9)}.bg-black-80{background-color:rgba(0,0,0,.8)}.bg-black-70{background-color:rgba(0,0,0,.7)}.bg-black-60{background-color:rgba(0,0,0,.6)}.bg-black-50{background-color:rgba(0,0,0,.5)}.bg-black-40{background-color:rgba(0,0,0,.4)}.bg-black-30{background-color:rgba(0,0,0,.3)}.bg-black-20{background-color:rgba(0,0,0,.2)}.bg-black-10{background-color:rgba(0,0,0,.1)}.bg-black-05{background-color:rgba(0,0,0,.05)}.bg-white-90{background-color:hsla(0,0%,100%,.9)}.bg-white-80{background-color:hsla(0,0%,100%,.8)}.bg-white-70{background-color:hsla(0,0%,100%,.7)}.bg-white-60{background-color:hsla(0,0%,100%,.6)}.bg-white-50{background-color:hsla(0,0%,100%,.5)}.bg-white-40{background-color:hsla(0,0%,100%,.4)}.bg-white-30{background-color:hsla(0,0%,100%,.3)}.bg-white-20{background-color:hsla(0,0%,100%,.2)}.bg-white-10{background-color:hsla(0,0%,100%,.1)}.bg-black{background-color:#000}.bg-near-black{background-color:#111}.bg-dark-gray{background-color:#333}.bg-mid-gray{background-color:#555}.bg-gray{background-color:#777}.bg-silver{background-color:#999}.bg-light-silver{background-color:#aaa}.bg-moon-gray{background-color:#ccc}.bg-light-gray{background-color:#eee}.bg-near-white{background-color:#f4f4f4}.bg-white{background-color:#fff}.bg-transparent{background-color:transparent}.bg-dark-red{background-color:#f00008}.bg-red{background-color:#ff3223}.bg-orange{background-color:#f3a801}.bg-gold{background-color:#f2c800}.bg-yellow{background-color:#ffde37}.bg-purple{background-color:#7d5da9}.bg-light-purple{background-color:#8d4f92}.bg-hot-pink{background-color:#d62288}.bg-dark-pink{background-color:#c64774}.bg-pink{background-color:#f49cc8}.bg-dark-green{background-color:#006c71}.bg-green{background-color:#41d69f}.bg-navy{background-color:#001b44}.bg-dark-blue{background-color:#00449e}.bg-blue{background-color:#357edd}.bg-light-blue{background-color:#96ccff}.bg-lightest-blue{background-color:#cdecff}.bg-washed-blue{background-color:#f6fffe}.bg-washed-green{background-color:#e8fdf5}.bg-washed-yellow{background-color:#fff8d5}.bg-light-pink{background-color:#efa4b8}.bg-light-yellow{background-color:#f3dd70}.bg-light-red{background-color:#ffd3c0}.hover-black:hover{color:#000}.hover-near-black:hover{color:#111}.hover-dark-gray:hover{color:#333}.hover-mid-gray:hover{color:#555}.hover-gray:hover{color:#777}.hover-silver:hover{color:#999}.hover-light-silver:hover{color:#aaa}.hover-moon-gray:hover{color:#ccc}.hover-light-gray:hover{color:#eee}.hover-near-white:hover{color:#f4f4f4}.hover-white:hover{color:#fff}.hover-bg-black:hover{background-color:#000}.hover-bg-near-black:hover{background-color:#111}.hover-bg-dark-gray:hover{background-color:#333}.hover-bg-mid-gray:hover{background-color:#555}.hover-bg-gray:hover{background-color:#777}.hover-bg-silver:hover{background-color:#999}.hover-bg-light-silver:hover{background-color:#aaa}.hover-bg-moon-gray:hover{background-color:#ccc}.hover-bg-light-gray:hover{background-color:#eee}.hover-bg-near-white:hover{background-color:#f4f4f4}.hover-bg-white:hover{background-color:#fff}.hover-bg-transparent:hover{background-color:transparent}.hover-bg-dark-red:hover{background-color:#f00008}.hover-bg-red:hover{background-color:#ff3223}.hover-bg-orange:hover{background-color:#f3a801}.hover-bg-gold:hover{background-color:#f2c800}.hover-bg-yellow:hover{background-color:#ffde37}.hover-bg-purple:hover{background-color:#7d5da9}.hover-bg-light-purple:hover{background-color:#8d4f92}.hover-bg-hot-pink:hover{background-color:#d62288}.hover-bg-dark-pink:hover{background-color:#c64774}.hover-bg-pink:hover{background-color:#f49cc8}.hover-bg-dark-green:hover{background-color:#006c71}.hover-bg-green:hover{background-color:#41d69f}.hover-bg-navy:hover{background-color:#001b44}.hover-bg-dark-blue:hover{background-color:#00449e}.hover-bg-blue:hover{background-color:#357edd}.hover-bg-light-blue:hover{background-color:#96ccff}.hover-bg-lightest-blue:hover{background-color:#cdecff}.hover-bg-washed-blue:hover{background-color:#f6fffe}.hover-bg-washed-green:hover{background-color:#e8fdf5}.hover-bg-washed-yellow:hover{background-color:#fff8d5}.hover-bg-light-pink:hover{background-color:#efa4b8}.hover-bg-light-yellow:hover{background-color:#f3dd70}.hover-bg-light-red:hover{background-color:#ffd3c0}.pa0{padding:0}.pa1{padding:.25rem}.pa2{padding:.5rem}.pa3{padding:1rem}.pa4{padding:2rem}.pa5{padding:4rem}.pa6{padding:8rem}.pa7{padding:16rem}.pl0{padding-left:0}.pl1{padding-left:.25rem}.pl2{padding-left:.5rem}.pl3{padding-left:1rem}.pl4{padding-left:2rem}.pl5{padding-left:4rem}.pl6{padding-left:8rem}.pl7{padding-left:16rem}.pr0{padding-right:0}.pr1{padding-right:.25rem}.pr2{padding-right:.5rem}.pr3{padding-right:1rem}.pr4{padding-right:2rem}.pr5{padding-right:4rem}.pr6{padding-right:8rem}.pr7{padding-right:16rem}.pb0{padding-bottom:0}.pb1{padding-bottom:.25rem}.pb2{padding-bottom:.5rem}.pb3{padding-bottom:1rem}.pb4{padding-bottom:2rem}.pb5{padding-bottom:4rem}.pb6{padding-bottom:8rem}.pb7{padding-bottom:16rem}.pt0{padding-top:0}.pt1{padding-top:.25rem}.pt2{padding-top:.5rem}.pt3{padding-top:1rem}.pt4{padding-top:2rem}.pt5{padding-top:4rem}.pt6{padding-top:8rem}.pt7{padding-top:16rem}.pv0{padding-top:0;padding-bottom:0}.pv1{padding-top:.25rem;padding-bottom:.25rem}.pv2{padding-top:.5rem;padding-bottom:.5rem}.pv3{padding-top:1rem;padding-bottom:1rem}.pv4{padding-top:2rem;padding-bottom:2rem}.pv5{padding-top:4rem;padding-bottom:4rem}.pv6{padding-top:8rem;padding-bottom:8rem}.pv7{padding-top:16rem;padding-bottom:16rem}.ph0{padding-left:0;padding-right:0}.ph1{padding-left:.25rem;padding-right:.25rem}.ph2{padding-left:.5rem;padding-right:.5rem}.ph3{padding-left:1rem;padding-right:1rem}.ph4{padding-left:2rem;padding-right:2rem}.ph5{padding-left:4rem;padding-right:4rem}.ph6{padding-left:8rem;padding-right:8rem}.ph7{padding-left:16rem;padding-right:16rem}.ma0{margin:0}.ma1{margin:.25rem}.ma2{margin:.5rem}.ma3{margin:1rem}.ma4{margin:2rem}.ma5{margin:4rem}.ma6{margin:8rem}.ma7{margin:16rem}.ml0{margin-left:0}.ml1{margin-left:.25rem}.ml2{margin-left:.5rem}.ml3{margin-left:1rem}.ml4{margin-left:2rem}.ml5{margin-left:4rem}.ml6{margin-left:8rem}.ml7{margin-left:16rem}.mr0{margin-right:0}.mr1{margin-right:.25rem}.mr2{margin-right:.5rem}.mr3{margin-right:1rem}.mr4{margin-right:2rem}.mr5{margin-right:4rem}.mr6{margin-right:8rem}.mr7{margin-right:16rem}.mb0{margin-bottom:0}.mb1{margin-bottom:.25rem}.mb2{margin-bottom:.5rem}.mb3{margin-bottom:1rem}.mb4{margin-bottom:2rem}.mb5{margin-bottom:4rem}.mb6{margin-bottom:8rem}.mb7{margin-bottom:16rem}.mt0{margin-top:0}.mt1{margin-top:.25rem}.mt2{margin-top:.5rem}.mt3{margin-top:1rem}.mt4{margin-top:2rem}.mt5{margin-top:4rem}.mt6{margin-top:8rem}.mt7{margin-top:16rem}.mv0{margin-top:0;margin-bottom:0}.mv1{margin-top:.25rem;margin-bottom:.25rem}.mv2{margin-top:.5rem;margin-bottom:.5rem}.mv3{margin-top:1rem;margin-bottom:1rem}.mv4{margin-top:2rem;margin-bottom:2rem}.mv5{margin-top:4rem;margin-bottom:4rem}.mv6{margin-top:8rem;margin-bottom:8rem}.mv7{margin-top:16rem;margin-bottom:16rem}.mh0{margin-left:0;margin-right:0}.mh1{margin-left:.25rem;margin-right:.25rem}.mh2{margin-left:.5rem;margin-right:.5rem}.mh3{margin-left:1rem;margin-right:1rem}.mh4{margin-left:2rem;margin-right:2rem}.mh5{margin-left:4rem;margin-right:4rem}.mh6{margin-left:8rem;margin-right:8rem}.mh7{margin-left:16rem;margin-right:16rem}.collapse{border-collapse:collapse;border-spacing:0}.striped--moon-gray:nth-child(odd){background-color:#aaa;background-color:#ccc}.striped--light-gray:nth-child(odd){background-color:#eee}.striped--near-white:nth-child(odd){background-color:#f4f4f4}.strike{text-decoration:line-through}.underline{text-decoration:underline}.no-underline{text-decoration:none}.tl{text-align:left}.tr{text-align:right}.tc{text-align:center}.ttc{text-transform:capitalize}.ttl{text-transform:lowercase}.ttu{text-transform:uppercase}.ttn{text-transform:none}.f-6,.f-headline{font-size:6rem}.f-5,.f-subheadline{font-size:5rem}.f1{font-size:3rem}.f2{font-size:2.25rem}.f3{font-size:1.5rem}.f4{font-size:1.25rem}.f5{font-size:1rem}.f6{font-size:.875rem}.measure{max-width:30em}.measure-wide{max-width:34em}.measure-narrow{max-width:20em}.indent{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps{font-variant:small-caps}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aspect-ratio{height:0;position:relative}.aspect-ratio--16x9{padding-bottom:56.25%}.aspect-ratio--4x3{padding-bottom:75%}.aspect-ratio--8x5{padding-bottom:62.5%}.aspect-ratio--object{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1}.overflow-container{overflow-y:scroll}.center{margin-right:auto;margin-left:auto}.clip{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal{white-space:normal}.nowrap{white-space:nowrap}.pre{white-space:pre}.v-base{vertical-align:baseline}.v-mid{vertical-align:middle}.v-top{vertical-align:top}.v-btm{vertical-align:bottom}.dim{opacity:1}.dim,.dim:focus,.dim:hover{transition:opacity .15s ease-in}.dim:focus,.dim:hover{opacity:.5}.dim:active{opacity:.8;transition:opacity .15s ease-out}.hide-child .child{opacity:0;transition:opacity .15s ease-in}.hide-child:active .child,.hide-child:focus .child,.hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.underline-hover:focus,.underline-hover:hover{text-decoration:underline}.grow{transition:transform .2s}.grow:hover{transform:scale(1.05)}.grow-large{transition:transform .2s}.grow-large:hover{transform:scale(1.2)}.pointer:hover{cursor:pointer}.debug *{outline:1px solid gold}@media screen and (min-width:30em){.cover-ns{background-size:cover}.contain-ns{background-size:contain}.ba-ns{border-style:solid;border-width:1px}.bt-ns{border-top-style:solid;border-top-width:1px}.br-ns{border-right-style:solid;border-right-width:1px}.bb-ns{border-bottom-style:solid;border-bottom-width:1px}.bl-ns{border-left-style:solid;border-left-width:1px}.bn-ns{border-style:none;border-width:0}.br0-ns{border-radius:0}.br1-ns{border-radius:.125rem}.br2-ns{border-radius:.25rem}.br3-ns{border-radius:.5rem}.br4-ns{border-radius:1rem}.br-100-ns{border-radius:100%}.br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.br--top-ns{border-bottom-right-radius:0}.br--right-ns,.br--top-ns{border-bottom-left-radius:0}.br--right-ns{border-top-left-radius:0}.br--left-ns{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-ns{border-style:dotted}.b--dashed-ns{border-style:dashed}.b--solid-ns{border-style:solid}.b--none-ns{border-style:none}.bw0-ns{border-width:0}.bw1-ns{border-width:.125rem}.bw2-ns{border-width:.25rem}.bw3-ns{border-width:.5rem}.bw4-ns{border-width:1rem}.bw5-ns{border-width:2rem}.bt-0-ns{border-top-width:0}.br-0-ns{border-right-width:0}.bb-0-ns{border-bottom-width:0}.bl-0-ns{border-left-width:0}.shadow-1-ns{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-ns{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-ns{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-ns{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-ns{top:0}.left-0-ns{left:0}.right-0-ns{right:0}.bottom-0-ns{bottom:0}.top-1-ns{top:1rem}.left-1-ns{left:1rem}.right-1-ns{right:1rem}.bottom-1-ns{bottom:1rem}.top-2-ns{top:2rem}.left-2-ns{left:2rem}.right-2-ns{right:2rem}.bottom-2-ns{bottom:2rem}.top--1-ns{top:-1rem}.right--1-ns{right:-1rem}.bottom--1-ns{bottom:-1rem}.left--1-ns{left:-1rem}.top--2-ns{top:-2rem}.right--2-ns{right:-2rem}.bottom--2-ns{bottom:-2rem}.left--2-ns{left:-2rem}.absolute--fill-ns{top:0;right:0;bottom:0;left:0}.cl-ns{clear:left}.cr-ns{clear:right}.cb-ns{clear:both}.cn-ns{clear:none}.dn-ns{display:none}.di-ns{display:inline}.db-ns{display:block}.dib-ns{display:inline-block}.dit-ns{display:inline-table}.dt-ns{display:table}.dtc-ns{display:table-cell}.dt-row-ns{display:table-row}.dt-row-group-ns{display:table-row-group}.dt-column-ns{display:table-column}.dt-column-group-ns{display:table-column-group}.dt--fixed-ns{table-layout:fixed;width:100%}.flex-ns{display:flex}.flex-auto-ns{flex:1 1 auto;min-width:0;min-height:0}.flex-none-ns{flex:none}.flex-column-ns{flex-direction:column}.flex-wrap-ns{flex-wrap:wrap}.items-start-ns{align-items:flex-start}.items-end-ns{align-items:flex-end}.items-center-ns{align-items:center}.items-baseline-ns{align-items:baseline}.items-stretch-ns{align-items:stretch}.self-start-ns{align-self:flex-start}.self-end-ns{align-self:flex-end}.self-center-ns{align-self:center}.self-baseline-ns{align-self:baseline}.self-stretch-ns{align-self:stretch}.justify-start-ns{justify-content:flex-start}.justify-end-ns{justify-content:flex-end}.justify-center-ns{justify-content:center}.justify-between-ns{justify-content:space-between}.justify-around-ns{justify-content:space-around}.content-start-ns{align-content:flex-start}.content-end-ns{align-content:flex-end}.content-center-ns{align-content:center}.content-between-ns{align-content:space-between}.content-around-ns{align-content:space-around}.content-stretch-ns{align-content:stretch}.order-0-ns{order:0}.order-1-ns{order:1}.order-2-ns{order:2}.order-3-ns{order:3}.order-4-ns{order:4}.order-5-ns{order:5}.order-6-ns{order:6}.order-7-ns{order:7}.order-8-ns{order:8}.order-last-ns{order:99999}.fl-ns{float:left}.fl-ns,.fr-ns{display:inline}.fr-ns{float:right}.fn-ns{float:none}.i-ns{font-style:italic}.fs-normal-ns{font-style:normal}.normal-ns{font-weight:400}.b-ns{font-weight:700}.fw1-ns{font-weight:100}.fw2-ns{font-weight:200}.fw3-ns{font-weight:300}.fw4-ns{font-weight:400}.fw5-ns{font-weight:500}.fw6-ns{font-weight:600}.fw7-ns{font-weight:700}.fw8-ns{font-weight:800}.fw9-ns{font-weight:900}.h1-ns{height:1rem}.h2-ns{height:2rem}.h3-ns{height:4rem}.h4-ns{height:8rem}.h5-ns{height:16rem}.h-25-ns{height:25%}.h-50-ns{height:50%}.h-75-ns{height:75%}.h-100-ns{height:100%}.h-auto-ns{height:auto}.h-inherit-ns{height:inherit}.tracked-ns{letter-spacing:.16em}.tracked-tight-ns{letter-spacing:-.05em}.tracked-mega-ns{letter-spacing:.32em}.lh-solid-ns{line-height:1}.lh-title-ns{line-height:1.3}.lh-copy-ns{line-height:1.6}.mw-100-ns{max-width:100%}.mw1-ns{max-width:1rem}.mw2-ns{max-width:2rem}.mw3-ns{max-width:4rem}.mw4-ns{max-width:8rem}.mw5-ns{max-width:16rem}.mw6-ns{max-width:32rem}.mw7-ns{max-width:48rem}.mw8-ns{max-width:64rem}.mw9-ns{max-width:96rem}.mw-none-ns{max-width:none}.w1-ns{width:1rem}.w2-ns{width:2rem}.w3-ns{width:4rem}.w4-ns{width:8rem}.w5-ns{width:16rem}.w-10-ns{width:10%}.w-20-ns{width:20%}.w-25-ns{width:25%}.w-33-ns{width:33%}.w-34-ns{width:34%}.w-40-ns{width:40%}.w-50-ns{width:50%}.w-60-ns{width:60%}.w-75-ns{width:75%}.w-80-ns{width:80%}.w-100-ns{width:100%}.w-auto-ns{width:auto}.overflow-visible-ns{overflow:visible}.overflow-hidden-ns{overflow:hidden}.overflow-scroll-ns{overflow:scroll}.overflow-auto-ns{overflow:auto}.overflow-x-visible-ns{overflow-x:visible}.overflow-x-hidden-ns{overflow-x:hidden}.overflow-x-scroll-ns{overflow-x:scroll}.overflow-x-auto-ns{overflow-x:auto}.overflow-y-visible-ns{overflow-y:visible}.overflow-y-hidden-ns{overflow-y:hidden}.overflow-y-scroll-ns{overflow-y:scroll}.overflow-y-auto-ns{overflow-y:auto}.static-ns{position:static}.relative-ns{position:relative}.absolute-ns{position:absolute}.fixed-ns{position:fixed}.pa0-ns{padding:0}.pa1-ns{padding:.25rem}.pa2-ns{padding:.5rem}.pa3-ns{padding:1rem}.pa4-ns{padding:2rem}.pa5-ns{padding:4rem}.pa6-ns{padding:8rem}.pa7-ns{padding:16rem}.pl0-ns{padding-left:0}.pl1-ns{padding-left:.25rem}.pl2-ns{padding-left:.5rem}.pl3-ns{padding-left:1rem}.pl4-ns{padding-left:2rem}.pl5-ns{padding-left:4rem}.pl6-ns{padding-left:8rem}.pl7-ns{padding-left:16rem}.pr0-ns{padding-right:0}.pr1-ns{padding-right:.25rem}.pr2-ns{padding-right:.5rem}.pr3-ns{padding-right:1rem}.pr4-ns{padding-right:2rem}.pr5-ns{padding-right:4rem}.pr6-ns{padding-right:8rem}.pr7-ns{padding-right:16rem}.pb0-ns{padding-bottom:0}.pb1-ns{padding-bottom:.25rem}.pb2-ns{padding-bottom:.5rem}.pb3-ns{padding-bottom:1rem}.pb4-ns{padding-bottom:2rem}.pb5-ns{padding-bottom:4rem}.pb6-ns{padding-bottom:8rem}.pb7-ns{padding-bottom:16rem}.pt0-ns{padding-top:0}.pt1-ns{padding-top:.25rem}.pt2-ns{padding-top:.5rem}.pt3-ns{padding-top:1rem}.pt4-ns{padding-top:2rem}.pt5-ns{padding-top:4rem}.pt6-ns{padding-top:8rem}.pt7-ns{padding-top:16rem}.pv0-ns{padding-top:0;padding-bottom:0}.pv1-ns{padding-top:.25rem;padding-bottom:.25rem}.pv2-ns{padding-top:.5rem;padding-bottom:.5rem}.pv3-ns{padding-top:1rem;padding-bottom:1rem}.pv4-ns{padding-top:2rem;padding-bottom:2rem}.pv5-ns{padding-top:4rem;padding-bottom:4rem}.pv6-ns{padding-top:8rem;padding-bottom:8rem}.pv7-ns{padding-top:16rem;padding-bottom:16rem}.ph0-ns{padding-left:0;padding-right:0}.ph1-ns{padding-left:.25rem;padding-right:.25rem}.ph2-ns{padding-left:.5rem;padding-right:.5rem}.ph3-ns{padding-left:1rem;padding-right:1rem}.ph4-ns{padding-left:2rem;padding-right:2rem}.ph5-ns{padding-left:4rem;padding-right:4rem}.ph6-ns{padding-left:8rem;padding-right:8rem}.ph7-ns{padding-left:16rem;padding-right:16rem}.ma0-ns{margin:0}.ma1-ns{margin:.25rem}.ma2-ns{margin:.5rem}.ma3-ns{margin:1rem}.ma4-ns{margin:2rem}.ma5-ns{margin:4rem}.ma6-ns{margin:8rem}.ma7-ns{margin:16rem}.ml0-ns{margin-left:0}.ml1-ns{margin-left:.25rem}.ml2-ns{margin-left:.5rem}.ml3-ns{margin-left:1rem}.ml4-ns{margin-left:2rem}.ml5-ns{margin-left:4rem}.ml6-ns{margin-left:8rem}.ml7-ns{margin-left:16rem}.mr0-ns{margin-right:0}.mr1-ns{margin-right:.25rem}.mr2-ns{margin-right:.5rem}.mr3-ns{margin-right:1rem}.mr4-ns{margin-right:2rem}.mr5-ns{margin-right:4rem}.mr6-ns{margin-right:8rem}.mr7-ns{margin-right:16rem}.mb0-ns{margin-bottom:0}.mb1-ns{margin-bottom:.25rem}.mb2-ns{margin-bottom:.5rem}.mb3-ns{margin-bottom:1rem}.mb4-ns{margin-bottom:2rem}.mb5-ns{margin-bottom:4rem}.mb6-ns{margin-bottom:8rem}.mb7-ns{margin-bottom:16rem}.mt0-ns{margin-top:0}.mt1-ns{margin-top:.25rem}.mt2-ns{margin-top:.5rem}.mt3-ns{margin-top:1rem}.mt4-ns{margin-top:2rem}.mt5-ns{margin-top:4rem}.mt6-ns{margin-top:8rem}.mt7-ns{margin-top:16rem}.mv0-ns{margin-top:0;margin-bottom:0}.mv1-ns{margin-top:.25rem;margin-bottom:.25rem}.mv2-ns{margin-top:.5rem;margin-bottom:.5rem}.mv3-ns{margin-top:1rem;margin-bottom:1rem}.mv4-ns{margin-top:2rem;margin-bottom:2rem}.mv5-ns{margin-top:4rem;margin-bottom:4rem}.mv6-ns{margin-top:8rem;margin-bottom:8rem}.mv7-ns{margin-top:16rem;margin-bottom:16rem}.mh0-ns{margin-left:0;margin-right:0}.mh1-ns{margin-left:.25rem;margin-right:.25rem}.mh2-ns{margin-left:.5rem;margin-right:.5rem}.mh3-ns{margin-left:1rem;margin-right:1rem}.mh4-ns{margin-left:2rem;margin-right:2rem}.mh5-ns{margin-left:4rem;margin-right:4rem}.mh6-ns{margin-left:8rem;margin-right:8rem}.mh7-ns{margin-left:16rem;margin-right:16rem}.strike-ns{text-decoration:line-through}.underline-ns{text-decoration:underline}.no-underline-ns{text-decoration:none}.tl-ns{text-align:left}.tr-ns{text-align:right}.tc-ns{text-align:center}.ttc-ns{text-transform:capitalize}.ttl-ns{text-transform:lowercase}.ttu-ns{text-transform:uppercase}.ttn-ns{text-transform:none}.f-6-ns,.f-headline-ns{font-size:6rem}.f-5-ns,.f-subheadline-ns{font-size:5rem}.f1-ns{font-size:3rem}.f2-ns{font-size:2.25rem}.f3-ns{font-size:1.5rem}.f4-ns{font-size:1.25rem}.f5-ns{font-size:1rem}.f6-ns{font-size:.875rem}.measure-ns{max-width:30em}.measure-wide-ns{max-width:34em}.measure-narrow-ns{max-width:20em}.indent-ns{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-ns{font-variant:small-caps}.truncate-ns{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clip-ns{position:fixed!important;position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-ns{white-space:normal}.nowrap-ns{white-space:nowrap}.pre-ns{white-space:pre}.v-base-ns{vertical-align:baseline}.v-mid-ns{vertical-align:middle}.v-top-ns{vertical-align:top}.v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.cover-m{background-size:cover}.contain-m{background-size:contain}.ba-m{border-style:solid;border-width:1px}.bt-m{border-top-style:solid;border-top-width:1px}.br-m{border-right-style:solid;border-right-width:1px}.bb-m{border-bottom-style:solid;border-bottom-width:1px}.bl-m{border-left-style:solid;border-left-width:1px}.bn-m{border-style:none;border-width:0}.br0-m{border-radius:0}.br1-m{border-radius:.125rem}.br2-m{border-radius:.25rem}.br3-m{border-radius:.5rem}.br4-m{border-radius:1rem}.br-100-m{border-radius:100%}.br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.br--top-m{border-bottom-right-radius:0}.br--right-m,.br--top-m{border-bottom-left-radius:0}.br--right-m{border-top-left-radius:0}.br--left-m{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-m{border-style:dotted}.b--dashed-m{border-style:dashed}.b--solid-m{border-style:solid}.b--none-m{border-style:none}.bw0-m{border-width:0}.bw1-m{border-width:.125rem}.bw2-m{border-width:.25rem}.bw3-m{border-width:.5rem}.bw4-m{border-width:1rem}.bw5-m{border-width:2rem}.bt-0-m{border-top-width:0}.br-0-m{border-right-width:0}.bb-0-m{border-bottom-width:0}.bl-0-m{border-left-width:0}.shadow-1-m{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-m{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-m{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-m{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-m{top:0}.left-0-m{left:0}.right-0-m{right:0}.bottom-0-m{bottom:0}.top-1-m{top:1rem}.left-1-m{left:1rem}.right-1-m{right:1rem}.bottom-1-m{bottom:1rem}.top-2-m{top:2rem}.left-2-m{left:2rem}.right-2-m{right:2rem}.bottom-2-m{bottom:2rem}.top--1-m{top:-1rem}.right--1-m{right:-1rem}.bottom--1-m{bottom:-1rem}.left--1-m{left:-1rem}.top--2-m{top:-2rem}.right--2-m{right:-2rem}.bottom--2-m{bottom:-2rem}.left--2-m{left:-2rem}.absolute--fill-m{top:0;right:0;bottom:0;left:0}.cl-m{clear:left}.cr-m{clear:right}.cb-m{clear:both}.cn-m{clear:none}.dn-m{display:none}.di-m{display:inline}.db-m{display:block}.dib-m{display:inline-block}.dit-m{display:inline-table}.dt-m{display:table}.dtc-m{display:table-cell}.dt-row-m{display:table-row}.dt-row-group-m{display:table-row-group}.dt-column-m{display:table-column}.dt-column-group-m{display:table-column-group}.dt--fixed-m{table-layout:fixed;width:100%}.flex-m{display:flex}.flex-auto-m{flex:1 1 auto;min-width:0;min-height:0}.flex-none-m{flex:none}.flex-column-m{flex-direction:column}.flex-wrap-m{flex-wrap:wrap}.items-start-m{align-items:flex-start}.items-end-m{align-items:flex-end}.items-center-m{align-items:center}.items-baseline-m{align-items:baseline}.items-stretch-m{align-items:stretch}.self-start-m{align-self:flex-start}.self-end-m{align-self:flex-end}.self-center-m{align-self:center}.self-baseline-m{align-self:baseline}.self-stretch-m{align-self:stretch}.justify-start-m{justify-content:flex-start}.justify-end-m{justify-content:flex-end}.justify-center-m{justify-content:center}.justify-between-m{justify-content:space-between}.justify-around-m{justify-content:space-around}.content-start-m{align-content:flex-start}.content-end-m{align-content:flex-end}.content-center-m{align-content:center}.content-between-m{align-content:space-between}.content-around-m{align-content:space-around}.content-stretch-m{align-content:stretch}.order-0-m{order:0}.order-1-m{order:1}.order-2-m{order:2}.order-3-m{order:3}.order-4-m{order:4}.order-5-m{order:5}.order-6-m{order:6}.order-7-m{order:7}.order-8-m{order:8}.order-last-m{order:99999}.fl-m{float:left}.fl-m,.fr-m{display:inline}.fr-m{float:right}.fn-m{float:none}.i-m{font-style:italic}.fs-normal-m{font-style:normal}.normal-m{font-weight:400}.b-m{font-weight:700}.fw1-m{font-weight:100}.fw2-m{font-weight:200}.fw3-m{font-weight:300}.fw4-m{font-weight:400}.fw5-m{font-weight:500}.fw6-m{font-weight:600}.fw7-m{font-weight:700}.fw8-m{font-weight:800}.fw9-m{font-weight:900}.h1-m{height:1rem}.h2-m{height:2rem}.h3-m{height:4rem}.h4-m{height:8rem}.h5-m{height:16rem}.h-25-m{height:25%}.h-50-m{height:50%}.h-75-m{height:75%}.h-100-m{height:100%}.h-auto-m{height:auto}.h-inherit-m{height:inherit}.tracked-m{letter-spacing:.16em}.tracked-tight-m{letter-spacing:-.05em}.tracked-mega-m{letter-spacing:.32em}.lh-solid-m{line-height:1}.lh-title-m{line-height:1.3}.lh-copy-m{line-height:1.6}.mw-100-m{max-width:100%}.mw1-m{max-width:1rem}.mw2-m{max-width:2rem}.mw3-m{max-width:4rem}.mw4-m{max-width:8rem}.mw5-m{max-width:16rem}.mw6-m{max-width:32rem}.mw7-m{max-width:48rem}.mw8-m{max-width:64rem}.mw9-m{max-width:96rem}.mw-none-m{max-width:none}.w1-m{width:1rem}.w2-m{width:2rem}.w3-m{width:4rem}.w4-m{width:8rem}.w5-m{width:16rem}.w-10-m{width:10%}.w-20-m{width:20%}.w-25-m{width:25%}.w-33-m{width:33%}.w-34-m{width:34%}.w-40-m{width:40%}.w-50-m{width:50%}.w-60-m{width:60%}.w-75-m{width:75%}.w-80-m{width:80%}.w-100-m{width:100%}.w-auto-m{width:auto}.overflow-visible-m{overflow:visible}.overflow-hidden-m{overflow:hidden}.overflow-scroll-m{overflow:scroll}.overflow-auto-m{overflow:auto}.overflow-x-visible-m{overflow-x:visible}.overflow-x-hidden-m{overflow-x:hidden}.overflow-x-scroll-m{overflow-x:scroll}.overflow-x-auto-m{overflow-x:auto}.overflow-y-visible-m{overflow-y:visible}.overflow-y-hidden-m{overflow-y:hidden}.overflow-y-scroll-m{overflow-y:scroll}.overflow-y-auto-m{overflow-y:auto}.static-m{position:static}.relative-m{position:relative}.absolute-m{position:absolute}.fixed-m{position:fixed}.pa0-m{padding:0}.pa1-m{padding:.25rem}.pa2-m{padding:.5rem}.pa3-m{padding:1rem}.pa4-m{padding:2rem}.pa5-m{padding:4rem}.pa6-m{padding:8rem}.pa7-m{padding:16rem}.pl0-m{padding-left:0}.pl1-m{padding-left:.25rem}.pl2-m{padding-left:.5rem}.pl3-m{padding-left:1rem}.pl4-m{padding-left:2rem}.pl5-m{padding-left:4rem}.pl6-m{padding-left:8rem}.pl7-m{padding-left:16rem}.pr0-m{padding-right:0}.pr1-m{padding-right:.25rem}.pr2-m{padding-right:.5rem}.pr3-m{padding-right:1rem}.pr4-m{padding-right:2rem}.pr5-m{padding-right:4rem}.pr6-m{padding-right:8rem}.pr7-m{padding-right:16rem}.pb0-m{padding-bottom:0}.pb1-m{padding-bottom:.25rem}.pb2-m{padding-bottom:.5rem}.pb3-m{padding-bottom:1rem}.pb4-m{padding-bottom:2rem}.pb5-m{padding-bottom:4rem}.pb6-m{padding-bottom:8rem}.pb7-m{padding-bottom:16rem}.pt0-m{padding-top:0}.pt1-m{padding-top:.25rem}.pt2-m{padding-top:.5rem}.pt3-m{padding-top:1rem}.pt4-m{padding-top:2rem}.pt5-m{padding-top:4rem}.pt6-m{padding-top:8rem}.pt7-m{padding-top:16rem}.pv0-m{padding-top:0;padding-bottom:0}.pv1-m{padding-top:.25rem;padding-bottom:.25rem}.pv2-m{padding-top:.5rem;padding-bottom:.5rem}.pv3-m{padding-top:1rem;padding-bottom:1rem}.pv4-m{padding-top:2rem;padding-bottom:2rem}.pv5-m{padding-top:4rem;padding-bottom:4rem}.pv6-m{padding-top:8rem;padding-bottom:8rem}.pv7-m{padding-top:16rem;padding-bottom:16rem}.ph0-m{padding-left:0;padding-right:0}.ph1-m{padding-left:.25rem;padding-right:.25rem}.ph2-m{padding-left:.5rem;padding-right:.5rem}.ph3-m{padding-left:1rem;padding-right:1rem}.ph4-m{padding-left:2rem;padding-right:2rem}.ph5-m{padding-left:4rem;padding-right:4rem}.ph6-m{padding-left:8rem;padding-right:8rem}.ph7-m{padding-left:16rem;padding-right:16rem}.ma0-m{margin:0}.ma1-m{margin:.25rem}.ma2-m{margin:.5rem}.ma3-m{margin:1rem}.ma4-m{margin:2rem}.ma5-m{margin:4rem}.ma6-m{margin:8rem}.ma7-m{margin:16rem}.ml0-m{margin-left:0}.ml1-m{margin-left:.25rem}.ml2-m{margin-left:.5rem}.ml3-m{margin-left:1rem}.ml4-m{margin-left:2rem}.ml5-m{margin-left:4rem}.ml6-m{margin-left:8rem}.ml7-m{margin-left:16rem}.mr0-m{margin-right:0}.mr1-m{margin-right:.25rem}.mr2-m{margin-right:.5rem}.mr3-m{margin-right:1rem}.mr4-m{margin-right:2rem}.mr5-m{margin-right:4rem}.mr6-m{margin-right:8rem}.mr7-m{margin-right:16rem}.mb0-m{margin-bottom:0}.mb1-m{margin-bottom:.25rem}.mb2-m{margin-bottom:.5rem}.mb3-m{margin-bottom:1rem}.mb4-m{margin-bottom:2rem}.mb5-m{margin-bottom:4rem}.mb6-m{margin-bottom:8rem}.mb7-m{margin-bottom:16rem}.mt0-m{margin-top:0}.mt1-m{margin-top:.25rem}.mt2-m{margin-top:.5rem}.mt3-m{margin-top:1rem}.mt4-m{margin-top:2rem}.mt5-m{margin-top:4rem}.mt6-m{margin-top:8rem}.mt7-m{margin-top:16rem}.mv0-m{margin-top:0;margin-bottom:0}.mv1-m{margin-top:.25rem;margin-bottom:.25rem}.mv2-m{margin-top:.5rem;margin-bottom:.5rem}.mv3-m{margin-top:1rem;margin-bottom:1rem}.mv4-m{margin-top:2rem;margin-bottom:2rem}.mv5-m{margin-top:4rem;margin-bottom:4rem}.mv6-m{margin-top:8rem;margin-bottom:8rem}.mv7-m{margin-top:16rem;margin-bottom:16rem}.mh0-m{margin-left:0;margin-right:0}.mh1-m{margin-left:.25rem;margin-right:.25rem}.mh2-m{margin-left:.5rem;margin-right:.5rem}.mh3-m{margin-left:1rem;margin-right:1rem}.mh4-m{margin-left:2rem;margin-right:2rem}.mh5-m{margin-left:4rem;margin-right:4rem}.mh6-m{margin-left:8rem;margin-right:8rem}.mh7-m{margin-left:16rem;margin-right:16rem}.strike-m{text-decoration:line-through}.underline-m{text-decoration:underline}.no-underline-m{text-decoration:none}.tl-m{text-align:left}.tr-m{text-align:right}.tc-m{text-align:center}.ttc-m{text-transform:capitalize}.ttl-m{text-transform:lowercase}.ttu-m{text-transform:uppercase}.ttn-m{text-transform:none}.f-6-m,.f-headline-m{font-size:6rem}.f-5-m,.f-subheadline-m{font-size:5rem}.f1-m{font-size:3rem}.f2-m{font-size:2.25rem}.f3-m{font-size:1.5rem}.f4-m{font-size:1.25rem}.f5-m{font-size:1rem}.f6-m{font-size:.875rem}.measure-m{max-width:30em}.measure-wide-m{max-width:34em}.measure-narrow-m{max-width:20em}.indent-m{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-m{font-variant:small-caps}.truncate-m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clip-m{position:fixed!important;position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-m{white-space:normal}.nowrap-m{white-space:nowrap}.pre-m{white-space:pre}.v-base-m{vertical-align:baseline}.v-mid-m{vertical-align:middle}.v-top-m{vertical-align:top}.v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.cover-l{background-size:cover}.contain-l{background-size:contain}.ba-l{border-style:solid;border-width:1px}.bt-l{border-top-style:solid;border-top-width:1px}.br-l{border-right-style:solid;border-right-width:1px}.bb-l{border-bottom-style:solid;border-bottom-width:1px}.bl-l{border-left-style:solid;border-left-width:1px}.bn-l{border-style:none;border-width:0}.br0-l{border-radius:0}.br1-l{border-radius:.125rem}.br2-l{border-radius:.25rem}.br3-l{border-radius:.5rem}.br4-l{border-radius:1rem}.br-100-l{border-radius:100%}.br--bottom-l{border-radius-top-left:0;border-radius-top-right:0}.br--top-l{border-bottom-right-radius:0}.br--right-l,.br--top-l{border-bottom-left-radius:0}.br--right-l{border-top-left-radius:0}.br--left-l{border-top-right-radius:0;border-bottom-right-radius:0}.b--dotted-l{border-style:dotted}.b--dashed-l{border-style:dashed}.b--solid-l{border-style:solid}.b--none-l{border-style:none}.bw0-l{border-width:0}.bw1-l{border-width:.125rem}.bw2-l{border-width:.25rem}.bw3-l{border-width:.5rem}.bw4-l{border-width:1rem}.bw5-l{border-width:2rem}.bt-0-l{border-top-width:0}.br-0-l{border-right-width:0}.bb-0-l{border-bottom-width:0}.bl-0-l{border-left-width:0}.shadow-1-l{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-l{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-l{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-l{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}.top-0-l{top:0}.left-0-l{left:0}.right-0-l{right:0}.bottom-0-l{bottom:0}.top-1-l{top:1rem}.left-1-l{left:1rem}.right-1-l{right:1rem}.bottom-1-l{bottom:1rem}.top-2-l{top:2rem}.left-2-l{left:2rem}.right-2-l{right:2rem}.bottom-2-l{bottom:2rem}.top--1-l{top:-1rem}.right--1-l{right:-1rem}.bottom--1-l{bottom:-1rem}.left--1-l{left:-1rem}.top--2-l{top:-2rem}.right--2-l{right:-2rem}.bottom--2-l{bottom:-2rem}.left--2-l{left:-2rem}.absolute--fill-l{top:0;right:0;bottom:0;left:0}.cl-l{clear:left}.cr-l{clear:right}.cb-l{clear:both}.cn-l{clear:none}.dn-l{display:none}.di-l{display:inline}.db-l{display:block}.dib-l{display:inline-block}.dit-l{display:inline-table}.dt-l{display:table}.dtc-l{display:table-cell}.dt-row-l{display:table-row}.dt-row-group-l{display:table-row-group}.dt-column-l{display:table-column}.dt-column-group-l{display:table-column-group}.dt--fixed-l{table-layout:fixed;width:100%}.flex-l{display:flex}.flex-auto-l{flex:1 1 auto;min-width:0;min-height:0}.flex-none-l{flex:none}.flex-column-l{flex-direction:column}.flex-wrap-l{flex-wrap:wrap}.items-start-l{align-items:flex-start}.items-end-l{align-items:flex-end}.items-center-l{align-items:center}.items-baseline-l{align-items:baseline}.items-stretch-l{align-items:stretch}.self-start-l{align-self:flex-start}.self-end-l{align-self:flex-end}.self-center-l{align-self:center}.self-baseline-l{align-self:baseline}.self-stretch-l{align-self:stretch}.justify-start-l{justify-content:flex-start}.justify-end-l{justify-content:flex-end}.justify-center-l{justify-content:center}.justify-between-l{justify-content:space-between}.justify-around-l{justify-content:space-around}.content-start-l{align-content:flex-start}.content-end-l{align-content:flex-end}.content-center-l{align-content:center}.content-between-l{align-content:space-between}.content-around-l{align-content:space-around}.content-stretch-l{align-content:stretch}.order-0-l{order:0}.order-1-l{order:1}.order-2-l{order:2}.order-3-l{order:3}.order-4-l{order:4}.order-5-l{order:5}.order-6-l{order:6}.order-7-l{order:7}.order-8-l{order:8}.order-last-l{order:99999}.fl-l{float:left}.fl-l,.fr-l{display:inline}.fr-l{float:right}.fn-l{float:none}.i-l{font-style:italic}.fs-normal-l{font-style:normal}.normal-l{font-weight:400}.b-l{font-weight:700}.fw1-l{font-weight:100}.fw2-l{font-weight:200}.fw3-l{font-weight:300}.fw4-l{font-weight:400}.fw5-l{font-weight:500}.fw6-l{font-weight:600}.fw7-l{font-weight:700}.fw8-l{font-weight:800}.fw9-l{font-weight:900}.h1-l{height:1rem}.h2-l{height:2rem}.h3-l{height:4rem}.h4-l{height:8rem}.h5-l{height:16rem}.h-25-l{height:25%}.h-50-l{height:50%}.h-75-l{height:75%}.h-100-l{height:100%}.h-auto-l{height:auto}.h-inherit-l{height:inherit}.tracked-l{letter-spacing:.16em}.tracked-tight-l{letter-spacing:-.05em}.tracked-mega-l{letter-spacing:.32em}.lh-solid-l{line-height:1}.lh-title-l{line-height:1.3}.lh-copy-l{line-height:1.6}.mw-100-l{max-width:100%}.mw1-l{max-width:1rem}.mw2-l{max-width:2rem}.mw3-l{max-width:4rem}.mw4-l{max-width:8rem}.mw5-l{max-width:16rem}.mw6-l{max-width:32rem}.mw7-l{max-width:48rem}.mw8-l{max-width:64rem}.mw9-l{max-width:96rem}.mw-none-l{max-width:none}.w1-l{width:1rem}.w2-l{width:2rem}.w3-l{width:4rem}.w4-l{width:8rem}.w5-l{width:16rem}.w-10-l{width:10%}.w-20-l{width:20%}.w-25-l{width:25%}.w-33-l{width:33%}.w-34-l{width:34%}.w-40-l{width:40%}.w-50-l{width:50%}.w-60-l{width:60%}.w-75-l{width:75%}.w-80-l{width:80%}.w-100-l{width:100%}.w-auto-l{width:auto}.overflow-visible-l{overflow:visible}.overflow-hidden-l{overflow:hidden}.overflow-scroll-l{overflow:scroll}.overflow-auto-l{overflow:auto}.overflow-x-visible-l{overflow-x:visible}.overflow-x-hidden-l{overflow-x:hidden}.overflow-x-scroll-l{overflow-x:scroll}.overflow-x-auto-l{overflow-x:auto}.overflow-y-visible-l{overflow-y:visible}.overflow-y-hidden-l{overflow-y:hidden}.overflow-y-scroll-l{overflow-y:scroll}.overflow-y-auto-l{overflow-y:auto}.static-l{position:static}.relative-l{position:relative}.absolute-l{position:absolute}.fixed-l{position:fixed}.pa0-l{padding:0}.pa1-l{padding:.25rem}.pa2-l{padding:.5rem}.pa3-l{padding:1rem}.pa4-l{padding:2rem}.pa5-l{padding:4rem}.pa6-l{padding:8rem}.pa7-l{padding:16rem}.pl0-l{padding-left:0}.pl1-l{padding-left:.25rem}.pl2-l{padding-left:.5rem}.pl3-l{padding-left:1rem}.pl4-l{padding-left:2rem}.pl5-l{padding-left:4rem}.pl6-l{padding-left:8rem}.pl7-l{padding-left:16rem}.pr0-l{padding-right:0}.pr1-l{padding-right:.25rem}.pr2-l{padding-right:.5rem}.pr3-l{padding-right:1rem}.pr4-l{padding-right:2rem}.pr5-l{padding-right:4rem}.pr6-l{padding-right:8rem}.pr7-l{padding-right:16rem}.pb0-l{padding-bottom:0}.pb1-l{padding-bottom:.25rem}.pb2-l{padding-bottom:.5rem}.pb3-l{padding-bottom:1rem}.pb4-l{padding-bottom:2rem}.pb5-l{padding-bottom:4rem}.pb6-l{padding-bottom:8rem}.pb7-l{padding-bottom:16rem}.pt0-l{padding-top:0}.pt1-l{padding-top:.25rem}.pt2-l{padding-top:.5rem}.pt3-l{padding-top:1rem}.pt4-l{padding-top:2rem}.pt5-l{padding-top:4rem}.pt6-l{padding-top:8rem}.pt7-l{padding-top:16rem}.pv0-l{padding-top:0;padding-bottom:0}.pv1-l{padding-top:.25rem;padding-bottom:.25rem}.pv2-l{padding-top:.5rem;padding-bottom:.5rem}.pv3-l{padding-top:1rem;padding-bottom:1rem}.pv4-l{padding-top:2rem;padding-bottom:2rem}.pv5-l{padding-top:4rem;padding-bottom:4rem}.pv6-l{padding-top:8rem;padding-bottom:8rem}.pv7-l{padding-top:16rem;padding-bottom:16rem}.ph0-l{padding-left:0;padding-right:0}.ph1-l{padding-left:.25rem;padding-right:.25rem}.ph2-l{padding-left:.5rem;padding-right:.5rem}.ph3-l{padding-left:1rem;padding-right:1rem}.ph4-l{padding-left:2rem;padding-right:2rem}.ph5-l{padding-left:4rem;padding-right:4rem}.ph6-l{padding-left:8rem;padding-right:8rem}.ph7-l{padding-left:16rem;padding-right:16rem}.ma0-l{margin:0}.ma1-l{margin:.25rem}.ma2-l{margin:.5rem}.ma3-l{margin:1rem}.ma4-l{margin:2rem}.ma5-l{margin:4rem}.ma6-l{margin:8rem}.ma7-l{margin:16rem}.ml0-l{margin-left:0}.ml1-l{margin-left:.25rem}.ml2-l{margin-left:.5rem}.ml3-l{margin-left:1rem}.ml4-l{margin-left:2rem}.ml5-l{margin-left:4rem}.ml6-l{margin-left:8rem}.ml7-l{margin-left:16rem}.mr0-l{margin-right:0}.mr1-l{margin-right:.25rem}.mr2-l{margin-right:.5rem}.mr3-l{margin-right:1rem}.mr4-l{margin-right:2rem}.mr5-l{margin-right:4rem}.mr6-l{margin-right:8rem}.mr7-l{margin-right:16rem}.mb0-l{margin-bottom:0}.mb1-l{margin-bottom:.25rem}.mb2-l{margin-bottom:.5rem}.mb3-l{margin-bottom:1rem}.mb4-l{margin-bottom:2rem}.mb5-l{margin-bottom:4rem}.mb6-l{margin-bottom:8rem}.mb7-l{margin-bottom:16rem}.mt0-l{margin-top:0}.mt1-l{margin-top:.25rem}.mt2-l{margin-top:.5rem}.mt3-l{margin-top:1rem}.mt4-l{margin-top:2rem}.mt5-l{margin-top:4rem}.mt6-l{margin-top:8rem}.mt7-l{margin-top:16rem}.mv0-l{margin-top:0;margin-bottom:0}.mv1-l{margin-top:.25rem;margin-bottom:.25rem}.mv2-l{margin-top:.5rem;margin-bottom:.5rem}.mv3-l{margin-top:1rem;margin-bottom:1rem}.mv4-l{margin-top:2rem;margin-bottom:2rem}.mv5-l{margin-top:4rem;margin-bottom:4rem}.mv6-l{margin-top:8rem;margin-bottom:8rem}.mv7-l{margin-top:16rem;margin-bottom:16rem}.mh0-l{margin-left:0;margin-right:0}.mh1-l{margin-left:.25rem;margin-right:.25rem}.mh2-l{margin-left:.5rem;margin-right:.5rem}.mh3-l{margin-left:1rem;margin-right:1rem}.mh4-l{margin-left:2rem;margin-right:2rem}.mh5-l{margin-left:4rem;margin-right:4rem}.mh6-l{margin-left:8rem;margin-right:8rem}.mh7-l{margin-left:16rem;margin-right:16rem}.strike-l{text-decoration:line-through}.underline-l{text-decoration:underline}.no-underline-l{text-decoration:none}.tl-l{text-align:left}.tr-l{text-align:right}.tc-l{text-align:center}.ttc-l{text-transform:capitalize}.ttl-l{text-transform:lowercase}.ttu-l{text-transform:uppercase}.ttn-l{text-transform:none}.f-6-l,.f-headline-l{font-size:6rem}.f-5-l,.f-subheadline-l{font-size:5rem}.f1-l{font-size:3rem}.f2-l{font-size:2.25rem}.f3-l{font-size:1.5rem}.f4-l{font-size:1.25rem}.f5-l{font-size:1rem}.f6-l{font-size:.875rem}.measure-l{max-width:30em}.measure-wide-l{max-width:34em}.measure-narrow-l{max-width:20em}.indent-l{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-l{font-variant:small-caps}.truncate-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.clip-l{position:fixed!important;position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ws-normal-l{white-space:normal}.nowrap-l{white-space:nowrap}.pre-l{white-space:pre}.v-base-l{vertical-align:baseline}.v-mid-l{vertical-align:middle}.v-top-l{vertical-align:top}.v-btm-l{vertical-align:bottom}} - diff --git a/routes/index.js b/routes/index.js deleted file mode 100644 index 42af1dfb..00000000 --- a/routes/index.js +++ /dev/null @@ -1,105 +0,0 @@ -"use strict"; - -const express = require("express"); -const router = express.Router(); -const browserslist = require("browserslist"); -const bv = require("browserslist/package.json").version; -const cv = require("caniuse-db/package.json").version; -const caniuse = require("caniuse-db/data.json").agents; - -let caniuseRegion; - -function getCoverage(data, version) { - const lastVersion = Object.keys(data).sort((a, b) => { - return parseInt(b) - parseInt(a); - })[0]; - // If specific version coverage is missing, fall back to "version zero" - return data[version] !== undefined ? data[version] : data[lastVersion]; -} - -function getRegionCoverage(region, id, version) { - if (!caniuseRegion) { - caniuseRegion = require(`caniuse-db/region-usage-json/${region}.json`); - } - - return getCoverage(caniuseRegion.data[id], version); -} - -/* GET home page. */ -router.get("/", (req, res) => { - const query = req.query.q || "defaults"; - const queryHasIn = query.match(/ in ((?:alt-)?[A-Za-z]{2})(?:,|$)/); - - const region = queryHasIn ? queryHasIn[1] : undefined; - - let bl = null; - try { - // Remove quotes to allow users to copy multiline strings, - // e.g., from their package.json file. - const queryWithoutQuotes = query.replace(/"/g, ""); - bl = browserslist(queryWithoutQuotes); - } catch (e) { - // Error - return res.render("index", { - compatible: null, - query, - description: - "A page to display compatible browsers from a browserslist string.", - error: e, - }); - } - - const compatible = {}; - - if (bl) { - bl.map((b) => { - b = b.split(" "); - - const id = b[0]; - const version = b[1]; - - let coverage; - let type; - let name; - - // "Can I use" doesn't have stats for Node - if (id === "node") { - type = "server"; - name = "Node"; - } else { - const db = caniuse[id]; - - coverage = region - ? getRegionCoverage(region, id, version) - : getCoverage(db.usage_global, version); - type = db.type; - name = db.browser; - } - - if (!compatible[type]) { - compatible[type] = []; - } - - compatible[type].push({ - version, - id, - name, - coverage, - logo: `/images/${id}.png`, - }); - }); - } - - res.render("index", { - compatible, - query, - bv, - cv, - coverage: browserslist.coverage(bl, region), - description: - "A page to display compatible browsers from a browserslist string.", - region: region || "Global", - }); -}); - -module.exports = router; diff --git a/script/deploy b/script/deploy deleted file mode 100755 index ecca4cb2..00000000 --- a/script/deploy +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -e -now rm -y browserlist -now --public -now alias browserl.ist -now alias browsersl.ist diff --git a/server/handlers/api-browsers.js b/server/handlers/api-browsers.js new file mode 100644 index 00000000..6ceeecf1 --- /dev/null +++ b/server/handlers/api-browsers.js @@ -0,0 +1,22 @@ +import { URL } from 'node:url' + +import getBrowsers, { + QUERY_DEFAULTS, + REGION_GLOBAL +} from '../lib/get-browsers.js' +import { sendResponseAPI } from '../lib/send-response.js' + +export default async function handleAPIBrowsers(req, res) { + let { searchParams: params } = new URL(req.url, `http://${req.headers.host}/`) + + let query = params.get('q') || QUERY_DEFAULTS + let queryWithoutQuotes = query.replace(/'/g, '') + + let region = params.get('region') || REGION_GLOBAL + + try { + sendResponseAPI(res, 200, await getBrowsers(queryWithoutQuotes, region)) + } catch (error) { + sendResponseAPI(res, 400, { message: error.message }) + } +} diff --git a/server/handlers/main.js b/server/handlers/main.js new file mode 100644 index 00000000..6c7e64a5 --- /dev/null +++ b/server/handlers/main.js @@ -0,0 +1,24 @@ +import { URL } from 'node:url' + +import getFileData from '../lib/get-file-data.js' +import { sendResponse, sendResponseError } from '../lib/send-response.js' + +const responseHeaders = { + 'Content-Type': 'text/html', + 'Cache-Control': 'public, max-age=300, must-revalidate' +} + +export default async function handleMain(req, res) { + let filePath = new URL('../../client/dist/index.html', import.meta.url) + + try { + let { data } = await getFileData(filePath, true) + sendResponse(res, 200, responseHeaders, data) + } catch (error) { + if (error.httpStatus) { + sendResponseError(res, error.httpStatus, error.message) + } else { + sendResponseError(res, 500, 'Internal Server Error') + } + } +} diff --git a/server/handlers/static.js b/server/handlers/static.js new file mode 100644 index 00000000..9e5fbd89 --- /dev/null +++ b/server/handlers/static.js @@ -0,0 +1,50 @@ +import { URL } from 'node:url' + +import { sendResponse, sendResponseError } from '../lib/send-response.js' +import getFileData from '../lib/get-file-data.js' + +const CLIENT_DIR = '../../client' +const DIST_DIR = '/dist' +const MIME_TYPES = { + '.html': 'text/html', + '.js': 'text/javascript', + '.css': 'text/css', + '.json': 'application/json', + '.webmanifest': 'application/manifest+json', + '.png': 'image/png', + '.jpg': 'image/jpg', + '.svg': 'image/svg+xml', + '.ico': 'image/x-icon' +} + +export default async function handleStatic(req, res) { + let filePath = new URL(`${CLIENT_DIR}${DIST_DIR}${req.url}`, import.meta.url) + + try { + let shouldBeCached = req.url === '/favicon.ico' + let { name, ext, size, data } = await getFileData(filePath, shouldBeCached) + let resHeaders = { + 'Cache-Control': getCacheControl(name), + 'Content-Type': getContentType(ext), + 'Content-Length': size + } + sendResponse(res, 200, resHeaders, data) + } catch (error) { + if (error.httpStatus) { + sendResponseError(res, error.httpStatus, error.message) + } else { + sendResponseError(res, 500, 'Internal Server Error') + } + } +} + +function getContentType(ext) { + return MIME_TYPES[ext] || 'application/octet-stream' +} + +function getCacheControl(name) { + let hasFileCacheBuster = /\.(\w{8})$/.test(name) + return hasFileCacheBuster + ? 'public, max-age=31536000, immutable' + : 'max-age=3600' +} diff --git a/server/index.js b/server/index.js new file mode 100644 index 00000000..5894145b --- /dev/null +++ b/server/index.js @@ -0,0 +1,32 @@ +import http from 'node:http' +import { URL } from 'node:url' + +import handleMain from './handlers/main.js' +import handleAPIBrowsers from './handlers/api-browsers.js' +import handleStatic from './handlers/static.js' + +const PORT = process.env.PORT || 5000 + +const App = http.createServer(async (req, res) => { + let { pathname } = new URL(req.url, `http://${req.headers.host}/`) + + switch (pathname) { + case '/': + handleMain(req, res) + break + + case '/api/browsers': + handleAPIBrowsers(req, res) + break + + default: + handleStatic(req, res) + break + } +}) + +App.listen(PORT, () => { + process.stdout.write(`Server listening on a port http://localhost:${PORT}/\n`) +}) + +export default App diff --git a/server/lib/get-browsers.js b/server/lib/get-browsers.js new file mode 100644 index 00000000..27d53cb5 --- /dev/null +++ b/server/lib/get-browsers.js @@ -0,0 +1,139 @@ +import { agents as caniuseAgents, region as caniuseRegion } from 'caniuse-lite' +import { readFileSync } from 'node:fs' +import browserslist from 'browserslist' +import { URL } from 'node:url' + +let { version: bv } = importJSON('../node_modules/browserslist/package.json') +let { version: cv } = importJSON('../node_modules/caniuse-lite/package.json') + +export const QUERY_DEFAULTS = 'defaults' +export const REGION_GLOBAL = 'Global' + +export default async function getBrowsers(query, region) { + let loadBrowsersData = async (resolve, reject) => { + let browsersByQuery = [] + + try { + browsersByQuery = browserslist(query) + } catch (error) { + reject( + error.browserslist + ? error + : new Error(`Unknown browser query \`${query}\`.`) + ) + return + } + + let browsersGroups = {} + let browsersGroupsKeys = [] + + for (let browser of browsersByQuery) { + if (browsersGroupsKeys.includes(browser)) { + return + } + + browsersGroupsKeys.push(browser) + let [id, version] = browser.split(' ') + let versionCoverage = null + + if (id !== 'node') { + try { + versionCoverage = + region === REGION_GLOBAL + ? getGlobalCoverage(id, version) + : await getRegionCoverage(id, version, region) + } catch (error) { + reject(error) + } + } + + let versionData = { [`${version}`]: roundNumber(versionCoverage) } + + if (!browsersGroups[id]) { + browsersGroups[id] = { versions: versionData } + } else { + Object.assign(browsersGroups[id].versions, versionData) + } + } + + let browsers = Object.entries(browsersGroups) + .map(([id, { versions }]) => { + let name + let coverage + + // The Node.js is not in the Can I Use db + if (id === 'node') { + name = 'Node' + coverage = null + } else { + name = caniuseAgents[id].browser + coverage = roundNumber( + Object.values(versions).reduce((a, b) => a + b, 0) + ) + } + + return { + id, + name, + coverage, + versions + } + }) + .sort((a, b) => b.coverage - a.coverage) + + let coverage + + try { + coverage = roundNumber(browserslist.coverage(browsersByQuery, region)) + } catch (error) { + reject(error) + } + + resolve({ + query, + region, + coverage, + versions: { + browserslist: bv, + caniuse: cv + }, + browsers + }) + } + + return new Promise(loadBrowsersData) +} + +function getGlobalCoverage(id, version) { + return getCoverage(caniuseAgents[id].usage_global, version) +} + +async function getRegionCoverage(id, version, region) { + try { + if (region.includes('/')) { + throw new Error(`Invalid symbols in region name \`${region}\`.`) + } + + let { default: regionData } = await import( + `caniuse-lite/data/regions/${region}.js` + ) + return getCoverage(caniuseRegion(regionData)[id], version) + } catch (e) { + throw new Error(`Unknown region name \`${region}\`.`) + } +} + +function getCoverage(data, version) { + let [lastVersion] = Object.keys(data).sort((a, b) => Number(b) - Number(a)) + + // If specific version coverage is missing, fall back to 'version zero' + return data[version] !== undefined ? data[version] : data[lastVersion] +} + +function roundNumber(value) { + return Math.round(value * 100) / 100 +} + +function importJSON(path) { + return JSON.parse(readFileSync(new URL(path, import.meta.url))) +} diff --git a/server/lib/get-file-data.js b/server/lib/get-file-data.js new file mode 100644 index 00000000..d9460433 --- /dev/null +++ b/server/lib/get-file-data.js @@ -0,0 +1,37 @@ +import { readFile, stat } from 'node:fs/promises' +import { existsSync } from 'node:fs' +import { parse } from 'node:path' + +const IS_PRODUCTION = process.env.NODE_ENV === 'production' +const CACHE = {} + +export default async function getFileData(filePath, shouldBeCached = false) { + shouldBeCached = shouldBeCached && IS_PRODUCTION + + if (shouldBeCached && filePath in CACHE) { + return CACHE[filePath] + } + + if (!existsSync(filePath)) { + let error = new Error('Not Found') + error.httpStatus = 404 + throw error + } + + let { name, ext } = parse(filePath.pathname) + let { size } = await stat(filePath) + let data = await readFile(filePath) + + let fileData = { + name, + ext, + size, + data + } + + if (shouldBeCached) { + CACHE[filePath] = fileData + } + + return fileData +} diff --git a/server/lib/send-response.js b/server/lib/send-response.js new file mode 100644 index 00000000..25d73207 --- /dev/null +++ b/server/lib/send-response.js @@ -0,0 +1,24 @@ +export function sendResponse(res, status, headers, data) { + res.writeHead(status, headers) + res.write(data) + res.end() +} + +export function sendResponseAPI(res, status, data) { + let JSONData = JSON.stringify(data) + + res.writeHead(status, { + 'Access-Control-Allow-Origin': '*', + 'Content-Type': 'text/json', + 'Content-Length': JSONData.length + }) + res.write(JSONData) + res.end() +} + +export function sendResponseError(res, status, message) { + res.writeHead(status, { + 'Content-Type': 'text/plain' + }) + res.end(message) +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 00000000..3e46a7b9 --- /dev/null +++ b/server/package.json @@ -0,0 +1,13 @@ +{ + "name": "browserl.ist-server", + "private": true, + "type": "module", + "scripts": { + "start": "node index.js", + "test": "pnpm -r build && node --test test/*.test.js" + }, + "dependencies": { + "browserslist": "^4.21.3", + "caniuse-lite": "^1.0.30001375" + } +} diff --git a/server/test/browsers.test.js b/server/test/browsers.test.js new file mode 100644 index 00000000..a0525d87 --- /dev/null +++ b/server/test/browsers.test.js @@ -0,0 +1,50 @@ +import test from 'node:test' +import { equal, notEqual, ok, match } from 'node:assert' + +import getBrowsers from '../lib/get-browsers.js' + +test('Throws error for wrong browserslist `query`', async () => { + let error + try { + await getBrowsers('wrong', 'Global') + } catch (e) { + error = e + } + ok(error instanceof Error) + match(error.message, /Unknown browser query/) +}) + +test('Throws error for wrong Can I Use `region`', async () => { + let error + try { + await getBrowsers('>0%', 'XX') + } catch (e) { + error = e + } + ok(error instanceof Error) + match(error.message, /Unknown region name/) +}) + +test('Returns Node.js versions without coverage`', async () => { + let data = await getBrowsers('Node > 0', 'Global') + + equal(data.browsers[0].name, 'Node') + equal(data.browsers[0].coverage, null) +}) + +test('Сoverage of all browsers should differ in different regions', async () => { + let continentData = await getBrowsers('>1%', 'Global') + let countryData = await getBrowsers('>1%', 'IT') + + notEqual(continentData.coverage, countryData.coverage) +}) + +test('Сoverage for browser should differ in different regions', async () => { + let continentData = await getBrowsers('last 2 Chrome versions', 'alt-eu') + let countryData = await getBrowsers('last 2 Chrome versions', 'NP') + + let continentBrowser = continentData.browsers[0] + let countryBrowser = countryData.browsers[0] + + notEqual(continentBrowser.coverage, countryBrowser.coverage) +}) diff --git a/server/test/index.test.js b/server/test/index.test.js new file mode 100644 index 00000000..9c726706 --- /dev/null +++ b/server/test/index.test.js @@ -0,0 +1,83 @@ +import { equal, match } from 'node:assert' +import { URL } from 'node:url' +import test from 'node:test' + +import App from '../index.js' + +const base = `http://localhost:${App.address().port}/` + +test('Integration tests', async t => { + await t.test( + 'responses `defaults` query for `/browsers` route without `q` param', + async () => { + let url = new URL(`api/browsers`, base) + let response = await fetch(url) + let data = await response.json() + equal(data.query, 'defaults') + } + ) + + await t.test( + 'responses `Global` region for `/browsers` route without `region` param', + async () => { + let url = new URL(`api/browsers`, base) + let response = await fetch(url) + let data = await response.json() + equal(data.region, 'Global') + } + ) + + await t.test('responses status 200 for `/browsers` route', async () => { + let url = new URL(`api/browsers`, base) + let response = await fetch(url) + equal(response.status, 200) + }) + + await t.test( + 'responses 400 for `/browsers` route with wrong `q` param', + async () => { + let url = new URL(`api/browsers?q=wrong-query`, base) + let response = await fetch(url) + let error = await response.json() + equal(response.status, 400) + match(error.message, /Unknown/) + } + ) + + await t.test('responses 404 for unknown route', async () => { + let url = new URL(`wrong-route`, base) + let response = await fetch(url) + let text = await response.text() + equal(response.status, 404) + match(text, /Not Found/) + }) + + await t.test('opens the file index.html by the URL `/`', async () => { + let url = new URL('', base) + let response = await fetch(url) + let html = await response.text() + equal(response.status, 200) + match(html, /Browserslist/) + match(html, / { + let url = new URL('/favicon.ico', base) + let response = await fetch(url) + equal(response.status, 200) + equal(response.headers.get('Content-Type'), 'image/x-icon') + } + ) + + await t.test('loads static `/favicon.ico` with 1 hour cache', async () => { + let url = new URL('/favicon.ico', base) + let response = await fetch(url) + equal(response.status, 200) + equal(response.headers.get('Cache-Control'), 'max-age=3600') + }) + + App.closeAllConnections() + App.close() +}) diff --git a/simple-git-hooks.json b/simple-git-hooks.json new file mode 100644 index 00000000..f7b0c2ff --- /dev/null +++ b/simple-git-hooks.json @@ -0,0 +1,3 @@ +{ + "pre-commit": "./node_modules/.bin/nano-staged --config ./nano-staged.json" +} diff --git a/vercel.json b/vercel.json deleted file mode 100644 index 60121507..00000000 --- a/vercel.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "version": 2, - "rewrites": [{ "source": "/(.*)", "destination": "/api/server" }] -} diff --git a/views/error.pug b/views/error.pug deleted file mode 100644 index 51ec12c6..00000000 --- a/views/error.pug +++ /dev/null @@ -1,6 +0,0 @@ -extends layout - -block content - h1= message - h2= error.status - pre #{error.stack} diff --git a/views/index.pug b/views/index.pug deleted file mode 100644 index 6ffafa26..00000000 --- a/views/index.pug +++ /dev/null @@ -1,42 +0,0 @@ -extends layout - -block content - div(class="tc bg-neon-carrot plum bb b--black-10 pa4 pa5-ns") - h1(class="f2 f-headline-l f1-ns fw6 mid-gray ma0") - a(href="/") browsersl.ist - p(class="ma0 mt2 mb4 mb5-ns") #{description} - form(method="get" action="/" class="cf dt-ns w-100 my4 f5 f4-l") - div(class="fl dtc-ns w-100 w-80-ns mb2 mb0-ns pr2-ns") - input(class="pa2 ba b--black-30 code br1 border-box w-100 lh-title" name="q" value= query) - div(class="fl dtc-ns w-100 w-20-ns") - button(type=submit class="bg-plum neon-carrot b bg-plum--hover pa2 ba b--black-30 br1 db w-100 lh-title border-box pointer") Show #[span(class="dn-m") Browsers] - div(class="dt-ns w-100 mw8 center") - if compatible - - const columns = Object.keys(compatible).length - each browsers, platform in compatible - div(class=`dtc-l pa2 ${columns === 3 ? 'w-third' : 'w-50-l'} border-box`) - h2(class="f4 f3-ns ma0 mt4 mb4 tc ttc") - if platform === 'server' - | Node.js #{platform}s - else - | #{platform} browsers - ul(class="ma0 list pa3") - each browser in browsers - li(class="ma0 mb3 lh-copy") - img(src=browser.logo class="v-mid mr2" alt="" height="34" width="34") - span(class="mr1 v-mid") #{browser.name} - span(class="mr1 v-mid") #{browser.version} - span(class="v-mid fr") - small - if isFinite(browser.coverage) - | #{Math.round(browser.coverage * 100) / 100}% - else - | Unknown coverage - else if error != null - h2(class="f4 f3-ns ma0 mv5 tc ttc") #{error} - div(class="tc bg-neon-carrot plum bb b--black-10 pa2 pa3-ns mt4") - if compatible - | #{region} coverage: - strong(class="ml1") #{Math.round(coverage * 100) / 100}% - else - | Unknown coverage diff --git a/views/layout.pug b/views/layout.pug deleted file mode 100644 index 8c0b63fc..00000000 --- a/views/layout.pug +++ /dev/null @@ -1,19 +0,0 @@ -doctype html -html(lang='en') - head - meta(charset="utf-8") - title browserl.ist: #{description} - meta(name="description" content=description) - meta(http-equiv="X-UA-Compatible" content="IE=Edge") - meta(name="author" content="@browserslist") - meta(name="viewport" content="width=device-width, initial-scale=1") - link(rel='shortcut icon', href='/images/favicon.png', type='image/png') - link(rel='stylesheet', href='/stylesheets/tachyons.min.css') - link(rel='stylesheet', href='/stylesheets/style.css') - body(class="sans-serif f4") - block content - div(class="pa5 f6 lh-copy") - span(class="mr4 db di-ns mb2 mb0-ns") Made by #[a(href="https://twitter.com/browserslist") browserslist] - span(class="mr4 db di-ns mb2 mb0-ns") Code on #[a(href="https://github.com/browserslist/browserl.ist") GitHub] - span(class="mr4 db di-ns mb2 mb0-ns") Functionality provided by #[a(href="https://github.com/browserslist/browserslist") browserslist] #{bv} - span(class="mr4 db di-ns mb2 mb0-ns") Data provided by #[a(href="https://github.com/Fyrd/caniuse") caniuse-db] #{cv}