pax_global_header00006660000000000000000000000064142040332140014503gustar00rootroot0000000000000052 comment=6d9044ac414d02a09f2e2f01fc4985f93b863735 browserslist-4.19.3/000077500000000000000000000000001420403321400143435ustar00rootroot00000000000000browserslist-4.19.3/.editorconfig000066400000000000000000000002231420403321400170150ustar00rootroot00000000000000root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true browserslist-4.19.3/.github/000077500000000000000000000000001420403321400157035ustar00rootroot00000000000000browserslist-4.19.3/.github/FUNDING.yml000066400000000000000000000000711420403321400175160ustar00rootroot00000000000000open_collective: browserslist tidelift: npm/browserslist browserslist-4.19.3/.github/workflows/000077500000000000000000000000001420403321400177405ustar00rootroot00000000000000browserslist-4.19.3/.github/workflows/test.yml000066400000000000000000000040551420403321400214460ustar00rootroot00000000000000name: Test on: push: pull_request: jobs: full: name: Node.js 17 Full runs-on: ubuntu-latest steps: - name: Checkout the repository uses: actions/checkout@v2 - name: Install pnpm uses: pnpm/action-setup@v2 with: version: latest - name: Install Node.js uses: actions/setup-node@v2 with: node-version: 17 cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile --ignore-scripts - name: Run tests run: pnpm test env: FORCE_COLOR: 2 short: runs-on: ubuntu-latest strategy: matrix: node-version: - 16 - 14 - 12 name: Node.js ${{ matrix.node-version }} Quick steps: - name: Checkout the repository uses: actions/checkout@v2 - name: Install pnpm uses: pnpm/action-setup@v2 with: version: latest - name: Install Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile --ignore-scripts - name: Run unit tests run: pnpm unit:fast env: FORCE_COLOR: 2 old: runs-on: ubuntu-latest strategy: matrix: node-version: - 10 - 8 name: Node.js ${{ matrix.node-version }} Quick steps: - name: Checkout the repository uses: actions/checkout@v2 - name: Install pnpm uses: pnpm/action-setup@v1 with: version: 3 env: ACTIONS_ALLOW_UNSECURE_COMMANDS: true - name: Install Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: pnpm install --frozen-lockfile --ignore-scripts - name: Run unit tests run: pnpm unit:fast env: FORCE_COLOR: 2 browserslist-4.19.3/.gitignore000066400000000000000000000000311420403321400163250ustar00rootroot00000000000000node_modules/ coverage/ browserslist-4.19.3/.npmignore000066400000000000000000000000651420403321400163430ustar00rootroot00000000000000test/ coverage/ img/ tsconfig.json grammar.w3c-ebnf browserslist-4.19.3/CHANGELOG.md000066400000000000000000000326401420403321400161610ustar00rootroot00000000000000# Change Log This project adheres to [Semantic Versioning](http://semver.org/). ## 4.19.3 * Updated Firefox ESR (by Christophe Coevoet). ## 4.19.2 * Fixed `--help` output. ## 4.19.1 * Fixed `throwOnMissing` types (by Øyvind Saltvik). ## 4.19 * Added queries grammar definition (by Pig Fang). * Added `throwOnMissing` option (by Øyvind Saltvik). * Fixed `null` data ignoring in `< 50% in CN` (byPig Fang). * Fixed data parsing in `in my stats` (by Sun Xiaoran). * Fixed `yarn.lock` support with `integrity` (by Alexey Berezin). * Fixed Yarn Berry error message in `--update-db`. ## 4.18.1 * Fixed case inventiveness for `cover` queries (by Pig Fang). * Fixed `since 1970` query for `null` in release date (by Pig Fang). ## 4.18 * Added `--ignore-unknown-versions` CLI option (by Pig Fang). ## 4.17.6 * Fixed sharable config resolution (by Adaline Valentina Simonian). ## 4.17.5 * Fixed `--update-db` for some `pnpm` cases. ## 4.17.4 * Reduced package size. ## 4.17.3 * Use `picocolors` for color output in `--update-db`. ## 4.17.2 * Reduced package size. ## 4.17.1 * Use Nano Colors for color output in `--update-db`. ## 4.17 * Added `yarn` 3 support to `--update-db` (by Himank Pathak). ## 4.16.8 * Updated Firefox ESR. ## 4.16.7 * Fixed `oudated caniuse-lite` warning text (by Paul Verest). * Fixed docs (by Alexander Belov). ## 4.16.6 * Fixed `npm-shrinkwrap.json` support in `--update-db` (by Geoff Newman). ## 4.16.5 * Fixed unsafe RegExp (by Yeting Li). ## 4.16.4 * Fixed unsafe RegExp. * Added artifactory support to `--update-db` (by Ittai Baratz). ## 4.16.3 * Fixed `--update-db`. ## 4.16.2 * Fixed `--update-db` (by @ialarmedalien). ## 4.16.1 * Fixed Chrome 4 with `mobileToDesktop` (by Aron Woost). ## 4.16 * Add `browserslist config` query. ## 4.15 * Add TypeScript types (by Dmitry Semigradsky). ## 4.14.7 * Fixed Yarn Workspaces support to `--update-db` (by Fausto Núñez Alberro). * Added browser changes to `--update-db` (by @AleksandrSl). * Added color output to `--update-db`. * Updated `package.funding` to have link to our Open Collective. ## 4.14.6 * Fixed Yarn support in `--update-db` (by Ivan Storck). * Fixed npm 7 support in `--update-db`. ## 4.14.5 * Fixed `last 2 electron versions` query (by Sergey Melyukov). ## 4.14.4 * Fixed `Unknown version 59 of op_mob` error. ## 4.14.3 * Update Firefox ESR. ## 4.14.2 * Fixed `--update-db` on Windows (by James Ross). * Improved `--update-db` output. ## 4.14.1 * Added `--update-db` explanation (by Justin Zelinsky). ## 4.14 * Add `BROWSERSLIST_DANGEROUS_EXTEND` support (by Timo Mayer). ## 4.13 * Added `supports` query to select browsers (by Jesús Leganés-Combarro). ## 4.12.2 * Update Firefox ESR. ## 4.12.1 * Update `package.json` scanning tool for `--update-db` (by Luke Edwards). * Improve docs (by Mukundan Senthil). * Drop Node.js 13.0-13.6 support because of ES modules bug in that versions. ## 4.12 * Add environments to shared configs (by Yevgeny Petukhov). * Fix docs (by Dmitry Statsenko and Thomas Pozzo di Borgo). ## 4.11.1 * Fix Node.js 6 support. ## 4.11 * Add `npx browserslist --mobile-to-desktop` (by James Ross). ## 4.10 * Add `npx browserslist --update-db` (by Ivan Solovev). ## 4.9.1 * Normalize incorrect Can I Use regional data (by Huáng Jùnliàng). ## 4.9 * Add `node X-Y` query support (by Yuping Zuo). ## 4.8.7 * Fix `last N major versions` (by Valeriy Trubachev). ## 4.8.6 * Fix `Unknown version 10 of op_mob` error in `mobileToDesktop` option. ## 4.8.5 * Fix `last N browsers` again after new `caniuse-db` API changes. ## 4.8.4 * Fix released versions detection for queries like `last N browsers`. * Add IE 11 Mobile to `dead` browsers. ## 4.8.3 * Fix warning message (by Anton Ivanov). ## 4.8.2 * Fix `Cannot convert undefined or null to object` (by Antoine Clausse). * Fix `mobileToDesktop` in `defaults` (by Huáng Jùnliàng). ## 4.8.1 * Fix Chrome and `mobileToDesktop` (by Huáng Jùnliàng). ## 4.8 * Add `> 5% in browserslist-config-my stats` query (by Andrew Leedham). * Improve docs (by Danny van Kooten). ## 4.7.3 * Add funding link for `npm fund`. ## 4.7.2 * Add cache for query parsing. * Improve config caching (by Kārlis Gaņģis). * Update Firefox ESR. ## 4.7.1 * Improve caching. ## 4.7 * Add PhantomJS queries. * Improve docs (by Dorian Koehring). ## 4.6.6 * Remove Safari from `dead` query. ## 4.6.5 * Add Samsung 4 browser to `dead` query. * Remove dirty fix for `android all` error. ## 4.6.4 * Add Firefox 68 to `Firefox ESR` query. ## 4.6.3 * Dirty fix for `android all` error. ## 4.6.2 * Fix `last x version` and similar queries for Android (by Tony Ross). ## 4.6.1 * Fix patch version support for Electron (by Kilian Valkhof). ## 4.6 * Add `mobileToDesktop` option (by Nicolò Ribaudo). ## 4.5.6 * Make `Node > 5` and `node > 5` queries case insensitive. ## 4.5.5 * Fix CLI help (by Marcel Gerber). * Add KaiOS browser to docs. ## 4.5.4 * Update docs (by Andrew Leedham and Dan Onoshko). ## 4.5.3 * Fix splitting string to queries. ## 4.5.2 * Show default browsers in CLI on project without config. ## 4.5.1 * Improve text for the warning about outdated `caniuse-lite`. ## 4.5 * Add `>=`, `>`, and `<=` support for Node.js version (by Mathspy Terabithian). ## 4.4.2 * Allow to have string in `package.json` (by @dmarkhas). ## 4.4.1 * Allow to use `.` in scope name of shareable config (by Gustav Nikolaj). ## 4.4 * Added `and` and `or` keywords to combine queries (by Jon Ege Ronnenberg). ## 4.3.7 * Fix fraction years support in `last 1.5 years` (by Clément P). * Fix version-less browser support. ## 4.3.6 * Fix version-less browser support in custom statistics (by Alex Walter). ## 4.3.5 * Fix `not` query for wrong Can I Use data. ## 4.3.4 * Allow to update `node-releases` without new Browserslist releases. ## 4.3.3 * Fix Node.js 11 support. ## 4.3.2 * Fix `Unknown version 11 of Node.js` error (by Dan Onoshko). ## 4.3.1 * Fix conflict between `caniuse-lite` and custom browsers statistics. ## 4.3 * Allow to use `extends browserslist-config-a/file` (by @Schweinepriester). ## 4.2.1 * Use new `node-releases` support (by Sergey Rubanov). ## 4.2 * Add `--json` argument for CLI. * Allow to pass multiple areas in CLI by `--coverage=US,alt-AS,global`. ## 4.1.2 * Better `unknow query` error message. * Use latest `node-releases`. ## 4.1.1 * Update Firefox ESR versions. ## 4.1 * Add `current node` query. * Add contributors widget to docs (by Sergey Surkov). ## 4.0.2 * Fix new `node-releases` support (by Sergey Rubanov). * Fix error text (by Josh Smith). ## 4.0.1 * Reduce npm package size. * Fix docs. ## 4.0.0 “Erinaceus amurensis” * Add `node X` and `maintained node versions` queries (by Pavel Vostrikov). * Remove Node.js 4 support. * Show warning if `caniuse-lite` is old (by Anton Tuzhik). * Add comma support in config file. ## 3.2.8 * Add IE 9-5.5 to dead browsers. * Remove development configs from npm package. ## 3.2.7 * Add Firefox 60 as Firefox ESR. ## 3.2.6 * Add Opera Mini 12 to dead browsers. * Update docs (by Jamie Kyle). ## 3.2.5 * Fix excluding Opera Mini and other browsers with `all` version. ## 3.2.4 * Resolve shareable config from current working directory. ## 3.2.3 * Fix `package.json` config validation for single string case. * Fix CLI error reporting. ## 3.2.2 * Add `package.json` config validation. * Move project to `browserlist` GitHub organization. ## 3.2.1 * Fix error text (by Steve Schrab). ## 3.2 * Add `cover 99%` query (by Vasily Fedoseyev). * Add `cover 99% in US` query (by Vasily Fedoseyev). * Add `cover 99% in my stats` query (by Vasily Fedoseyev). * Add `"my stats"` support to `browserlist.coverage()` (by Vasily Fedoseyev). ## 3.1.2 * Add more clear error on missed browser version. ## 3.1.1 * Fix JSDoc (by Sylvain Pollet-Villard). ## 3.1 * Add `ignoreUnknownVersions` option. * Fix docs (by Pascal Duez). ## 3.0 “Atelerix sclateri” * Remove country statistics from client-side build of Browserslist. * Change `> 1%` to `> 0.5%` in default query. * Add `not dead` to default query. * Change default environment to `production` (by Marco Fugaro). * Add `dead` query support with IE 10 and BlackBerry browser. * Add multiple environments in one section support (by Evilebot Tnawi). * Add custom statistics support to `browserlist.coverage()`. * Fix `path` option check. ## 2.11.3 * Fix for `path: undefined` option. ## 2.11.2 * Remove Node.js specific code from webpack build. ## 2.11.1 * Fix using Browserslist in browser with `path` but without `fs`. ## 2.11 * Add `last 2 years` query support (by James Harris). ## 2.10.2 * Fix Browserify support. ## 2.10.1 * Fix using Browserslist without `process` (by Andrew Patton). ## 2.10 * Add `< 1%` and `<= 1%` queries support (by August Kaiser). ## 2.9.1 * Fix unknown query on trailing spaces in query. ## 2.9 * Add `last Electron versions` and `last Electron major versions` queries (by Louis Mouhat). ## 2.8 * Add `since 2016-03` and `since 2016-03-20` queries support (by Andrew Blick). ## 2.7 * Add `since 2016` queries support (by Igor Deryabin). ## 2.6.1 * Fix `Path must be a string` error. ## 2.6 * By default load config from current directory in CLI tool. ## 2.5.1 * Allow `@scope/browserlist-config` config name (by Jamie Connolly). ## 2.5 * Add `extends` query (by YellowKirby). ## 2.4.1 * Throw error if `package.json` contain `browserlist` instead of `browserslist`. ## 2.4 * Add `last n major versions` query (by John Sanders). ## 2.3.3 * Fix browsers support. ## 2.3.2 * Fix `> 0` query for browsers with one version (by Nikolay Solovyov). ## 2.3.1 * Reduce library size. ## 2.3 * Add `unreleased versions` and `unreleased Chrome versions` queries. ## 2.2.2 * Fix `Path must be a string` error (by Pieter Beulque). ## 2.2.1 * Fix security issue with regions dynamic `require`. ## 2.2 * Add region usage statistics support (by Clément P). ## 2.1.5 * Remove Firefox 45 from Firefox ESR. ## 2.1.4 * Use both ESR versions when they actual. ## 2.1.3 * Add warning on first exclude query. ## 2.1.2 * Fix non-Node.js environments support. ## 2.1.1 * Fix CLI arguments parsing. ## 2.1 * Add `>= 5%`, `>= 5% in US` and `>= 5% in my stats` queries. ## 2.0 “Atelerix frontalis” * `last n versions` returns versions for all browsers, not only main browsers. * Cache file system operations (by Aarni Koskela). * Use `caniuse-lite` 1 MB instead of `caniuse-db` 7 MB (by Ben Briggs). * Add `.browserslistrc` config support. * Add QQ Browser for Android support. * Add tests for CLI (by Zhulduz Zhankenova). ## 1.7.7 * Update Firefox ESR. ## 1.7.6 * Fix Android Chrome selection. ## 1.7.5 * Fix combining `not` query with country based statistics. * Fix `--env` argument in CLI (by Tuure Savuoja). ## 1.7.4 * Speed up browser sorting (by Aarni Koskela). ## 1.7.3 * Fix config finding when directory was passed to `path` (by Aarni Koskela). ## 1.7.2 * Fix config finding algorithm (by Aarni Koskela). ## 1.7.1 * Fix unreleased browsers version detection. ## 1.7 * Add `--config` and `--env` arguments to CLI (by Jarek Rencz). ## 1.6 * Convert Electron version to Chrome (by Kilian Valkhof). * Fix `0` version mistake in Can I Use data. ## 1.5.2 * Fix browser versions ordering (by Marco Massarotto). ## 1.5.1 * Fix error on `package.json` and `browserslist` in same directory. ## 1.5 * Add `package.json` support (by Stepan Kuzmin). * Add environments support (by Maksim Semenov and openlibser). * Add `browserslist-stats.json` file support (by Oleh Aloshkin). * Add `config` option to CLI (by Evilebot Tnawi). * Add JSDoc. * Fix tests on Windows (by Anna Stoliar). * Don’t set custom usage statistics globally. ## 1.4 * Add `defaults` keyword. ## 1.3.6 * Add `UCAndroid` alias to `and_uc` (by Evilebot Tnawi). ## 1.3.5 * Fix Opera Mini support. Use `op_mini all`. ## 1.3.4 * Add space-less `>1%` and `>.5%` syntax support (by Andreas Lind). ## 1.3.3 * Clean `0` versions in some country-based requests. ## 1.3.2 * Update Firefox ESR. ## 1.3.1 * Add Safari TP support. ## 1.3 * Add coverage for specific country (by Joshua Wise). ## 1.2 * Add `browserslist.coverage()` method. * Add `--coverage` and `-c` argument to CLI. * Add `-v` argument support to CLI. * Better error handling in CLI. ## 1.1.3 * Fix jspm support (by Sean Anderson). ## 1.1.2 * Fix jspm support (by Sean Anderson). ## 1.1.1 * Fix space-less `>10%` and `>10% in my stats` queries. * Normalize error messages. * Remove development files from npm package. ## 1.1 * Added query against custom browser usage data (by Daniel Rey). ## 1.0.1 * Update Firefox ESR (by Rouven Weßling). ## 1.0 “Atelerix algirus” * Remove Opera 12.1 from default query. * Add `not` keyword and exclude browsers by query. * Add Microsoft Edge support (by Andrey Polischuk). * Add CLI for debug and non-JS usage (by Luke Horvat). * Use own class in Browserslist errors. ## 0.5 * Add version ranges `IE 6-9` (by Ben Briggs). ## 0.4 * Add `config` option and `BROWSERSLIST_CONFIG` environment variable support. * Add symlink config support. ## 0.3.3 * Fix DynJS compatibility (by Nick Howes). ## 0.3.2 * Fix joined versions on versions query (by Vincent De Oliveira). ## 0.3.1 * Fix global variable leak (by Peter Müller). ## 0.3 * Takes queries from `BROWSERSLIST` environment variable. ## 0.2 * Return Can I Use joined versions as `ios_saf 7.0-7.1`. ## 0.1.3 * Better work with Can I Use joined versions like `ios_saf 7.0-7.1`. * Browserslist now understands `ios_saf 7.0` or `ios_saf 7`. ## 0.1.2 * Do not create global `browserslist` var (by Maxime Thirouin). ## 0.1.1 * Sort browsers by name and version. ## 0.1 “Atelerix albiventris” * Initial release. browserslist-4.19.3/LICENSE000066400000000000000000000021361420403321400153520ustar00rootroot00000000000000The MIT License (MIT) Copyright 2014 Andrey Sitnik and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. browserslist-4.19.3/README.md000066400000000000000000000602401420403321400156240ustar00rootroot00000000000000# Browserslist [![Cult Of Martians][cult-img]][cult] Browserslist logo by Anton Lovchikov The config to share target browsers and Node.js versions between different front-end tools. It is used in: * [Autoprefixer] * [Babel] * [postcss-preset-env] * [eslint-plugin-compat] * [stylelint-no-unsupported-browser-features] * [postcss-normalize] * [obsolete-webpack-plugin] All tools will find target browsers automatically, when you add the following to `package.json`: ```json "browserslist": [ "defaults", "not IE 11", "maintained node versions" ] ``` Or in `.browserslistrc` config: ```yaml # Browsers that we support defaults not IE 11 maintained node versions ``` Developers set their version lists using queries like `last 2 versions` to be free from updating versions manually. Browserslist will use [`caniuse-lite`] with [Can I Use] data for this queries. Browserslist will take queries from tool option, `browserslist` config, `.browserslistrc` config, `browserslist` section in `package.json` or environment variables. [cult-img]: https://cultofmartians.com/assets/badges/badge.svg [cult]: https://cultofmartians.com/done.html Sponsored by Evil Martians [stylelint-no-unsupported-browser-features]: https://github.com/ismay/stylelint-no-unsupported-browser-features [eslint-plugin-compat]: https://github.com/amilajack/eslint-plugin-compat [Browserslist Example]: https://github.com/browserslist/browserslist-example [postcss-preset-env]: https://github.com/jonathantneal/postcss-preset-env [postcss-normalize]: https://github.com/jonathantneal/postcss-normalize [`caniuse-lite`]: https://github.com/ben-eb/caniuse-lite [Autoprefixer]: https://github.com/postcss/autoprefixer [Can I Use]: https://caniuse.com/ [Babel]: https://github.com/babel/babel/tree/master/packages/babel-preset-env [obsolete-webpack-plugin]: https://github.com/ElemeFE/obsolete-webpack-plugin ## Table of Contents * [Tools](#tools) * [Text Editors](#text-editors) * [Best Practices](#best-practices) * [Browsers Data Updating](#browsers-data-updating) * [Queries](#queries) * [Query Composition](#query-composition) * [Full List](#full-list) * [Debug](#debug) * [Browsers](#browsers) * [Config File](#config-file) * [`package.json`](#packagejson) * [`.browserslistrc`](#browserslistrc) * [Shareable Configs](#shareable-configs) * [Configuring for Different Environments](#configuring-for-different-environments) * [Custom Usage Data](#custom-usage-data) * [JS API](#js-api) * [Environment Variables](#environment-variables) * [Cache](#cache) * [Security Contact](#security-contact) * [For Enterprise](#for-enterprise) ## Tools * [`browserslist-rs`] is a Browserslist port to Rust. * [`browserl.ist`](https://browserl.ist/) is an online tool to check what browsers will be selected by some query. * [`browserslist-ga`] and [`browserslist-ga-export`] download your website browsers statistics to use it in `> 0.5% in my stats` query. * [`browserslist-useragent-regexp`] compiles Browserslist query to a RegExp to test browser useragent. * [`browserslist-useragent-ruby`] is a Ruby library to checks browser by user agent string to match Browserslist. * [`browserslist-browserstack`] runs BrowserStack tests for all browsers in Browserslist config. * [`browserslist-adobe-analytics`] use Adobe Analytics data to target browsers. * [`browserslist-new-relic`] generate a custom usage data file for Browserslist from your New Relic Browser data. * [`caniuse-api`] returns browsers which support some specific feature. * Run `npx browserslist` in your project directory to see project’s target browsers. This CLI tool is built-in and available in any project with Autoprefixer. [`browserslist-useragent-regexp`]: https://github.com/browserslist/browserslist-useragent-regexp [`browserslist-adobe-analytics`]: https://github.com/xeroxinteractive/browserslist-adobe-analytics [`browserslist-useragent-ruby`]: https://github.com/browserslist/browserslist-useragent-ruby [`browserslist-browserstack`]: https://github.com/xeroxinteractive/browserslist-browserstack [`browserslist-ga-export`]: https://github.com/browserslist/browserslist-ga-export [`browserslist-useragent`]: https://github.com/pastelsky/browserslist-useragent [`browserslist-ga`]: https://github.com/browserslist/browserslist-ga [`browserslist-new-relic`]: https://github.com/syntactic-salt/browserslist-new-relic [`caniuse-api`]: https://github.com/Nyalab/caniuse-api [`browserslist-rs`]: https://github.com/g-plane/browserslist-rs ### Text Editors These extensions will add syntax highlighting for `.browserslistrc` files. * [VS Code](https://marketplace.visualstudio.com/items?itemName=webben.browserslist) * [Vim](https://github.com/browserslist/vim-browserslist) ## Best Practices * There is a `defaults` query, which gives a reasonable configuration for most users: ```json "browserslist": [ "defaults" ] ``` * If you want to change the default set of browsers, we recommend combining `last 2 versions`, `not dead` with a usage number like `> 0.2%`. This is because `last n versions` on its own does not add popular old versions, while only using a percentage above `0.2%` will in the long run make popular browsers even more popular. We might run into a monopoly and stagnation situation, as we had with Internet Explorer 6. Please use this setting with caution. * Select browsers directly (`last 2 Chrome versions`) only if you are making a web app for a kiosk with one browser. There are a lot of browsers on the market. If you are making general web app you should respect browsers diversity. * Don’t remove browsers just because you don’t know them. Opera Mini has 100 million users in Africa and it is more popular in the global market than Microsoft Edge. Chinese QQ Browsers has more market share than Firefox and desktop Safari combined. ## Browsers Data Updating `npx browserslist@latest --update-db` updates `caniuse-lite` version in your npm, yarn or pnpm lock file. This update will bring data about new browsers to polyfills tools like Autoprefixer or Babel and reduce already unnecessary polyfills. You need to do it regularly for three reasons: 1. To use the latest browser’s versions and statistics in queries like `last 2 versions` or `>1%`. For example, if you created your project 2 years ago and did not update your dependencies, `last 1 version` will return 2 year old browsers. 2. Actual browsers data will lead to using less polyfills. It will reduce size of JS and CSS files and improve website performance. 3. `caniuse-lite` deduplication: to synchronize version in different tools. ## Queries Browserslist will use browsers and Node.js versions query from one of these sources: 1. `browserslist` key in `package.json` file in current or parent directories. **We recommend this way.** 2. `.browserslistrc` config file in current or parent directories. 3. `browserslist` config file in current or parent directories. 4. `BROWSERSLIST` environment variable. 5. If the above methods did not produce a valid result Browserslist will use defaults: `> 0.5%, last 2 versions, Firefox ESR, not dead`. ### Query Composition An `or` combiner can use the keyword `or` as well as `,`. `last 1 version or > 1%` is equal to `last 1 version, > 1%`. `and` query combinations are also supported to perform an intersection of all the previous queries: `last 1 version or chrome > 75 and > 1%` will select (`browser last version` or `Chrome since 76`) and `more than 1% marketshare`. There are 3 different ways to combine queries as depicted below. First you start with a single query and then we combine the queries to get our final list. Obviously you can *not* start with a `not` combiner, since there is no left-hand side query to combine it with. The left-hand is always resolved as `and` combiner even if `or` is used (this is an API implementation specificity). | Query combiner type | Illustration | Example | | ------------------- | :----------: | ------- | |`or`/`,` combiner
(union) | ![Union of queries](img/union.svg) | `> .5% or last 2 versions`
`> .5%, last 2 versions` | | `and` combiner
(intersection) | ![intersection of queries](img/intersection.svg) | `> .5% and last 2 versions` | | `not` combiner
(relative complement) | ![Relative complement of queries](img/complement.svg) | All those three are equivalent to the first one
`> .5% and not last 2 versions`
`> .5% or not last 2 versions`
`> .5%, not last 2 versions` | _A quick way to test your query is to do `npx browserslist '> 0.5%, not IE 11'` in your terminal._ ### Full List You can specify the browser and Node.js versions by queries (case insensitive): * `defaults`: Browserslist’s default browsers (`> 0.5%, last 2 versions, Firefox ESR, not dead`). * By usage statistics: * `> 5%`: browsers versions selected by global usage statistics. `>=`, `<` and `<=` work too. * `> 5% in US`: uses USA usage statistics. It accepts [two-letter country code]. * `> 5% in alt-AS`: uses Asia region usage statistics. List of all region codes can be found at [`caniuse-lite/data/regions`]. * `> 5% in my stats`: uses [custom usage data]. * `> 5% in browserslist-config-mycompany stats`: uses [custom usage data] from `browserslist-config-mycompany/browserslist-stats.json`. * `cover 99.5%`: most popular browsers that provide coverage. * `cover 99.5% in US`: same as above, with [two-letter country code]. * `cover 99.5% in my stats`: uses [custom usage data]. * Last versions: * `last 2 versions`: the last 2 versions for *each* browser. * `last 2 Chrome versions`: the last 2 versions of Chrome browser. * `last 2 major versions` or `last 2 iOS major versions`: all minor/patch releases of last 2 major versions. * `dead`: browsers without official support or updates for 24 months. Right now it is `IE 10`, `IE_Mob 11`, `BlackBerry 10`, `BlackBerry 7`, `Samsung 4` and `OperaMobile 12.1`. * Node.js versions: * `node 10` and `node 10.4`: selects latest Node.js `10.x.x` or `10.4.x` release. * `current node`: Node.js version used by Browserslist right now. * `maintained node versions`: all Node.js versions, which are [still maintained] by Node.js Foundation. * Browsers versions: * `iOS 7`: the iOS browser version 7 directly. * `Firefox > 20`: versions of Firefox newer than 20. `>=`, `<` and `<=` work too. It also works with Node.js. * `ie 6-8`: selects an inclusive range of versions. * `Firefox ESR`: the latest [Firefox Extended Support Release]. * `PhantomJS 2.1` and `PhantomJS 1.9`: selects Safari versions similar to PhantomJS runtime. * `extends browserslist-config-mycompany`: take queries from `browserslist-config-mycompany` npm package. * `supports es6-module`: browsers with support for specific features. `es6-module` here is the `feat` parameter at the URL of the [Can I Use] page. A list of all available features can be found at [`caniuse-lite/data/features`]. * `browserslist config`: the browsers defined in Browserslist config. Useful in Differential Serving to modify user’s config like `browserslist config and supports es6-module`. * `since 2015` or `last 2 years`: all versions released since year 2015 (also `since 2015-03` and `since 2015-03-10`). * `unreleased versions` or `unreleased Chrome versions`: alpha and beta versions. * `not ie <= 8`: exclude IE 8 and lower from previous queries. You can add `not ` to any query. [`caniuse-lite/data/regions`]: https://github.com/ben-eb/caniuse-lite/tree/master/data/regions [`caniuse-lite/data/features`]: https://github.com/ben-eb/caniuse-lite/tree/master/data/features [two-letter country code]: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements [custom usage data]: #custom-usage-data [still maintained]: https://github.com/nodejs/Release [Can I Use]: https://caniuse.com/ [Firefox Extended Support Release]: https://support.mozilla.org/en-US/kb/choosing-firefox-update-channel ### Grammar Definition There is a [grammar specification](./grammar.w3c-ebnf) about the query syntax, which may be helpful if you're implementing a parser or something else. ### Debug Run `npx browserslist` in project directory to see what browsers was selected by your queries. ```sh $ npx browserslist and_chr 61 and_ff 56 and_qq 1.2 and_uc 11.4 android 56 baidu 7.12 bb 10 chrome 62 edge 16 firefox 56 ios_saf 11 opera 48 safari 11 samsung 5 ``` ### Browsers The following table maps browser names & their target devices into identifiers used by browserslist. | Browser Name | Desktop | Android | iOS | Other Mobile | | ------------------| ---------------- | ------------------------- | ------------------------ | ----------------- | | Android (WebView) | | `Android` | | | | Baidu | `Baidu` | | | | | BlackBerry | | | | `BlackBerry` `bb` | | Chrome | `Chrome` | `ChromeAndroid` `and_chr` | ↪︎ `ios_saf`2 | | | Edge | `Edge` | ↪︎ `and_chrome` | ↪︎ `ios_saf`2 | | | Electron | `Electron` | | | | | Firefox | `Firefox` `ff` | `FirefoxAndroid` `and_ff` | ↪︎ `ios_saf`2 | | | Internet Explorer | `Explorer` `ie` | | | `ie_mob` | | Node.js | `Node` | | | | | [KaiOS Browser] | | | | `kaios` | | Opera | `Opera` | `op_mob` 1 | ↪︎ `ios_saf`2 | | | [Opera Mini] | | `OperaMini` | | | | [QQ browser] | | `and_qq` | | | | Safari | `Safari` | | `iOS` `ios_saf` | | | Samsung Internet | | `Samsung` | | | | [UC Browser] | | `UCAndroid` `and_uc` | | | - `↪︎ name` implies that the browser uses the same engine captured by `name` - 1 [Opera Mobile ≈ Chrome Android](https://github.com/Fyrd/caniuse/issues/5602#issuecomment-792385127) - 2 [All iOS browsers use WebKit](https://en.wikipedia.org/wiki/WebKit) [KaiOS Browser]: https://medium.com/design-at-kai/what-you-didnt-know-about-kaios-browser-53937ea1636 [QQ browser]: https://en.wikipedia.org/wiki/QQ_browser [Opera Mini]: https://en.wikipedia.org/wiki/Opera_Mini [UC Browser]: https://en.wikipedia.org/wiki/UC_Browser ## Config File ### `package.json` If you want to reduce config files in project root, you can specify browsers in `package.json` with `browserslist` key: ```json { "private": true, "dependencies": { "autoprefixer": "^6.5.4" }, "browserslist": [ "last 1 version", "> 1%", "IE 10" ] } ``` ### `.browserslistrc` Separated Browserslist config should be named `.browserslistrc` and have browsers queries split by a new line. Each line is combined with the `or` combiner. Comments starts with `#` symbol: ```yaml # Browsers that we support last 1 version > 1% IE 10 # sorry ``` Browserslist will check config in every directory in `path`. So, if tool process `app/styles/main.css`, you can put config to root, `app/` or `app/styles`. You can specify direct path in `BROWSERSLIST_CONFIG` environment variables. ## Shareable Configs You can use the following query to reference an exported Browserslist config from another package: ```json "browserslist": [ "extends browserslist-config-mycompany" ] ``` For security reasons, external configuration only supports packages that have the `browserslist-config-` prefix. npm scoped packages are also supported, by naming or prefixing the module with `@scope/browserslist-config`, such as `@scope/browserslist-config` or `@scope/browserslist-config-mycompany`. If you don’t accept Browserslist queries from users, you can disable the validation by using the or `BROWSERSLIST_DANGEROUS_EXTEND` environment variable. ```sh BROWSERSLIST_DANGEROUS_EXTEND=1 npx webpack ``` Because this uses `npm`'s resolution, you can also reference specific files in a package: ```json "browserslist": [ "extends browserslist-config-mycompany/desktop", "extends browserslist-config-mycompany/mobile" ] ``` When writing a shared Browserslist package, just export an array. `browserslist-config-mycompany/index.js`: ```js module.exports = [ 'last 1 version', '> 1%', 'ie 10' ] ``` You can also include a `browserslist-stats.json` file as part of your shareable config at the root and query it using `> 5% in browserslist-config-mycompany stats`. It uses the same format as `extends` and the `dangerousExtend` property as above. You can export configs for different environments and select environment by `BROWSERSLIST_ENV` or `env` option in your tool: ```js module.exports = { development: [ 'last 1 version' ], production: [ 'last 1 version', '> 1%', 'ie 10' ] } ``` ## Configuring for Different Environments You can also specify different browser queries for various environments. Browserslist will choose query according to `BROWSERSLIST_ENV` or `NODE_ENV` variables. If none of them is declared, Browserslist will firstly look for `production` queries and then use defaults. In `package.json`: ```js "browserslist": { "production": [ "> 1%", "ie 10" ], "modern": [ "last 1 chrome version", "last 1 firefox version" ], "ssr": [ "node 12" ] } ``` In `.browserslistrc` config: ```ini [production] > 1% ie 10 [modern] last 1 chrome version last 1 firefox version [ssr] node 12 ``` ## Custom Usage Data If you have a website, you can query against the usage statistics of your site. [`browserslist-ga`] will ask access to Google Analytics and then generate `browserslist-stats.json`: ``` npx browserslist-ga ``` Or you can use [`browserslist-ga-export`] to convert Google Analytics data without giving a password for Google account. You can generate usage statistics file by any other method. File format should be like: ```js { "ie": { "6": 0.01, "7": 0.4, "8": 1.5 }, "chrome": { … }, … } ``` Note that you can query against your custom usage data while also querying against global or regional data. For example, the query `> 1% in my stats, > 5% in US, 10%` is permitted. [`browserslist-ga-export`]: https://github.com/browserslist/browserslist-ga-export [`browserslist-ga`]: https://github.com/browserslist/browserslist-ga [Can I Use]: https://caniuse.com/ ## JS API ```js const browserslist = require('browserslist') // Your CSS/JS build tool code function process (source, opts) { const browsers = browserslist(opts.overrideBrowserslist, { stats: opts.stats, path: opts.file, env: opts.env }) // Your code to add features for selected browsers } ``` Queries can be a string `"> 1%, IE 10"` or an array `['> 1%', 'IE 10']`. If a query is missing, Browserslist will look for a config file. You can provide a `path` option (that can be a file) to find the config file relatively to it. Options: * `path`: file or a directory path to look for config file. Default is `.`. * `env`: what environment section use from config. Default is `production`. * `stats`: custom usage statistics data. * `config`: path to config if you want to set it manually. * `ignoreUnknownVersions`: do not throw on direct query (like `ie 12`). Default is `false`. * `dangerousExtend`: Disable security checks for `extend` query. Default is `false`. * `throwOnMissing`: throw a error if env is not found. Default is `false`. * `mobileToDesktop`: Use desktop browsers if Can I Use doesn’t have data about this mobile version. Can I Use has only data only about latest versions of mobile browsers. By default, `last 2 and_ff versions` returns `and_ff 90` and with this option it returns `and_ff 91, and_ff 90`. This option may lead to unknown browser version error (in example Can I Use doesn’t have data for `and_ff 91` yet). Default is `false`. For non-JS environment and debug purpose you can use CLI tool: ```sh browserslist "> 1%, IE 10" ``` You can get total users coverage for selected browsers by JS API: ```js browserslist.coverage(browserslist('> 1%')) //=> 81.4 ``` ```js browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1 ``` ```js browserslist.coverage(browserslist('> 1% in my stats'), 'my stats') //=> 83.1 ``` ```js browserslist.coverage(browserslist('> 1% in my stats', { stats }), stats) //=> 82.2 ``` Or by CLI: ```sh $ browserslist --coverage "> 1%" These browsers account for 81.4% of all users globally ``` ```sh $ browserslist --coverage=US "> 1% in US" These browsers account for 83.1% of all users in the US ``` ```sh $ browserslist --coverage "> 1% in my stats" These browsers account for 83.1% of all users in custom statistics ``` ```sh $ browserslist --coverage "> 1% in my stats" --stats=./stats.json These browsers account for 83.1% of all users in custom statistics ``` ## Environment Variables If a tool uses Browserslist inside, you can change the Browserslist settings with [environment variables]: * `BROWSERSLIST` with browsers queries. ```sh BROWSERSLIST="> 5%" npx webpack ``` * `BROWSERSLIST_CONFIG` with path to config file. ```sh BROWSERSLIST_CONFIG=./config/browserslist npx webpack ``` * `BROWSERSLIST_ENV` with environments string. ```sh BROWSERSLIST_ENV="development" npx webpack ``` * `BROWSERSLIST_STATS` with path to the custom usage data for `> 1% in my stats` query. ```sh BROWSERSLIST_STATS=./config/usage_data.json npx webpack ``` * `BROWSERSLIST_DISABLE_CACHE` if you want to disable config reading cache. ```sh BROWSERSLIST_DISABLE_CACHE=1 npx webpack ``` * `BROWSERSLIST_DANGEROUS_EXTEND` to disable security shareable config name check. ```sh BROWSERSLIST_DANGEROUS_EXTEND=1 npx webpack ``` [environment variables]: https://en.wikipedia.org/wiki/Environment_variable ## Cache Browserslist caches the configuration it reads from `package.json` and `browserslist` files, as well as knowledge about the existence of files, for the duration of the hosting process. To clear these caches, use: ```js browserslist.clearCaches() ``` To disable the caching altogether, set the `BROWSERSLIST_DISABLE_CACHE` environment variable. ## Security Contact To report a security vulnerability, please use the [Tidelift security contact]. Tidelift will coordinate the fix and disclosure. [Tidelift security contact]: https://tidelift.com/security ## For Enterprise Available as part of the Tidelift Subscription. The maintainers of `browserslist` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-browserslist?utm_source=npm-browserslist&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) browserslist-4.19.3/browser.js000066400000000000000000000020701420403321400163630ustar00rootroot00000000000000var BrowserslistError = require('./error') function noop() {} module.exports = { loadQueries: function loadQueries() { throw new BrowserslistError( 'Sharable configs are not supported in client-side build of Browserslist' ) }, getStat: function getStat(opts) { return opts.stats }, loadConfig: function loadConfig(opts) { if (opts.config) { throw new BrowserslistError( 'Browserslist config are not supported in client-side build' ) } }, loadCountry: function loadCountry() { throw new BrowserslistError( 'Country statistics are not supported ' + 'in client-side build of Browserslist' ) }, loadFeature: function loadFeature() { throw new BrowserslistError( 'Supports queries are not available in client-side build of Browserslist' ) }, currentNode: function currentNode(resolve, context) { return resolve(['maintained node versions'], context)[0] }, parseConfig: noop, readConfig: noop, findConfig: noop, clearCaches: noop, oldDataWarning: noop } browserslist-4.19.3/cli.js000077500000000000000000000101011420403321400154440ustar00rootroot00000000000000#!/usr/bin/env node var fs = require('fs') var browserslist = require('./') var updateDb = require('./update-db') var pkg = require('./package.json') var args = process.argv.slice(2) var USAGE = 'Usage:\n' + ' npx browserslist\n' + ' npx browserslist "QUERIES"\n' + ' npx browserslist --json "QUERIES"\n' + ' npx browserslist --config="path/to/browserlist/file"\n' + ' npx browserslist --coverage "QUERIES"\n' + ' npx browserslist --coverage=US "QUERIES"\n' + ' npx browserslist --coverage=US,RU,global "QUERIES"\n' + ' npx browserslist --env="environment name defined in config"\n' + ' npx browserslist --stats="path/to/browserlist/stats/file"\n' + ' npx browserslist --mobile-to-desktop\n' + ' npx browserslist --ignore-unknown-versions\n' + ' npx browserslist --update-db' function isArg(arg) { return args.some(function (str) { return str === arg || str.indexOf(arg + '=') === 0 }) } function error(msg) { process.stderr.write('browserslist: ' + msg + '\n') process.exit(1) } if (isArg('--help') || isArg('-h')) { process.stdout.write(pkg.description + '.\n\n' + USAGE + '\n') } else if (isArg('--version') || isArg('-v')) { process.stdout.write('browserslist ' + pkg.version + '\n') } else if (isArg('--update-db')) { /* c8 ignore next 3 */ updateDb(function (str) { process.stdout.write(str) }) } else { var mode = 'browsers' var opts = {} var queries var areas for (var i = 0; i < args.length; i++) { if (args[i][0] !== '-') { queries = args[i].replace(/^["']|["']$/g, '') continue } var arg = args[i].split('=') var name = arg[0] var value = arg[1] if (value) value = value.replace(/^["']|["']$/g, '') if (name === '--config' || name === '-b') { opts.config = value } else if (name === '--env' || name === '-e') { opts.env = value } else if (name === '--stats' || name === '-s') { opts.stats = value } else if (name === '--coverage' || name === '-c') { if (mode !== 'json') mode = 'coverage' if (value) { areas = value.split(',') } else { areas = ['global'] } } else if (name === '--json') { mode = 'json' } else if (name === '--mobile-to-desktop') { /* c8 ignore next */ opts.mobileToDesktop = true } else if (name === '--ignore-unknown-versions') { /* c8 ignore next */ opts.ignoreUnknownVersions = true } else { error('Unknown arguments ' + args[i] + '.\n\n' + USAGE) } } var browsers try { browsers = browserslist(queries, opts) } catch (e) { if (e.name === 'BrowserslistError') { error(e.message) } else /* c8 ignore start */ { throw e } /* c8 ignore end */ } var coverage if (mode === 'browsers') { browsers.forEach(function (browser) { process.stdout.write(browser + '\n') }) } else if (areas) { coverage = areas.map(function (area) { var stats if (area !== 'global') { stats = area } else if (opts.stats) { stats = JSON.parse(fs.readFileSync(opts.stats)) } var result = browserslist.coverage(browsers, stats) var round = Math.round(result * 100) / 100.0 return [area, round] }) if (mode === 'coverage') { var prefix = 'These browsers account for ' process.stdout.write(prefix) coverage.forEach(function (data, index) { var area = data[0] var round = data[1] var end = 'globally' if (area && area !== 'global') { end = 'in the ' + area.toUpperCase() } else if (opts.stats) { end = 'in custom statistics' } if (index !== 0) { process.stdout.write(prefix.replace(/./g, ' ')) } process.stdout.write(round + '% of all users ' + end + '\n') }) } } if (mode === 'json') { var data = { browsers: browsers } if (coverage) { data.coverage = coverage.reduce(function (object, j) { object[j[0]] = j[1] return object }, {}) } process.stdout.write(JSON.stringify(data, null, ' ') + '\n') } } browserslist-4.19.3/error.d.ts000066400000000000000000000002331420403321400162640ustar00rootroot00000000000000declare class BrowserslistError extends Error { constructor(message: any) name: 'BrowserslistError' browserslist: true } export = BrowserslistError browserslist-4.19.3/error.js000066400000000000000000000004531420403321400160340ustar00rootroot00000000000000function BrowserslistError(message) { this.name = 'BrowserslistError' this.message = message this.browserslist = true if (Error.captureStackTrace) { Error.captureStackTrace(this, BrowserslistError) } } BrowserslistError.prototype = Error.prototype module.exports = BrowserslistError browserslist-4.19.3/grammar.w3c-ebnf000066400000000000000000000051651420403321400173260ustar00rootroot00000000000000NonSpaceChar ::= [#x21-#xD7FF] | [#xE000-#xFFFD] Digit ::= [0-9] Space ::= ' ' | '\t' Numeric ::= (Digit* '.')? Digit+ BrowserName ::= 'ie' | 'edge' | 'firefox' | 'chrome' | 'safari' | 'opera' | 'ios_saf' | 'op_mini' | 'android' | 'bb' | 'op_mob' | 'and_chr' | 'and_ff' | 'ie_mob' | 'and_uc' | 'samsung' | 'and_qq' | 'baidu' | 'kaios' | 'fx' | 'ff' | 'ios' | 'explorer' | 'blackberry' | 'explorermobile' | 'operamini' | 'operamobile' | 'chromeandroid' | 'firefoxandroid' | 'ucandroid' | 'qqandroid' CompareOperator ::= ('>' | '<') '='? VersionKeyword ::= 'version' 's'? LastBrowsers ::= 'last' Space+ Digit+ Space+ (BrowserName Space+)? ('major' Space+)? VersionKeyword LastElectron ::= 'last' Space+ Digit+ Space+ 'electron' Space+ ('major' Space+)? VersionKeyword Unreleased ::= 'unreleased' Space+ ((BrowserName | 'electron') Space+)? VersionKeyword Years ::= 'last' Space+ Numeric Space+ 'year' 's'? Since ::= 'since' Space Digit+ ('-' Digit+ ('-' Digit+)?)? Region ::= ('alt-' [a-z][a-z] | [A-Z][A-Z]) MyStats ::= 'my' Space+ 'stats' CustomStats ::= NonSpaceChar+ Space+ 'stats' Percentage ::= CompareOperator Space* Numeric '%' (Space+ 'in' Space+ (MyStats | CustomStats | Region))? Cover ::= 'cover' Space+ Numeric '%' (Space+ 'in' Space+ (MyStats | Region))? FeatureSupport ::= 'supports' Space+ ([a-z0-9] | '-')+ Version ::= (Digit | '.')+ BoundedRange ::= Version Space* '-' Space* Version UnboundedRange ::= CompareOperator Space* Version Electron ::= 'electron' Space+ (BoundedRange | UnboundedRange | Version) Node ::= 'node' Space+ (BoundedRange | UnboundedRange | Version) Browser ::= BrowserName Space+ (BoundedRange | UnboundedRange | Version | 'tp') FirefoxESR ::= ('firefox' | 'fx' | 'ff') Space+ 'esr' OperaMini ::= ('operamini' | 'op_mini') Space+ 'all' CurrentNode ::= 'current' Space+ 'node' MaintainedNode ::= 'maintained' Space+ 'node' Space+ 'versions' Phantom ::= 'phantomjs' Space+ ('1.9' | '2.1') BrowserslistConfig ::= 'browserslist config' Extending ::= 'extends' Space NonSpaceChar+ Defaults ::= 'defaults' Dead ::= 'dead' QueryAtom ::= LastBrowsers | LastElectron | Unreleased | Years | Since | Percentage | Cover | FeatureSupport | Electron | Node | Browser | FirefoxESR | OperaMini | CurrentNode | MaintainedNode | Phantom | BrowserslistConfig | Extending | Defaults | Dead SingleQuery ::= ('not' Space)? QueryAtom OrOperator ::= Space+ 'or' Space+ | Space* ',' Space* AndOperator ::= Space+ 'and' Space+ BrowserslistQuery ::= QueryAtom ((OrOperator | AndOperator) SingleQuery)* Root ::= BrowserslistQuery browserslist-4.19.3/img/000077500000000000000000000000001420403321400151175ustar00rootroot00000000000000browserslist-4.19.3/img/complement.svg000066400000000000000000000011421420403321400200010ustar00rootroot00000000000000browserslist-4.19.3/img/icon.svg000066400000000000000000000021471420403321400165740ustar00rootroot00000000000000Browserslist iconbrowserslist-4.19.3/img/intersection.svg000066400000000000000000000011421420403321400203440ustar00rootroot00000000000000browserslist-4.19.3/img/logo.svg000066400000000000000000000063651420403321400166120ustar00rootroot00000000000000Browserslist logobrowserslist-4.19.3/img/union.svg000066400000000000000000000011501420403321400167650ustar00rootroot00000000000000browserslist-4.19.3/index.d.ts000066400000000000000000000075541420403321400162570ustar00rootroot00000000000000/** * Return array of browsers by selection queries. * * ```js * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8'] * ``` * * @param queries Browser queries. * @returns Array with browser names in Can I Use. */ declare function browserslist( queries?: string | readonly string[] | null, opts?: browserslist.Options ): string[] declare namespace browserslist { interface Options { /** * Path to processed file. It will be used to find config files. */ path?: string | false /** * Processing environment. It will be used to take right queries * from config file. */ env?: string /** * Custom browser usage statistics for "> 1% in my stats" query. */ stats?: Stats | string /** * Path to config file with queries. */ config?: string /** * Do not throw on unknown version in direct query. */ ignoreUnknownVersions?: boolean /** * Throw a error if env is not found. */ throwOnMissing?: boolean /** * Disable security checks for extend query. */ dangerousExtend?: boolean /** * Alias mobile browsers to the desktop version when Can I Use * doesn’t have data about the specified version. */ mobileToDesktop?: boolean } type Config = { defaults: string[] [section: string]: string[] | undefined } interface Stats { [browser: string]: { [version: string]: number } } /** * Browser names aliases. */ let aliases: { [alias: string]: string | undefined } /** * Aliases to work with joined versions like `ios_saf 7.0-7.1`. */ let versionAliases: { [browser: string]: | { [version: string]: string | undefined } | undefined } /** * Can I Use only provides a few versions for some browsers (e.g. `and_chr`). * * Fallback to a similar browser for unknown versions. */ let desktopNames: { [browser: string]: string | undefined } let data: { [browser: string]: | { name: string versions: string[] released: string[] releaseDate: { [version: string]: number | undefined | null } } | undefined } interface Usage { [version: string]: number } let usage: { global?: Usage custom?: Usage | null [country: string]: Usage | undefined | null } let cache: { [feature: string]: { [name: string]: 'y' | 'n' } } /** * Default browsers query */ let defaults: readonly string[] /** * Which statistics should be used. Country code or custom statistics. * Pass `"my stats"` to load statistics from `Browserslist` files. */ type StatsOptions = string | 'my stats' | Stats | { dataByBrowser: Stats } /** * Return browsers market coverage. * * ```js * browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1 * ``` * * @param browsers Browsers names in Can I Use. * @param stats Which statistics should be used. * @returns Total market coverage for all selected browsers. */ function coverage(browsers: readonly string[], stats?: StatsOptions): number function clearCaches(): void function parseConfig(string: string): Config function readConfig(file: string): Config function findConfig(...pathSegments: string[]): Config | undefined interface LoadConfigOptions { config?: string path?: string env?: string } function loadConfig(options: LoadConfigOptions): string[] | undefined } declare global { namespace NodeJS { interface ProcessEnv { BROWSERSLIST?: string BROWSERSLIST_CONFIG?: string BROWSERSLIST_DANGEROUS_EXTEND?: string BROWSERSLIST_DISABLE_CACHE?: string BROWSERSLIST_ENV?: string BROWSERSLIST_IGNORE_OLD_DATA?: string BROWSERSLIST_STATS?: string } } } export = browserslist browserslist-4.19.3/index.js000066400000000000000000001024551420403321400160170ustar00rootroot00000000000000var jsReleases = require('node-releases/data/processed/envs.json') var agents = require('caniuse-lite/dist/unpacker/agents').agents var jsEOL = require('node-releases/data/release-schedule/release-schedule.json') var path = require('path') var e2c = require('electron-to-chromium/versions') var BrowserslistError = require('./error') var env = require('./node') // Will load browser.js in webpack var YEAR = 365.259641 * 24 * 60 * 60 * 1000 var ANDROID_EVERGREEN_FIRST = 37 var QUERY_OR = 1 var QUERY_AND = 2 function isVersionsMatch(versionA, versionB) { return (versionA + '.').indexOf(versionB + '.') === 0 } function isEolReleased(name) { var version = name.slice(1) return jsReleases.some(function (i) { return isVersionsMatch(i.version, version) }) } function normalize(versions) { return versions.filter(function (version) { return typeof version === 'string' }) } function normalizeElectron(version) { var versionToUse = version if (version.split('.').length === 3) { versionToUse = version.split('.').slice(0, -1).join('.') } return versionToUse } function nameMapper(name) { return function mapName(version) { return name + ' ' + version } } function getMajor(version) { return parseInt(version.split('.')[0]) } function getMajorVersions(released, number) { if (released.length === 0) return [] var majorVersions = uniq(released.map(getMajor)) var minimum = majorVersions[majorVersions.length - number] if (!minimum) { return released } var selected = [] for (var i = released.length - 1; i >= 0; i--) { if (minimum > getMajor(released[i])) break selected.unshift(released[i]) } return selected } function uniq(array) { var filtered = [] for (var i = 0; i < array.length; i++) { if (filtered.indexOf(array[i]) === -1) filtered.push(array[i]) } return filtered } // Helpers function fillUsage(result, name, data) { for (var i in data) { result[name + ' ' + i] = data[i] } } function generateFilter(sign, version) { version = parseFloat(version) if (sign === '>') { return function (v) { return parseFloat(v) > version } } else if (sign === '>=') { return function (v) { return parseFloat(v) >= version } } else if (sign === '<') { return function (v) { return parseFloat(v) < version } } else { return function (v) { return parseFloat(v) <= version } } } function generateSemverFilter(sign, version) { version = version.split('.').map(parseSimpleInt) version[1] = version[1] || 0 version[2] = version[2] || 0 if (sign === '>') { return function (v) { v = v.split('.').map(parseSimpleInt) return compareSemver(v, version) > 0 } } else if (sign === '>=') { return function (v) { v = v.split('.').map(parseSimpleInt) return compareSemver(v, version) >= 0 } } else if (sign === '<') { return function (v) { v = v.split('.').map(parseSimpleInt) return compareSemver(version, v) > 0 } } else { return function (v) { v = v.split('.').map(parseSimpleInt) return compareSemver(version, v) >= 0 } } } function parseSimpleInt(x) { return parseInt(x) } function compare(a, b) { if (a < b) return -1 if (a > b) return +1 return 0 } function compareSemver(a, b) { return ( compare(parseInt(a[0]), parseInt(b[0])) || compare(parseInt(a[1] || '0'), parseInt(b[1] || '0')) || compare(parseInt(a[2] || '0'), parseInt(b[2] || '0')) ) } // this follows the npm-like semver behavior function semverFilterLoose(operator, range) { range = range.split('.').map(parseSimpleInt) if (typeof range[1] === 'undefined') { range[1] = 'x' } // ignore any patch version because we only return minor versions // range[2] = 'x' switch (operator) { case '<=': return function (version) { version = version.split('.').map(parseSimpleInt) return compareSemverLoose(version, range) <= 0 } case '>=': default: return function (version) { version = version.split('.').map(parseSimpleInt) return compareSemverLoose(version, range) >= 0 } } } // this follows the npm-like semver behavior function compareSemverLoose(version, range) { if (version[0] !== range[0]) { return version[0] < range[0] ? -1 : +1 } if (range[1] === 'x') { return 0 } if (version[1] !== range[1]) { return version[1] < range[1] ? -1 : +1 } return 0 } function resolveVersion(data, version) { if (data.versions.indexOf(version) !== -1) { return version } else if (browserslist.versionAliases[data.name][version]) { return browserslist.versionAliases[data.name][version] } else { return false } } function normalizeVersion(data, version) { var resolved = resolveVersion(data, version) if (resolved) { return resolved } else if (data.versions.length === 1) { return data.versions[0] } else { return false } } function filterByYear(since, context) { since = since / 1000 return Object.keys(agents).reduce(function (selected, name) { var data = byName(name, context) if (!data) return selected var versions = Object.keys(data.releaseDate).filter(function (v) { var date = data.releaseDate[v] return date !== null && date >= since }) return selected.concat(versions.map(nameMapper(data.name))) }, []) } function cloneData(data) { return { name: data.name, versions: data.versions, released: data.released, releaseDate: data.releaseDate } } function mapVersions(data, map) { data.versions = data.versions.map(function (i) { return map[i] || i }) data.released = data.versions.map(function (i) { return map[i] || i }) var fixedDate = {} for (var i in data.releaseDate) { fixedDate[map[i] || i] = data.releaseDate[i] } data.releaseDate = fixedDate return data } function byName(name, context) { name = name.toLowerCase() name = browserslist.aliases[name] || name if (context.mobileToDesktop && browserslist.desktopNames[name]) { var desktop = browserslist.data[browserslist.desktopNames[name]] if (name === 'android') { return normalizeAndroidData(cloneData(browserslist.data[name]), desktop) } else { var cloned = cloneData(desktop) cloned.name = name if (name === 'op_mob') { cloned = mapVersions(cloned, { '10.0-10.1': '10' }) } return cloned } } return browserslist.data[name] } function normalizeAndroidVersions(androidVersions, chromeVersions) { var firstEvergreen = ANDROID_EVERGREEN_FIRST var last = chromeVersions[chromeVersions.length - 1] return androidVersions .filter(function (version) { return /^(?:[2-4]\.|[34]$)/.test(version) }) .concat(chromeVersions.slice(firstEvergreen - last - 1)) } function normalizeAndroidData(android, chrome) { android.released = normalizeAndroidVersions(android.released, chrome.released) android.versions = normalizeAndroidVersions(android.versions, chrome.versions) return android } function checkName(name, context) { var data = byName(name, context) if (!data) throw new BrowserslistError('Unknown browser ' + name) return data } function unknownQuery(query) { return new BrowserslistError( 'Unknown browser query `' + query + '`. ' + 'Maybe you are using old Browserslist or made typo in query.' ) } function filterAndroid(list, versions, context) { if (context.mobileToDesktop) return list var released = browserslist.data.android.released var last = released[released.length - 1] var diff = last - ANDROID_EVERGREEN_FIRST - versions if (diff > 0) { return list.slice(-1) } else { return list.slice(diff - 1) } } /** * Resolves queries into a browser list. * @param {string|string[]} queries Queries to combine. * Either an array of queries or a long string of queries. * @param {object} [context] Optional arguments to * the select function in `queries`. * @returns {string[]} A list of browsers */ function resolve(queries, context) { if (Array.isArray(queries)) { queries = flatten(queries.map(parse)) } else { queries = parse(queries) } return queries.reduce(function (result, query, index) { var selection = query.queryString var isExclude = selection.indexOf('not ') === 0 if (isExclude) { if (index === 0) { throw new BrowserslistError( 'Write any browsers query (for instance, `defaults`) ' + 'before `' + selection + '`' ) } selection = selection.slice(4) } for (var i = 0; i < QUERIES.length; i++) { var type = QUERIES[i] var match = selection.match(type.regexp) if (match) { var args = [context].concat(match.slice(1)) var array = type.select.apply(browserslist, args).map(function (j) { var parts = j.split(' ') if (parts[1] === '0') { return parts[0] + ' ' + byName(parts[0], context).versions[0] } else { return j } }) switch (query.type) { case QUERY_AND: if (isExclude) { return result.filter(function (j) { return array.indexOf(j) === -1 }) } else { return result.filter(function (j) { return array.indexOf(j) !== -1 }) } case QUERY_OR: default: if (isExclude) { var filter = {} array.forEach(function (j) { filter[j] = true }) return result.filter(function (j) { return !filter[j] }) } return result.concat(array) } } } throw unknownQuery(selection) }, []) } var cache = {} /** * Return array of browsers by selection queries. * * @param {(string|string[])} [queries=browserslist.defaults] Browser queries. * @param {object} [opts] Options. * @param {string} [opts.path="."] Path to processed file. * It will be used to find config files. * @param {string} [opts.env="production"] Processing environment. * It will be used to take right * queries from config file. * @param {string} [opts.config] Path to config file with queries. * @param {object} [opts.stats] Custom browser usage statistics * for "> 1% in my stats" query. * @param {boolean} [opts.ignoreUnknownVersions=false] Do not throw on unknown * version in direct query. * @param {boolean} [opts.dangerousExtend] Disable security checks * for extend query. * @param {boolean} [opts.throwOnMissing] Throw error on missing env. * @param {boolean} [opts.mobileToDesktop] Alias mobile browsers to the desktop * version when Can I Use doesn't have * data about the specified version. * @returns {string[]} Array with browser names in Can I Use. * * @example * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8'] */ function browserslist(queries, opts) { if (typeof opts === 'undefined') opts = {} if (typeof opts.path === 'undefined') { opts.path = path.resolve ? path.resolve('.') : '.' } if (typeof queries === 'undefined' || queries === null) { var config = browserslist.loadConfig(opts) if (config) { queries = config } else { queries = browserslist.defaults } } if (!(typeof queries === 'string' || Array.isArray(queries))) { throw new BrowserslistError( 'Browser queries must be an array or string. Got ' + typeof queries + '.' ) } var context = { ignoreUnknownVersions: opts.ignoreUnknownVersions, dangerousExtend: opts.dangerousExtend, mobileToDesktop: opts.mobileToDesktop, path: opts.path, env: opts.env } env.oldDataWarning(browserslist.data) var stats = env.getStat(opts, browserslist.data) if (stats) { context.customUsage = {} for (var browser in stats) { fillUsage(context.customUsage, browser, stats[browser]) } } var cacheKey = JSON.stringify([queries, context]) if (cache[cacheKey]) return cache[cacheKey] var result = uniq(resolve(queries, context)).sort(function (name1, name2) { name1 = name1.split(' ') name2 = name2.split(' ') if (name1[0] === name2[0]) { // assumptions on caniuse data // 1) version ranges never overlaps // 2) if version is not a range, it never contains `-` var version1 = name1[1].split('-')[0] var version2 = name2[1].split('-')[0] return compareSemver(version2.split('.'), version1.split('.')) } else { return compare(name1[0], name2[0]) } }) if (!process.env.BROWSERSLIST_DISABLE_CACHE) { cache[cacheKey] = result } return result } function parse(queries) { var qs = [] do { queries = doMatch(queries, qs) } while (queries) return qs } function doMatch(string, qs) { var or = /^(?:,\s*|\s+or\s+)(.*)/i var and = /^\s+and\s+(.*)/i return find(string, function (parsed, n, max) { if (and.test(parsed)) { qs.unshift({ type: QUERY_AND, queryString: parsed.match(and)[1] }) return true } else if (or.test(parsed)) { qs.unshift({ type: QUERY_OR, queryString: parsed.match(or)[1] }) return true } else if (n === max) { qs.unshift({ type: QUERY_OR, queryString: parsed.trim() }) return true } return false }) } function find(string, predicate) { for (var n = 1, max = string.length; n <= max; n++) { var parsed = string.substr(-n, n) if (predicate(parsed, n, max)) { return string.slice(0, -n) } } return '' } function flatten(array) { if (!Array.isArray(array)) return [array] return array.reduce(function (a, b) { return a.concat(flatten(b)) }, []) } // Will be filled by Can I Use data below browserslist.cache = {} browserslist.data = {} browserslist.usage = { global: {}, custom: null } // Default browsers query browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead'] // Browser names aliases browserslist.aliases = { fx: 'firefox', ff: 'firefox', ios: 'ios_saf', explorer: 'ie', blackberry: 'bb', explorermobile: 'ie_mob', operamini: 'op_mini', operamobile: 'op_mob', chromeandroid: 'and_chr', firefoxandroid: 'and_ff', ucandroid: 'and_uc', qqandroid: 'and_qq' } // Can I Use only provides a few versions for some browsers (e.g. and_chr). // Fallback to a similar browser for unknown versions browserslist.desktopNames = { and_chr: 'chrome', and_ff: 'firefox', ie_mob: 'ie', op_mob: 'opera', android: 'chrome' // has extra processing logic } // Aliases to work with joined versions like `ios_saf 7.0-7.1` browserslist.versionAliases = {} browserslist.clearCaches = env.clearCaches browserslist.parseConfig = env.parseConfig browserslist.readConfig = env.readConfig browserslist.findConfig = env.findConfig browserslist.loadConfig = env.loadConfig /** * Return browsers market coverage. * * @param {string[]} browsers Browsers names in Can I Use. * @param {string|object} [stats="global"] Which statistics should be used. * Country code or custom statistics. * Pass `"my stats"` to load statistics * from Browserslist files. * * @return {number} Total market coverage for all selected browsers. * * @example * browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1 */ browserslist.coverage = function (browsers, stats) { var data if (typeof stats === 'undefined') { data = browserslist.usage.global } else if (stats === 'my stats') { var opts = {} opts.path = path.resolve ? path.resolve('.') : '.' var customStats = env.getStat(opts) if (!customStats) { throw new BrowserslistError('Custom usage statistics was not provided') } data = {} for (var browser in customStats) { fillUsage(data, browser, customStats[browser]) } } else if (typeof stats === 'string') { if (stats.length > 2) { stats = stats.toLowerCase() } else { stats = stats.toUpperCase() } env.loadCountry(browserslist.usage, stats, browserslist.data) data = browserslist.usage[stats] } else { if ('dataByBrowser' in stats) { stats = stats.dataByBrowser } data = {} for (var name in stats) { for (var version in stats[name]) { data[name + ' ' + version] = stats[name][version] } } } return browsers.reduce(function (all, i) { var usage = data[i] if (usage === undefined) { usage = data[i.replace(/ \S+$/, ' 0')] } return all + (usage || 0) }, 0) } function nodeQuery(context, version) { var nodeReleases = jsReleases.filter(function (i) { return i.name === 'nodejs' }) var matched = nodeReleases.filter(function (i) { return isVersionsMatch(i.version, version) }) if (matched.length === 0) { if (context.ignoreUnknownVersions) { return [] } else { throw new BrowserslistError('Unknown version ' + version + ' of Node.js') } } return ['node ' + matched[matched.length - 1].version] } function sinceQuery(context, year, month, date) { year = parseInt(year) month = parseInt(month || '01') - 1 date = parseInt(date || '01') return filterByYear(Date.UTC(year, month, date, 0, 0, 0), context) } function coverQuery(context, coverage, statMode) { coverage = parseFloat(coverage) var usage = browserslist.usage.global if (statMode) { if (statMode.match(/^my\s+stats$/i)) { if (!context.customUsage) { throw new BrowserslistError('Custom usage statistics was not provided') } usage = context.customUsage } else { var place if (statMode.length === 2) { place = statMode.toUpperCase() } else { place = statMode.toLowerCase() } env.loadCountry(browserslist.usage, place, browserslist.data) usage = browserslist.usage[place] } } var versions = Object.keys(usage).sort(function (a, b) { return usage[b] - usage[a] }) var coveraged = 0 var result = [] var version for (var i = 0; i < versions.length; i++) { version = versions[i] if (usage[version] === 0) break coveraged += usage[version] result.push(version) if (coveraged >= coverage) break } return result } var QUERIES = [ { regexp: /^last\s+(\d+)\s+major\s+versions?$/i, select: function (context, versions) { return Object.keys(agents).reduce(function (selected, name) { var data = byName(name, context) if (!data) return selected var list = getMajorVersions(data.released, versions) list = list.map(nameMapper(data.name)) if (data.name === 'android') { list = filterAndroid(list, versions, context) } return selected.concat(list) }, []) } }, { regexp: /^last\s+(\d+)\s+versions?$/i, select: function (context, versions) { return Object.keys(agents).reduce(function (selected, name) { var data = byName(name, context) if (!data) return selected var list = data.released.slice(-versions) list = list.map(nameMapper(data.name)) if (data.name === 'android') { list = filterAndroid(list, versions, context) } return selected.concat(list) }, []) } }, { regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i, select: function (context, versions) { var validVersions = getMajorVersions(Object.keys(e2c), versions) return validVersions.map(function (i) { return 'chrome ' + e2c[i] }) } }, { regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i, select: function (context, versions, name) { var data = checkName(name, context) var validVersions = getMajorVersions(data.released, versions) var list = validVersions.map(nameMapper(data.name)) if (data.name === 'android') { list = filterAndroid(list, versions, context) } return list } }, { regexp: /^last\s+(\d+)\s+electron\s+versions?$/i, select: function (context, versions) { return Object.keys(e2c) .slice(-versions) .map(function (i) { return 'chrome ' + e2c[i] }) } }, { regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i, select: function (context, versions, name) { var data = checkName(name, context) var list = data.released.slice(-versions).map(nameMapper(data.name)) if (data.name === 'android') { list = filterAndroid(list, versions, context) } return list } }, { regexp: /^unreleased\s+versions$/i, select: function (context) { return Object.keys(agents).reduce(function (selected, name) { var data = byName(name, context) if (!data) return selected var list = data.versions.filter(function (v) { return data.released.indexOf(v) === -1 }) list = list.map(nameMapper(data.name)) return selected.concat(list) }, []) } }, { regexp: /^unreleased\s+electron\s+versions?$/i, select: function () { return [] } }, { regexp: /^unreleased\s+(\w+)\s+versions?$/i, select: function (context, name) { var data = checkName(name, context) return data.versions .filter(function (v) { return data.released.indexOf(v) === -1 }) .map(nameMapper(data.name)) } }, { regexp: /^last\s+(\d*.?\d+)\s+years?$/i, select: function (context, years) { return filterByYear(Date.now() - YEAR * years, context) } }, { regexp: /^since (\d+)$/i, select: sinceQuery }, { regexp: /^since (\d+)-(\d+)$/i, select: sinceQuery }, { regexp: /^since (\d+)-(\d+)-(\d+)$/i, select: sinceQuery }, { regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/, select: function (context, sign, popularity) { popularity = parseFloat(popularity) var usage = browserslist.usage.global return Object.keys(usage).reduce(function (result, version) { if (sign === '>') { if (usage[version] > popularity) { result.push(version) } } else if (sign === '<') { if (usage[version] < popularity) { result.push(version) } } else if (sign === '<=') { if (usage[version] <= popularity) { result.push(version) } } else if (usage[version] >= popularity) { result.push(version) } return result }, []) } }, { regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/, select: function (context, sign, popularity) { popularity = parseFloat(popularity) if (!context.customUsage) { throw new BrowserslistError('Custom usage statistics was not provided') } var usage = context.customUsage return Object.keys(usage).reduce(function (result, version) { var percentage = usage[version] if (percentage == null) { return result } if (sign === '>') { if (percentage > popularity) { result.push(version) } } else if (sign === '<') { if (percentage < popularity) { result.push(version) } } else if (sign === '<=') { if (percentage <= popularity) { result.push(version) } } else if (percentage >= popularity) { result.push(version) } return result }, []) } }, { regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/, select: function (context, sign, popularity, name) { popularity = parseFloat(popularity) var stats = env.loadStat(context, name, browserslist.data) if (stats) { context.customUsage = {} for (var browser in stats) { fillUsage(context.customUsage, browser, stats[browser]) } } if (!context.customUsage) { throw new BrowserslistError('Custom usage statistics was not provided') } var usage = context.customUsage return Object.keys(usage).reduce(function (result, version) { var percentage = usage[version] if (percentage == null) { return result } if (sign === '>') { if (percentage > popularity) { result.push(version) } } else if (sign === '<') { if (percentage < popularity) { result.push(version) } } else if (sign === '<=') { if (percentage <= popularity) { result.push(version) } } else if (percentage >= popularity) { result.push(version) } return result }, []) } }, { regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/, select: function (context, sign, popularity, place) { popularity = parseFloat(popularity) if (place.length === 2) { place = place.toUpperCase() } else { place = place.toLowerCase() } env.loadCountry(browserslist.usage, place, browserslist.data) var usage = browserslist.usage[place] return Object.keys(usage).reduce(function (result, version) { var percentage = usage[version] if (percentage == null) { return result } if (sign === '>') { if (percentage > popularity) { result.push(version) } } else if (sign === '<') { if (percentage < popularity) { result.push(version) } } else if (sign === '<=') { if (percentage <= popularity) { result.push(version) } } else if (percentage >= popularity) { result.push(version) } return result }, []) } }, { regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i, select: coverQuery }, { regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i, select: coverQuery }, { regexp: /^supports\s+([\w-]+)$/, select: function (context, feature) { env.loadFeature(browserslist.cache, feature) var features = browserslist.cache[feature] return Object.keys(features).reduce(function (result, version) { var flags = features[version] if (flags.indexOf('y') >= 0 || flags.indexOf('a') >= 0) { result.push(version) } return result }, []) } }, { regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i, select: function (context, from, to) { var fromToUse = normalizeElectron(from) var toToUse = normalizeElectron(to) if (!e2c[fromToUse]) { throw new BrowserslistError('Unknown version ' + from + ' of electron') } if (!e2c[toToUse]) { throw new BrowserslistError('Unknown version ' + to + ' of electron') } from = parseFloat(from) to = parseFloat(to) return Object.keys(e2c) .filter(function (i) { var parsed = parseFloat(i) return parsed >= from && parsed <= to }) .map(function (i) { return 'chrome ' + e2c[i] }) } }, { regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i, select: function (context, from, to) { var nodeVersions = jsReleases .filter(function (i) { return i.name === 'nodejs' }) .map(function (i) { return i.version }) return nodeVersions .filter(semverFilterLoose('>=', from)) .filter(semverFilterLoose('<=', to)) .map(function (v) { return 'node ' + v }) } }, { regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i, select: function (context, name, from, to) { var data = checkName(name, context) from = parseFloat(normalizeVersion(data, from) || from) to = parseFloat(normalizeVersion(data, to) || to) function filter(v) { var parsed = parseFloat(v) return parsed >= from && parsed <= to } return data.released.filter(filter).map(nameMapper(data.name)) } }, { regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i, select: function (context, sign, version) { var versionToUse = normalizeElectron(version) return Object.keys(e2c) .filter(generateFilter(sign, versionToUse)) .map(function (i) { return 'chrome ' + e2c[i] }) } }, { regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i, select: function (context, sign, version) { var nodeVersions = jsReleases .filter(function (i) { return i.name === 'nodejs' }) .map(function (i) { return i.version }) return nodeVersions .filter(generateSemverFilter(sign, version)) .map(function (v) { return 'node ' + v }) } }, { regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+)$/, select: function (context, name, sign, version) { var data = checkName(name, context) var alias = browserslist.versionAliases[data.name][version] if (alias) { version = alias } return data.released .filter(generateFilter(sign, version)) .map(function (v) { return data.name + ' ' + v }) } }, { regexp: /^(firefox|ff|fx)\s+esr$/i, select: function () { return ['firefox 91'] } }, { regexp: /(operamini|op_mini)\s+all/i, select: function () { return ['op_mini all'] } }, { regexp: /^electron\s+([\d.]+)$/i, select: function (context, version) { var versionToUse = normalizeElectron(version) var chrome = e2c[versionToUse] if (!chrome) { throw new BrowserslistError( 'Unknown version ' + version + ' of electron' ) } return ['chrome ' + chrome] } }, { regexp: /^node\s+(\d+)$/i, select: nodeQuery }, { regexp: /^node\s+(\d+\.\d+)$/i, select: nodeQuery }, { regexp: /^node\s+(\d+\.\d+\.\d+)$/i, select: nodeQuery }, { regexp: /^current\s+node$/i, select: function (context) { return [env.currentNode(resolve, context)] } }, { regexp: /^maintained\s+node\s+versions$/i, select: function (context) { var now = Date.now() var queries = Object.keys(jsEOL) .filter(function (key) { return ( now < Date.parse(jsEOL[key].end) && now > Date.parse(jsEOL[key].start) && isEolReleased(key) ) }) .map(function (key) { return 'node ' + key.slice(1) }) return resolve(queries, context) } }, { regexp: /^phantomjs\s+1.9$/i, select: function () { return ['safari 5'] } }, { regexp: /^phantomjs\s+2.1$/i, select: function () { return ['safari 6'] } }, { regexp: /^(\w+)\s+(tp|[\d.]+)$/i, select: function (context, name, version) { if (/^tp$/i.test(version)) version = 'TP' var data = checkName(name, context) var alias = normalizeVersion(data, version) if (alias) { version = alias } else { if (version.indexOf('.') === -1) { alias = version + '.0' } else { alias = version.replace(/\.0$/, '') } alias = normalizeVersion(data, alias) if (alias) { version = alias } else if (context.ignoreUnknownVersions) { return [] } else { throw new BrowserslistError( 'Unknown version ' + version + ' of ' + name ) } } return [data.name + ' ' + version] } }, { regexp: /^browserslist config$/i, select: function (context) { return browserslist(undefined, context) } }, { regexp: /^extends (.+)$/i, select: function (context, name) { return resolve(env.loadQueries(context, name), context) } }, { regexp: /^defaults$/i, select: function (context) { return resolve(browserslist.defaults, context) } }, { regexp: /^dead$/i, select: function (context) { var dead = [ 'ie <= 10', 'ie_mob <= 11', 'bb <= 10', 'op_mob <= 12.1', 'samsung 4' ] return resolve(dead, context) } }, { regexp: /^(\w+)$/i, select: function (context, name) { if (byName(name, context)) { throw new BrowserslistError( 'Specify versions in Browserslist query for browser ' + name ) } else { throw unknownQuery(name) } } } ] // Get and convert Can I Use data ;(function () { for (var name in agents) { var browser = agents[name] browserslist.data[name] = { name: name, versions: normalize(agents[name].versions), released: normalize(agents[name].versions.slice(0, -3)), releaseDate: agents[name].release_date } fillUsage(browserslist.usage.global, name, browser.usage_global) browserslist.versionAliases[name] = {} for (var i = 0; i < browser.versions.length; i++) { var full = browser.versions[i] if (!full) continue if (full.indexOf('-') !== -1) { var interval = full.split('-') for (var j = 0; j < interval.length; j++) { browserslist.versionAliases[name][interval[j]] = full } } } } browserslist.versionAliases.op_mob['59'] = '58' })() module.exports = browserslist browserslist-4.19.3/node.js000066400000000000000000000254271420403321400156400ustar00rootroot00000000000000var feature = require('caniuse-lite/dist/unpacker/feature').default var region = require('caniuse-lite/dist/unpacker/region').default var path = require('path') var fs = require('fs') var BrowserslistError = require('./error') var IS_SECTION = /^\s*\[(.+)]\s*$/ var CONFIG_PATTERN = /^browserslist-config-/ var SCOPED_CONFIG__PATTERN = /@[^/]+\/browserslist-config(-|$|\/)/ var TIME_TO_UPDATE_CANIUSE = 6 * 30 * 24 * 60 * 60 * 1000 var FORMAT = 'Browserslist config should be a string or an array ' + 'of strings with browser queries' var dataTimeChecked = false var filenessCache = {} var configCache = {} function checkExtend(name) { var use = ' Use `dangerousExtend` option to disable.' if (!CONFIG_PATTERN.test(name) && !SCOPED_CONFIG__PATTERN.test(name)) { throw new BrowserslistError( 'Browserslist config needs `browserslist-config-` prefix. ' + use ) } if (name.replace(/^@[^/]+\//, '').indexOf('.') !== -1) { throw new BrowserslistError( '`.` not allowed in Browserslist config name. ' + use ) } if (name.indexOf('node_modules') !== -1) { throw new BrowserslistError( '`node_modules` not allowed in Browserslist config.' + use ) } } function isFile(file) { if (file in filenessCache) { return filenessCache[file] } var result = fs.existsSync(file) && fs.statSync(file).isFile() if (!process.env.BROWSERSLIST_DISABLE_CACHE) { filenessCache[file] = result } return result } function eachParent(file, callback) { var dir = isFile(file) ? path.dirname(file) : file var loc = path.resolve(dir) do { var result = callback(loc) if (typeof result !== 'undefined') return result } while (loc !== (loc = path.dirname(loc))) return undefined } function check(section) { if (Array.isArray(section)) { for (var i = 0; i < section.length; i++) { if (typeof section[i] !== 'string') { throw new BrowserslistError(FORMAT) } } } else if (typeof section !== 'string') { throw new BrowserslistError(FORMAT) } } function pickEnv(config, opts) { if (typeof config !== 'object') return config var name if (typeof opts.env === 'string') { name = opts.env } else if (process.env.BROWSERSLIST_ENV) { name = process.env.BROWSERSLIST_ENV } else if (process.env.NODE_ENV) { name = process.env.NODE_ENV } else { name = 'production' } if (opts.throwOnMissing) { if (name && name !== 'defaults' && !config[name]) { throw new BrowserslistError( 'Missing config for Browserslist environment `' + name + '`' ) } } return config[name] || config.defaults } function parsePackage(file) { var config = JSON.parse(fs.readFileSync(file)) if (config.browserlist && !config.browserslist) { throw new BrowserslistError( '`browserlist` key instead of `browserslist` in ' + file ) } var list = config.browserslist if (Array.isArray(list) || typeof list === 'string') { list = { defaults: list } } for (var i in list) { check(list[i]) } return list } function latestReleaseTime(agents) { var latest = 0 for (var name in agents) { var dates = agents[name].releaseDate || {} for (var key in dates) { if (latest < dates[key]) { latest = dates[key] } } } return latest * 1000 } function normalizeStats(data, stats) { if (!data) { data = {} } if (stats && 'dataByBrowser' in stats) { stats = stats.dataByBrowser } if (typeof stats !== 'object') return undefined var normalized = {} for (var i in stats) { var versions = Object.keys(stats[i]) if (versions.length === 1 && data[i] && data[i].versions.length === 1) { var normal = data[i].versions[0] normalized[i] = {} normalized[i][normal] = stats[i][versions[0]] } else { normalized[i] = stats[i] } } return normalized } function normalizeUsageData(usageData, data) { for (var browser in usageData) { var browserUsage = usageData[browser] // eslint-disable-next-line max-len // https://github.com/browserslist/browserslist/issues/431#issuecomment-565230615 // caniuse-db returns { 0: "percentage" } for `and_*` regional stats if ('0' in browserUsage) { var versions = data[browser].versions browserUsage[versions[versions.length - 1]] = browserUsage[0] delete browserUsage[0] } } } module.exports = { loadQueries: function loadQueries(ctx, name) { if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) { checkExtend(name) } var queries = require(require.resolve(name, { paths: ['.', ctx.path] })) if (queries) { if (Array.isArray(queries)) { return queries } else if (typeof queries === 'object') { if (!queries.defaults) queries.defaults = [] return pickEnv(queries, ctx, name) } } throw new BrowserslistError( '`' + name + '` config exports not an array of queries' + ' or an object of envs' ) }, loadStat: function loadStat(ctx, name, data) { if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) { checkExtend(name) } var stats = require(require.resolve( path.join(name, 'browserslist-stats.json'), { paths: ['.'] } )) return normalizeStats(data, stats) }, getStat: function getStat(opts, data) { var stats if (opts.stats) { stats = opts.stats } else if (process.env.BROWSERSLIST_STATS) { stats = process.env.BROWSERSLIST_STATS } else if (opts.path && path.resolve && fs.existsSync) { stats = eachParent(opts.path, function (dir) { var file = path.join(dir, 'browserslist-stats.json') return isFile(file) ? file : undefined }) } if (typeof stats === 'string') { try { stats = JSON.parse(fs.readFileSync(stats)) } catch (e) { throw new BrowserslistError("Can't read " + stats) } } return normalizeStats(data, stats) }, loadConfig: function loadConfig(opts) { if (process.env.BROWSERSLIST) { return process.env.BROWSERSLIST } else if (opts.config || process.env.BROWSERSLIST_CONFIG) { var file = opts.config || process.env.BROWSERSLIST_CONFIG if (path.basename(file) === 'package.json') { return pickEnv(parsePackage(file), opts) } else { return pickEnv(module.exports.readConfig(file), opts) } } else if (opts.path) { return pickEnv(module.exports.findConfig(opts.path), opts) } else { return undefined } }, loadCountry: function loadCountry(usage, country, data) { var code = country.replace(/[^\w-]/g, '') if (!usage[code]) { var compressed = require('caniuse-lite/data/regions/' + code + '.js') var usageData = region(compressed) normalizeUsageData(usageData, data) usage[country] = {} for (var i in usageData) { for (var j in usageData[i]) { usage[country][i + ' ' + j] = usageData[i][j] } } } }, loadFeature: function loadFeature(features, name) { name = name.replace(/[^\w-]/g, '') if (features[name]) return var compressed = require('caniuse-lite/data/features/' + name + '.js') var stats = feature(compressed).stats features[name] = {} for (var i in stats) { for (var j in stats[i]) { features[name][i + ' ' + j] = stats[i][j] } } }, parseConfig: function parseConfig(string) { var result = { defaults: [] } var sections = ['defaults'] string .toString() .replace(/#[^\n]*/g, '') .split(/\n|,/) .map(function (line) { return line.trim() }) .filter(function (line) { return line !== '' }) .forEach(function (line) { if (IS_SECTION.test(line)) { sections = line.match(IS_SECTION)[1].trim().split(' ') sections.forEach(function (section) { if (result[section]) { throw new BrowserslistError( 'Duplicate section ' + section + ' in Browserslist config' ) } result[section] = [] }) } else { sections.forEach(function (section) { result[section].push(line) }) } }) return result }, readConfig: function readConfig(file) { if (!isFile(file)) { throw new BrowserslistError("Can't read " + file + ' config') } return module.exports.parseConfig(fs.readFileSync(file)) }, findConfig: function findConfig(from) { from = path.resolve(from) var passed = [] var resolved = eachParent(from, function (dir) { if (dir in configCache) { return configCache[dir] } passed.push(dir) var config = path.join(dir, 'browserslist') var pkg = path.join(dir, 'package.json') var rc = path.join(dir, '.browserslistrc') var pkgBrowserslist if (isFile(pkg)) { try { pkgBrowserslist = parsePackage(pkg) } catch (e) { if (e.name === 'BrowserslistError') throw e console.warn( '[Browserslist] Could not parse ' + pkg + '. Ignoring it.' ) } } if (isFile(config) && pkgBrowserslist) { throw new BrowserslistError( dir + ' contains both browserslist and package.json with browsers' ) } else if (isFile(rc) && pkgBrowserslist) { throw new BrowserslistError( dir + ' contains both .browserslistrc and package.json with browsers' ) } else if (isFile(config) && isFile(rc)) { throw new BrowserslistError( dir + ' contains both .browserslistrc and browserslist' ) } else if (isFile(config)) { return module.exports.readConfig(config) } else if (isFile(rc)) { return module.exports.readConfig(rc) } else { return pkgBrowserslist } }) if (!process.env.BROWSERSLIST_DISABLE_CACHE) { passed.forEach(function (dir) { configCache[dir] = resolved }) } return resolved }, clearCaches: function clearCaches() { dataTimeChecked = false filenessCache = {} configCache = {} this.cache = {} }, oldDataWarning: function oldDataWarning(agentsObj) { if (dataTimeChecked) return dataTimeChecked = true if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return var latest = latestReleaseTime(agentsObj) var halfYearAgo = Date.now() - TIME_TO_UPDATE_CANIUSE if (latest !== 0 && latest < halfYearAgo) { console.warn( 'Browserslist: caniuse-lite is outdated. Please run:\n' + ' npx browserslist@latest --update-db\n' + ' Why you should do it regularly: ' + 'https://github.com/browserslist/browserslist#browsers-data-updating' ) } }, currentNode: function currentNode() { return 'node ' + process.versions.node } } browserslist-4.19.3/package.json000066400000000000000000000057311420403321400166370ustar00rootroot00000000000000{ "name": "browserslist", "version": "4.19.3", "description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset", "keywords": [ "caniuse", "browsers", "target" ], "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, "author": "Andrey Sitnik ", "license": "MIT", "repository": "browserslist/browserslist", "scripts": { "test": "c8 pnpm unit && eslint . && size-limit", "unit": "NODE_ENV=test uvu test .test.js", "unit:fast": "NODE_ENV=test uvu test '^[^/]+.test.js'" }, "dependencies": { "caniuse-lite": "^1.0.30001312", "electron-to-chromium": "^1.4.71", "escalade": "^3.1.1", "node-releases": "^2.0.2", "picocolors": "^1.0.0" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" }, "bin": { "browserslist": "cli.js" }, "types": "./index.d.ts", "devDependencies": { "@logux/eslint-config": "^46.1.1", "@size-limit/preset-small-lib": "^7.0.8", "c8": "^7.11.0", "clean-publish": "^4.0.0", "cross-spawn": "^7.0.3", "eslint": "^8.9.0", "eslint-config-standard": "^16.0.3", "eslint-plugin-es5": "^1.5.0", "eslint-plugin-import": "^2.25.4", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prefer-let": "^3.0.1", "eslint-plugin-promise": "^6.0.0", "fs-extra": "^10.0.0", "nanoid": "^3.3.1", "nanospy": "^0.5.0", "size-limit": "^7.0.8", "uvu": "^0.5.3" }, "browser": { "./node.js": "./browser.js", "path": false }, "clean-publish": { "cleanDocs": true }, "c8": { "exclude": [ "**/*.test.*" ], "lines": 100, "reporter": "lcov", "check-coverage": true }, "size-limit": [ { "path": "index.js", "limit": "14 KB" } ], "eslintConfig": { "plugins": [ "es5" ], "extends": [ "@logux/eslint-config", "plugin:es5/no-es2015" ], "rules": { "prefer-let/prefer-let": "off", "prefer-arrow-callback": "off", "node/global-require": "off", "object-shorthand": "off", "no-console": "off", "no-var": "off" }, "overrides": [ { "files": "test/**/*", "rules": { "node/no-unsupported-features/es-syntax": "off", "es5/no-shorthand-properties": "off", "es5/no-template-literals": "off", "es5/no-rest-parameters": "off", "es5/no-arrow-functions": "off", "es5/no-destructuring": "off", "es5/no-block-scoping": "off", "es5/no-es6-methods": "off", "es5/no-spread": "off", "es5/no-for-of": "off", "no-console": "off" } } ] }, "eslintIgnore": [ "test/fixtures" ], "prettier": { "arrowParens": "avoid", "jsxSingleQuote": false, "quoteProps": "consistent", "semi": false, "singleQuote": true, "trailingComma": "none" } } browserslist-4.19.3/pnpm-lock.yaml000066400000000000000000001742161420403321400171420ustar00rootroot00000000000000lockfileVersion: 5.3 specifiers: '@logux/eslint-config': ^46.1.1 '@size-limit/preset-small-lib': ^7.0.8 c8: ^7.11.0 caniuse-lite: ^1.0.30001312 clean-publish: ^4.0.0 cross-spawn: ^7.0.3 electron-to-chromium: ^1.4.71 escalade: ^3.1.1 eslint: ^8.9.0 eslint-config-standard: ^16.0.3 eslint-plugin-es5: ^1.5.0 eslint-plugin-import: ^2.25.4 eslint-plugin-node: ^11.1.0 eslint-plugin-prefer-let: ^3.0.1 eslint-plugin-promise: ^6.0.0 fs-extra: ^10.0.0 nanoid: ^3.3.1 nanospy: ^0.5.0 node-releases: ^2.0.2 picocolors: ^1.0.0 size-limit: ^7.0.8 uvu: ^0.5.3 dependencies: caniuse-lite: 1.0.30001312 electron-to-chromium: 1.4.71 escalade: 3.1.1 node-releases: 2.0.2 picocolors: 1.0.0 devDependencies: '@logux/eslint-config': 46.1.1_cd7f45d1cba51a736d2df3e99513a1a4 '@size-limit/preset-small-lib': 7.0.8_size-limit@7.0.8 c8: 7.11.0 clean-publish: 4.0.0 cross-spawn: 7.0.3 eslint: 8.9.0 eslint-config-standard: 16.0.3_3dc95bbf26a1efd07c4db3385b7c7e02 eslint-plugin-es5: 1.5.0_eslint@8.9.0 eslint-plugin-import: 2.25.4_eslint@8.9.0 eslint-plugin-node: 11.1.0_eslint@8.9.0 eslint-plugin-prefer-let: 3.0.1 eslint-plugin-promise: 6.0.0_eslint@8.9.0 fs-extra: 10.0.0 nanoid: 3.3.1 nanospy: 0.5.0 size-limit: 7.0.8 uvu: 0.5.3 packages: /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true /@eslint/eslintrc/1.1.0: resolution: {integrity: sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.3 espree: 9.3.1 globals: 13.12.1 ignore: 4.0.6 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.9.3: resolution: {integrity: sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 debug: 4.3.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true /@istanbuljs/schema/0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true /@logux/eslint-config/46.1.1_cd7f45d1cba51a736d2df3e99513a1a4: resolution: {integrity: sha512-FSSiEj6yGGmoI+ccK8ET093OL2G9ar1izQtixB62SWGouas096VpqQoz+FuFW8f4iCb4wuYrXYuv0uOLuvc+LA==} engines: {node: '>=10.0.0'} peerDependencies: eslint: ^8.5.0 eslint-config-standard: ^16.0.3 eslint-plugin-import: ^2.25.3 eslint-plugin-node: ^11.1.0 eslint-plugin-prefer-let: ^3.0.1 eslint-plugin-promise: ^6.0.0 dependencies: eslint: 8.9.0 eslint-config-standard: 16.0.3_3dc95bbf26a1efd07c4db3385b7c7e02 eslint-plugin-import: 2.25.4_eslint@8.9.0 eslint-plugin-node: 11.1.0_eslint@8.9.0 eslint-plugin-prefer-let: 3.0.1 eslint-plugin-promise: 6.0.0_eslint@8.9.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/esbuild/7.0.8_size-limit@7.0.8: resolution: {integrity: sha512-AzCrxJJThDvHrBNoolebYVgXu46c6HuS3fOxoXr3V0YWNM0qz81z5F3j7RruzboZnls8ZgME4WrH6GM5rB9gtA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} peerDependencies: size-limit: 7.0.8 dependencies: esbuild: 0.14.22 nanoid: 3.3.1 size-limit: 7.0.8 dev: true /@size-limit/file/7.0.8_size-limit@7.0.8: resolution: {integrity: sha512-1KeFQuMXIXAH/iELqIX7x+YNYDFvzIvmxcp9PrdwEoSNL0dXdaDIo9WE/yz8xvOmUcKaLfqbWkL75DM0k91WHQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} peerDependencies: size-limit: 7.0.8 dependencies: semver: 7.3.5 size-limit: 7.0.8 dev: true /@size-limit/preset-small-lib/7.0.8_size-limit@7.0.8: resolution: {integrity: sha512-CT8nIYA/c2CSD+X4rAUgwqYccQMahJ6rBnaZxvi3YKFdkXIbuGNXHNjHsYaFksgwG9P4UjG/unyO5L73f3zQBw==} peerDependencies: size-limit: 7.0.8 dependencies: '@size-limit/esbuild': 7.0.8_size-limit@7.0.8 '@size-limit/file': 7.0.8_size-limit@7.0.8 size-limit: 7.0.8 dev: true /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true /@types/json5/0.0.29: resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} dev: true /acorn-jsx/5.3.2_acorn@8.7.0: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.7.0 dev: true /acorn/8.7.0: resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} 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 /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} 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==} dev: true /array-includes/3.1.4: resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 es-abstract: 1.19.1 get-intrinsic: 1.1.1 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.2.5: resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 es-abstract: 1.19.1 dev: true /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} 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 /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true /bytes-iec/3.1.1: resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} engines: {node: '>= 0.8'} dev: true /c8/7.11.0: resolution: {integrity: sha512-XqPyj1uvlHMr+Y1IeRndC2X5P7iJzJlEJwBpCdBbq2JocXOgJfr+JVfJkyNMGROke5LfKrhSFXGFXnwnRJAUJw==} engines: {node: '>=10.12.0'} hasBin: true dependencies: '@bcoe/v8-coverage': 0.2.3 '@istanbuljs/schema': 0.1.3 find-up: 5.0.0 foreground-child: 2.0.0 istanbul-lib-coverage: 3.2.0 istanbul-lib-report: 3.0.0 istanbul-reports: 3.1.4 rimraf: 3.0.2 test-exclude: 6.0.0 v8-to-istanbul: 8.1.1 yargs: 16.2.0 yargs-parser: 20.2.9 dev: true /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.1 dev: true /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true /caniuse-lite/1.0.30001312: resolution: {integrity: sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==} dev: false /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 /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 /clean-publish/4.0.0: resolution: {integrity: sha512-PcOxJSnPgncx/ANmgPw8hj9DDtdLHTxIc6Vh/yXCX7IA9w1oUSx2POL0Vno/7omhyrKxMKTpnRh2wlzwH5zaCw==} hasBin: true dependencies: cross-spawn: 7.0.3 fast-glob: 3.2.11 lilconfig: 2.0.4 micromatch: 4.0.4 dev: true /cliui/7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 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.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true /convert-source-map/1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.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 /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} dependencies: ms: 2.1.3 dev: true /debug/4.3.3: resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true dependencies: ms: 2.1.2 dev: true /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true /define-properties/1.1.3: resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} engines: {node: '>= 0.4'} dependencies: object-keys: 1.1.1 dev: true /dequal/2.0.2: resolution: {integrity: sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==} engines: {node: '>=6'} dev: true /diff/5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.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 /electron-to-chromium/1.4.71: resolution: {integrity: sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw==} dev: false /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true /es-abstract/1.19.1: resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 es-to-primitive: 1.2.1 function-bind: 1.1.1 get-intrinsic: 1.1.1 get-symbol-description: 1.0.0 has: 1.0.3 has-symbols: 1.0.2 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.1 is-string: 1.0.7 is-weakref: 1.0.2 object-inspect: 1.12.0 object-keys: 1.1.1 object.assign: 4.1.2 string.prototype.trimend: 1.0.4 string.prototype.trimstart: 1.0.4 unbox-primitive: 1.0.1 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-arm64/0.14.22: resolution: {integrity: sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true /esbuild-darwin-64/0.14.22: resolution: {integrity: sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true /esbuild-darwin-arm64/0.14.22: resolution: {integrity: sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true /esbuild-freebsd-64/0.14.22: resolution: {integrity: sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true dev: true optional: true /esbuild-freebsd-arm64/0.14.22: resolution: {integrity: sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true dev: true optional: true /esbuild-linux-32/0.14.22: resolution: {integrity: sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-64/0.14.22: resolution: {integrity: sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-arm/0.14.22: resolution: {integrity: sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-arm64/0.14.22: resolution: {integrity: sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-mips64le/0.14.22: resolution: {integrity: sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-ppc64le/0.14.22: resolution: {integrity: sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-riscv64/0.14.22: resolution: {integrity: sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-s390x/0.14.22: resolution: {integrity: sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true /esbuild-netbsd-64/0.14.22: resolution: {integrity: sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true dev: true optional: true /esbuild-openbsd-64/0.14.22: resolution: {integrity: sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true dev: true optional: true /esbuild-sunos-64/0.14.22: resolution: {integrity: sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true dev: true optional: true /esbuild-windows-32/0.14.22: resolution: {integrity: sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true /esbuild-windows-64/0.14.22: resolution: {integrity: sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true /esbuild-windows-arm64/0.14.22: resolution: {integrity: sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true /esbuild/0.14.22: resolution: {integrity: sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: esbuild-android-arm64: 0.14.22 esbuild-darwin-64: 0.14.22 esbuild-darwin-arm64: 0.14.22 esbuild-freebsd-64: 0.14.22 esbuild-freebsd-arm64: 0.14.22 esbuild-linux-32: 0.14.22 esbuild-linux-64: 0.14.22 esbuild-linux-arm: 0.14.22 esbuild-linux-arm64: 0.14.22 esbuild-linux-mips64le: 0.14.22 esbuild-linux-ppc64le: 0.14.22 esbuild-linux-riscv64: 0.14.22 esbuild-linux-s390x: 0.14.22 esbuild-netbsd-64: 0.14.22 esbuild-openbsd-64: 0.14.22 esbuild-sunos-64: 0.14.22 esbuild-windows-32: 0.14.22 esbuild-windows-64: 0.14.22 esbuild-windows-arm64: 0.14.22 dev: true /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true /eslint-config-standard/16.0.3_3dc95bbf26a1efd07c4db3385b7c7e02: resolution: {integrity: sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==} peerDependencies: eslint: ^7.12.1 eslint-plugin-import: ^2.22.1 eslint-plugin-node: ^11.1.0 eslint-plugin-promise: ^4.2.1 || ^5.0.0 dependencies: eslint: 8.9.0 eslint-plugin-import: 2.25.4_eslint@8.9.0 eslint-plugin-node: 11.1.0_eslint@8.9.0 eslint-plugin-promise: 6.0.0_eslint@8.9.0 dev: true /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 resolve: 1.22.0 dev: true /eslint-module-utils/2.7.3: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} dependencies: debug: 3.2.7 find-up: 2.1.0 dev: true /eslint-plugin-es/3.0.1_eslint@8.9.0: resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: eslint: 8.9.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true /eslint-plugin-es5/1.5.0_eslint@8.9.0: resolution: {integrity: sha512-Qxmfo7v2B7SGAEURJo0dpBweFf+JU15kSyALfiB2rXWcBuJ96r6X9kFHXFnhdopPHCaHjoQs1xQPUJVbGMb1AA==} peerDependencies: eslint: '>= 3.0.0' dependencies: eslint: 8.9.0 dev: true /eslint-plugin-import/2.25.4_eslint@8.9.0: resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} engines: {node: '>=4'} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: array-includes: 3.1.4 array.prototype.flat: 1.2.5 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.9.0 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.3 has: 1.0.3 is-core-module: 2.8.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.5 resolve: 1.22.0 tsconfig-paths: 3.12.0 dev: true /eslint-plugin-node/11.1.0_eslint@8.9.0: resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: eslint: 8.9.0 eslint-plugin-es: 3.0.1_eslint@8.9.0 eslint-utils: 2.1.0 ignore: 5.2.0 minimatch: 3.1.2 resolve: 1.22.0 semver: 6.3.0 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.9.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.9.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.9.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: eslint: 8.9.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.9.0: resolution: {integrity: sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: '@eslint/eslintrc': 1.1.0 '@humanwhocodes/config-array': 0.9.3 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.3 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 eslint-utils: 3.0.0_eslint@8.9.0 eslint-visitor-keys: 3.3.0 espree: 9.3.1 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 globals: 13.12.1 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.1: resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.7.0 acorn-jsx: 5.3.2_acorn@8.7.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/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.4 dev: true /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 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/2.1.0: resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} engines: {node: '>=4'} dependencies: locate-path: 2.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.5 rimraf: 3.0.2 dev: true /flatted/3.2.5: resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} dev: true /foreground-child/2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} dependencies: cross-spawn: 7.0.3 signal-exit: 3.0.7 dev: true /fs-extra/10.0.0: resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} engines: {node: '>=12'} dependencies: graceful-fs: 4.2.9 jsonfile: 6.1.0 universalify: 2.0.0 dev: true /fs.realpath/1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 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 dev: true optional: true /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true /functional-red-black-tree/1.0.1: resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} dev: true /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true /get-intrinsic/1.1.1: resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.2 dev: true /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.1 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.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 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 /globals/13.12.1: resolution: {integrity: sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==} 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 /graceful-fs/4.2.9: resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} dev: true /has-bigints/1.0.1: resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true /has-symbols/1.0.2: resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} engines: {node: '>= 0.4'} dev: true /has-tostringtag/1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.2 dev: true /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true /ignore/4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} 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 /imurmurhash/0.1.4: resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} dev: true /inflight/1.0.6: resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true /internal-slot/1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.1.1 has: 1.0.3 side-channel: 1.0.4 dev: true /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.1 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.8.1: resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} dependencies: has: 1.0.3 dev: true /is-date-object/1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true /is-extglob/2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 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.6: resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} 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-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 dev: true /is-shared-array-buffer/1.0.1: resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} dev: true /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.2 dev: true /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true /isexe/2.0.0: resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} dev: true /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true /istanbul-lib-report/3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: istanbul-lib-coverage: 3.2.0 make-dir: 3.1.0 supports-color: 7.2.0 dev: true /istanbul-reports/3.1.4: resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 dev: true /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} dev: true /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: minimist: 1.2.5 dev: true /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.9 dev: true /kleur/4.1.4: resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} engines: {node: '>=6'} 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.4: resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} engines: {node: '>=10'} dev: true /locate-path/2.0.0: resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} engines: {node: '>=4'} dependencies: p-locate: 2.0.0 path-exists: 3.0.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 /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true /micromatch/4.0.4: resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 dev: true /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true /minimist/1.2.5: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} dev: true /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true dev: true /mri/1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} dev: true /ms/2.0.0: resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true /nanoid/3.3.1: resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true /nanospinner/1.0.0: resolution: {integrity: sha512-14c2r2QQ9xfTmdbqdF51FKCNvww+0ZON9GeEHur+pBdOufoFvxD4CZQRaYWmFrGH3Nuv7PZ/9Q+wsV+hFSp32g==} dependencies: picocolors: 1.0.0 dev: true /nanospy/0.5.0: resolution: {integrity: sha512-QxH93ntkjRiSP+gJrBLcgOO3neU6pGhUKjPAJ7rAFag/+tJ+/0lw6dXic+iXUQ/3Cxk4Dp/FwLnf57xnQsjecQ==} engines: {node: ^8.0.0 || ^10.0.0 || ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true /natural-compare/1.4.0: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: true /node-releases/2.0.2: resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} dev: false /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true /object-inspect/1.12.0: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} dev: true /object-keys/1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true /object.assign/4.1.2: resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 has-symbols: 1.0.2 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.3 es-abstract: 1.19.1 dev: true /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: wrappy: 1.0.2 dev: true /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/1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} dependencies: p-try: 1.0.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/2.0.0: resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} engines: {node: '>=4'} dependencies: p-limit: 1.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/1.0.0: resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} engines: {node: '>=4'} 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 /path-exists/3.0.0: resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} engines: {node: '>=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: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 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==} dev: true /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 /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true /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 /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true /require-directory/2.1.1: resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 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/1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true dependencies: is-core-module: 2.8.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true /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.0 dev: true /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true /sade/1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} dependencies: mri: 1.2.0 dev: true /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true /semver/7.3.5: resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 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.1 object-inspect: 1.12.0 dev: true /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true /size-limit/7.0.8: resolution: {integrity: sha512-3h76c9E0e/nNhYLSR7IBI/bSoXICeo7EYkYjlyVqNIsu7KvN/PQmMbIXeyd2QKIF8iZKhaiZQoXLkGWbyPDtvQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.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.4 mkdirp: 1.0.4 nanospinner: 1.0.0 picocolors: 1.0.0 dev: true /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true /source-map/0.7.3: resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} engines: {node: '>= 8'} 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.4: resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 dev: true /string.prototype.trimstart/1.0.4: resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 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: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} engines: {node: '>=4'} dev: true /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} 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-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true /test-exclude/6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.0 minimatch: 3.1.2 dev: true /text-table/0.2.0: resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} dev: true /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 /tsconfig-paths/3.12.0: resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.1 minimist: 1.2.5 strip-bom: 3.0.0 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.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true /unbox-primitive/1.0.1: resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} dependencies: function-bind: 1.1.1 has-bigints: 1.0.1 has-symbols: 1.0.2 which-boxed-primitive: 1.0.2 dev: true /universalify/2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: true /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: true /uvu/0.5.3: resolution: {integrity: sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==} engines: {node: '>=8'} hasBin: true dependencies: dequal: 2.0.2 diff: 5.0.0 kleur: 4.1.4 sade: 1.8.1 dev: true /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true /v8-to-istanbul/8.1.1: resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} engines: {node: '>=10.12.0'} dependencies: '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 source-map: 0.7.3 dev: true /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.6 is-string: 1.0.7 is-symbol: 1.0.4 dev: true /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 dev: true /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true /wrap-ansi/7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 dev: true /wrappy/1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} dev: true /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true /yargs/16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: cliui: 7.0.4 escalade: 3.1.1 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 dev: true /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true browserslist-4.19.3/test/000077500000000000000000000000001420403321400153225ustar00rootroot00000000000000browserslist-4.19.3/test/and.test.js000066400000000000000000000020251420403321400173770ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let PACKAGE = join(__dirname, 'fixtures', 'package2') test('query composition with AND operator', () => { equal( browserslist('ie >= 6, ie <= 7'), [ 'ie 11', 'ie 10', 'ie 9', 'ie 8', 'ie 7', 'ie 6', 'ie 5.5' ] ) equal(browserslist('ie >= 6 and ie <= 7'), ['ie 7', 'ie 6']) equal( browserslist('ie < 11 and not ie 7'), [ 'ie 10', 'ie 9', 'ie 8', 'ie 6', 'ie 5.5' ] ) }) test('correctly works with not and one-version browsers as AND query', () => { equal(browserslist('last 1 Baidu version and not <2% in AT'), ['baidu 7.12']) }) test('reads config from package.json', () => { equal( browserslist.findConfig(PACKAGE), { defaults: 'ie > 6 and ie 9 or ie 10' } ) equal(browserslist(null, { path: PACKAGE }), ['ie 10', 'ie 9']) }) test.run() browserslist-4.19.3/test/benchmark/000077500000000000000000000000001420403321400172545ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/one/000077500000000000000000000000001420403321400200355ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/one/app/000077500000000000000000000000001420403321400206155ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/one/app/css/000077500000000000000000000000001420403321400214055ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/one/app/css/hello.css000066400000000000000000000000001420403321400232100ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/one/package.json000066400000000000000000000001071420403321400223210ustar00rootroot00000000000000{ "private": true, "browserslist": [ "ie 9", "ie 10" ] } browserslist-4.19.3/test/benchmark/run.js000077500000000000000000000011361420403321400204220ustar00rootroot00000000000000#!/usr/bin/env node let { join } = require('path') let browserslist = require('../..') let cases = [ { file: join(__dirname, 'one/app/css/hello.css'), n: 5000, exists: true }, { file: join(__dirname, 'two/app/js/hello.js'), n: 5000, exists: true }, { file: join(__dirname, 'three/app/js/hello.js'), n: 5000, exists: false } ] for (let { n, file, exists } of cases) { for (let i = 0; i < n; i++) { let result = browserslist.findConfig(file) if (!!result !== exists) { throw new Error('expected config to exist but it did not') } } } browserslist-4.19.3/test/benchmark/three/000077500000000000000000000000001420403321400203635ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/three/app/000077500000000000000000000000001420403321400211435ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/three/app/js/000077500000000000000000000000001420403321400215575ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/three/app/js/hello.js000066400000000000000000000000111420403321400232100ustar00rootroot00000000000000// three browserslist-4.19.3/test/benchmark/two/000077500000000000000000000000001420403321400200655ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/two/app/000077500000000000000000000000001420403321400206455ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/two/app/js/000077500000000000000000000000001420403321400212615ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/two/app/js/hello.js000066400000000000000000000000001420403321400227100ustar00rootroot00000000000000browserslist-4.19.3/test/benchmark/two/browserslist000066400000000000000000000000061420403321400225460ustar00rootroot00000000000000ie 11 browserslist-4.19.3/test/browser.test.js000066400000000000000000000024201420403321400203170ustar00rootroot00000000000000let { test } = require('uvu') let { is, equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originData = { ...browserslist.data } test.before.each(() => { browserslist.data = { ie: { name: 'ie', released: ['9', '10', '11'], versions: ['9', '10', '11'], releaseDate: {} }, android: { name: 'android', released: ['4.4', '4.4.3-4.4.4', '67'], versions: [], releaseDate: {} } } }); test.after.each(() => { browserslist.data = originData }) test('selects versions of browser', () => { equal(browserslist('last 2 ie versions'), ['ie 11', 'ie 10']) }) test('does not include unreleased versions', () => { browserslist.data = originData is(browserslist('last 2 safari versions').indexOf('safari TP'), -1) }) test('supports pluralization', () => { equal(browserslist('last 1 ie version'), ['ie 11']) }) test('has case insensitive aliases', () => { equal(browserslist('Last 01 Explorer Version'), ['ie 11']) }) test('has special logic for android', () => { equal(browserslist('last 4 android versions'), ['android 67']) equal( browserslist('last 31 android versions'), [ 'android 67', 'android 4.4.3-4.4.4' ] ) }) test.run() browserslist-4.19.3/test/cache.test.js000066400000000000000000000024601420403321400177030ustar00rootroot00000000000000let { test } = require('uvu') let { equal, not } = require('uvu/assert') let { writeFile, remove, mkdir } = require('fs-extra') let { tmpdir } = require('os') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let DIR = join(tmpdir(), 'browserslist-' + Math.random()) let CONFIG = join(DIR, 'browserslist') test.before(async () => { await mkdir(DIR) }) test.after.each(() => { browserslist.clearCaches() delete process.env.BROWSERSLIST_DISABLE_CACHE }) test.after(async () => { await Promise.all([remove(CONFIG), remove(DIR)]) }) test('caches configuration but the cache is clearable', async () => { await writeFile(CONFIG, 'ie 8', 'UTF-8') let result1 = browserslist.findConfig(DIR) await writeFile(CONFIG, 'chrome 56', 'UTF-8') let result2 = browserslist.findConfig(DIR) equal(result1, result2) browserslist.clearCaches() let result3 = browserslist.findConfig(DIR) not.equal(result1, result3) }) test('does not use cache when ENV variable set', async () => { process.env.BROWSERSLIST_DISABLE_CACHE = '1' await writeFile(CONFIG, 'ie 8', 'UTF-8') let result1 = browserslist.findConfig(DIR) await writeFile(CONFIG, 'chrome 56', 'UTF-8') let result2 = browserslist.findConfig(DIR) not.equal(result1, result2) }) test.run() browserslist-4.19.3/test/cli.test.js000066400000000000000000000112541420403321400174100ustar00rootroot00000000000000delete require.cache[require.resolve('..')] let { test } = require('uvu') let { is, equal, match } = require('uvu/assert') let { join } = require('path') let spawn = require('cross-spawn') let browserslist = require('..') let pkg = require('../package.json') let STATS = '--stats=' + join(__dirname, 'fixtures/stats.json') let CONF = '--config=' + join(__dirname, 'fixtures/env-config/browserslist') function run(args) { let opts = {} if (typeof args[0] === 'object') { opts = args[0] args = [] } let cli = spawn(join(__dirname, '..', 'cli.js'), args, opts) return new Promise(resolve => { let stdout = '' let stderr = '' cli.stdout.on('data', data => { stdout += data.toString() }) cli.stderr.on('data', data => { stderr += data.toString() }) cli.on('close', code => { resolve({ code: code || 0, stdout, stderr }) }) }) } async function err(...args) { let { code, stdout, stderr } = await run(args) is(stdout, '') is.not(code, 0) return stderr } async function out(...args) { let { code, stdout, stderr } = await run(args) is(stderr, '') is(code, 0) return stdout } async function arr(...args) { let stdout = await out(...args) return stdout.split('\n').filter(Boolean) } function coverage(query, area) { let result = browserslist.coverage(query, area) return Math.round(result * 100) / 100.0 } function ie8cov(area) { return coverage(['ie 8'], area) } test('returns help', async () => { match(await out('--help'), 'Usage:') match(await out('-h'), 'Usage:') }) test('returns version', async () => { let result = pkg.name + ' ' + pkg.version + '\n' is(await out('--version'), result) is(await out('-v'), result) }) test('returns error: `unknown arguments`', async () => { match(await err('--unknown'), 'Unknown arguments') }) test('selects last 2 versions', async () => { equal(await arr('last 2 versions'), browserslist('last 2 versions')) }) test('uses case insensitive aliases', async () => { equal(await arr('Explorer > 10'), browserslist('Explorer > 10')) }) test('returns error `unknown browser query`', async () => { is( await err('unknow'), 'browserslist: Unknown browser query `unknow`. ' + 'Maybe you are using old Browserslist or made typo in query.\n' ) }) test('returns usage in specified country', async () => { match( await out('--coverage=US', 'ie 8'), `These browsers account for ${ie8cov('US')}% of all users in the US` ) }) test('returns usage in specified ares', async () => { let post = '% of all users ' match( await out('--coverage=US,alt-AS,global', 'ie 8'), `These browsers account for ${ie8cov('US') + post}in the US\n` + ` ${ie8cov('alt-AS') + post}in the ALT-AS\n` + ` ${ie8cov() + post}globally\n` ) }) test('returns error: `unknown browser query to get coverage`', async () => { is( await err('--coverage=UK', 'ie8'), 'browserslist: Unknown browser query `ie8`. ' + 'Maybe you are using old Browserslist or made typo in query.\n' ) }) test('reads browserslist config', async () => { equal(await arr(CONF), ['ie 11', 'ie 10']) }) test('reads browserslist config from current directory', async () => { let cwd = join(__dirname, 'fixtures') equal(await arr({ cwd }), ['ie 11', 'ie 10']) }) test('returns error browserslist config', async () => { is( await err('--config="./unknown_path"'), "browserslist: Can't read ./unknown_path config\n" ) }) test('reads browserslist config: env production', async () => { equal(await arr(CONF, '--env="production"'), ['ie 9', 'opera 41']) }) test('returns usage from config', async () => { let result = coverage(['ie 11', 'ie 10']) match(await out(CONF, '--coverage'), `${result}`) }) test('supports custom stats', async () => { equal(await arr(STATS, '> 5% in my stats'), ['ie 11', 'ie 10']) }) test('supports custom stats in coverage', async () => { is( await out('--coverage', STATS, '> 5% in my stats'), 'These browsers account for 15.7% of all users in custom statistics\n' ) }) test('shows Browserslist error', async () => { is( await err({ cwd: join(__dirname, 'fixtures', 'wrong1') }), 'browserslist: Browserslist config ' + 'should be a string or an array of strings with browser queries\n' ) }) test('supports JSON', async () => { is( await out('--json', '"ie 8"'), '{\n "browsers": [\n "ie 8"\n ]\n}\n' ) }) test('supports JSON with coverage', async () => { is( await out('--json', '--coverage=US', '"ie 8"'), '{\n' + ' "browsers": [\n "ie 8"\n ],\n' + ` "coverage": {\n "US": ${ie8cov('US')}\n }\n` + '}\n' ) }) test.run() browserslist-4.19.3/test/config-query.test.js000066400000000000000000000006661420403321400212560ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let FILE = join(__dirname, 'fixtures', 'env-config', 'test.css') test('supports config query', () => { equal( browserslist('browserslist config, not chrome >0', { path: FILE, env: 'development' }), ['firefox 50'] ) }) test.run() browserslist-4.19.3/test/config.test.js000066400000000000000000000071561420403321400201140ustar00rootroot00000000000000let { test } = require('uvu') let { is, equal, throws } = require('uvu/assert') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let RC = join(__dirname, 'fixtures', 'rc', 'test.css') let FILE = join(__dirname, 'fixtures', 'dir', 'test.css') let TYPO = join(__dirname, 'fixtures', 'typo', 'test.css') let BOTH1 = join(__dirname, 'fixtures', 'both1', 'test.css') let BOTH2 = join(__dirname, 'fixtures', 'both2', 'test.css') let BOTH3 = join(__dirname, 'fixtures', 'both3', 'test.css') let WRONG1 = join(__dirname, 'fixtures', 'wrong1', 'test.css') let WRONG2 = join(__dirname, 'fixtures', 'wrong2', 'test.css') let BROKEN = join(__dirname, 'fixtures', 'broken', 'test.css') let STRING = join(__dirname, 'fixtures', 'string', 'test.css') let PACKAGE = join(__dirname, 'fixtures', 'package', 'test.css') let originWarn = console.warn let warnCallCount = 0 test.before.each(() => { warnCallCount = 0 console.warn = () => { warnCallCount++ return true } }) let originCwd = process.cwd() test.after.each(() => { process.chdir(originCwd) console.warn = originWarn }) test('parses queries', () => { equal( browserslist.parseConfig('ie 10\n> 1%'), { defaults: ['ie 10', '> 1%'] } ) }) test('parses comma', () => { equal( browserslist.parseConfig('ie 10, > 1%'), { defaults: ['ie 10', '> 1%'] } ) }) test('removes comments', () => { let config = '# support list\nie 10#bad\n> 1%' equal( browserslist.parseConfig(config), { defaults: ['ie 10', '> 1%'] } ) }) test('supports sections', () => { equal( browserslist.parseConfig('ie 10\n[test]\nie 11'), { defaults: ['ie 10'], test: ['ie 11'] } ) }) test('throws on duplicate sections', () => { let config = '[test]\nie 10\n[production test]\nie 11' throws(() => { browserslist.parseConfig(config) }, /Duplicate section test in Browserslist config/) }) test('trims whitespaces', () => { equal( browserslist.parseConfig('ie 9\n\n [ test] \n \n > 1%\n'), { defaults: ['ie 9'], test: ['> 1%'] } ) }) test('returns undefined on no config', () => { equal(browserslist.findConfig(__dirname), undefined) }) test('reads config', () => { equal(browserslist.findConfig(FILE), { defaults: ['ie 11', 'ie 10'] }) }) test('reads .browserslistrc config', () => { equal(browserslist.findConfig(RC), { defaults: ['ie 11'] }) }) test('reads config from package.json', () => { equal(browserslist.findConfig(PACKAGE), { defaults: ['ie 9', 'ie 10'] }) }) test('shows warning on broken package.json', () => { equal(browserslist.findConfig(BROKEN), { defaults: ['ie 11', 'ie 10'] }) is(warnCallCount, 1) }) test('shows error on key typo', () => { throws(() => { browserslist.findConfig(TYPO) }, /browserlist/) }) test('reads from dir wich contains both browserslist and package.json', () => { throws(() => { browserslist.findConfig(BOTH1) }, /contains both browserslist and package\.json/) }) test('reads from dir wich contains both .browserslistrc and package.json', () => { throws(() => { browserslist.findConfig(BOTH2) }, /contains both .browserslistrc and package\.json/) }) test('reads from dir wich contains both .browserslistrc and browserslist', () => { throws(() => { browserslist.findConfig(BOTH3) }, /contains both .browserslistrc and browserslist/) }) test('checks config format', () => { throws(() => { browserslist.findConfig(WRONG1) }, /Browserslist config should/) throws(() => { browserslist.findConfig(WRONG2) }, /Browserslist config should/) }) test('reads config with one string', () => { equal(browserslist.findConfig(STRING), { defaults: 'ie 9, ie 8' }) }) test.run() browserslist-4.19.3/test/country.test.js000066400000000000000000000035001420403321400203370ustar00rootroot00000000000000let { test } = require('uvu') let { is, equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originUsage = browserslist.usage test.before.each(() => { browserslist.usage = { US: { 'chrome 999': null, // unreleased 'ie 8': 1, 'ie 9': 5, 'ie 10': 10.1, 'ie 11': 75 }, XX: { 'and_chr 0': 100 } } browserslist.data.and_chr = { name: 'and_chr', versions: ['80'], released: [], releaseDate: {} } }) test.after.each(() => { browserslist.usage = originUsage }) test('selects browsers by popularity', () => { equal(browserslist('> 10% in US'), ['ie 11', 'ie 10']) }) test('selects popularity by more or equal', () => { equal(browserslist('>= 5% in US'), ['ie 11', 'ie 10', 'ie 9']) }) test('selects browsers by unpopularity', () => { equal(browserslist('< 5% in US'), ['ie 8']) }) test('selects unpopularity by less or equal', () => { equal(browserslist('<= 5% in US'), ['ie 9', 'ie 8']) }) test('works with float', () => { equal(browserslist('> 10.2% in US'), ['ie 11']) }) test('works with float that has a leading dot', () => { equal( browserslist('> .2% in US'), [ 'ie 11', 'ie 10', 'ie 9', 'ie 8' ] ) }) test('fixes country case', () => { equal(browserslist('> 10.2% in us'), ['ie 11']) }) test('loads country from Can I Use', () => { is(browserslist('> 1% in RU').length > 0, true) }) test('loads continents from Can I Use', () => { is(browserslist('> 1% in alt-AS').length > 0, true) }) test('allows omission of the space between the > and the percentage', () => { is(browserslist('>10% in US').length > 0, true) }) test('normalize incorrect caniuse versions for and_*', () => { equal(browserslist('> 50% in XX'), ['and_chr 80']) }) test.run() browserslist-4.19.3/test/cover.test.js000066400000000000000000000036401420403321400177570ustar00rootroot00000000000000let { test } = require('uvu') let { equal, throws } = require('uvu/assert') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let CUSTOM_STATS = join(__dirname, 'fixtures', 'stats.json') let originUsage = browserslist.usage test.before.each(() => { process.env.BROWSERSLIST_STATS = CUSTOM_STATS browserslist.usage = { 'global': { 'ie 5': 50, 'ie 11': 10 }, 'US': { 'ie 8': 2, 'ie 9': 4.4 }, 'alt-us': { 'ie 8': 25, 'ie 9': 10 } } }) test.after.each(() => { delete process.env.BROWSERSLIST_STATS browserslist.usage = originUsage }) test('adds at least one browser', () => { equal(browserslist('cover 1% in my stats'), ['ie 11']) }) test('is case insensitive for custom stat', () => { equal(browserslist('Cover 1% In My Stats'), ['ie 11']) }) test('global coverage', () => { equal(browserslist('cover 0.1%'), ['ie 5']) }) test('is case insensitive for global coverage', () => { equal(browserslist('Cover 0.1%'), ['ie 5']) }) test('country coverage', () => { equal(browserslist('cover 0.1% in US'), ['ie 9']) }) test('country coverage alt', () => { equal(browserslist('cover 0.1% in alt-us'), ['ie 8']) }) test('is case insensitive for country coverage', () => { equal(browserslist('Cover 0.1% in us'), ['ie 9']) equal(browserslist('Cover 0.1% in Alt-US'), ['ie 8']) }) test('adds browsers by popularity', () => { equal( browserslist('cover 20% in my stats'), [ 'chrome 37', 'chrome 36', 'ie 11', 'ie 10' ] ) }) test('does not add zero-popularity', () => { let stats = { stats: { ie: { 11: 10, 10: 0 } } } equal(browserslist('cover 20% in my stats', stats), ['ie 11']) }) test('throws error on no stats', () => { delete process.env.BROWSERSLIST_STATS throws(() => browserslist('cover 70% in my stats'), /statistics was not provided/) }) test.run() browserslist-4.19.3/test/coverage.test.js000066400000000000000000000044311420403321400204330ustar00rootroot00000000000000let { test } = require('uvu') let { equal, is, throws } = require('uvu/assert') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let STATS = join(__dirname, 'fixtures', 'browserslist-stats.json') let CUSTOM_STATS = join(__dirname, 'fixtures', 'stats.json') let custom = { ie: { 8: 3, 9: 10 } } let originUsage = browserslist.usage test.before.each(() => { browserslist.usage = { global: { 'ie 8': 5, 'ie 9': 10.1 }, UK: { 'ie 8': 2, 'ie 9': 4.4 }, RU: { 'ie 0': 2 } } }) test.after.each(() => { delete process.env.BROWSERSLIST_STATS browserslist.usage = originUsage }) test('returns browsers coverage', () => { equal(browserslist.coverage(['ie 8', 'ie 9']), 15.1) }) test('returns zero coverage on empty browsers', () => { equal(browserslist.coverage([]), 0) }) test('returns zero coverage on missed data', () => { equal(browserslist.coverage(['ie 12']), 0) }) test('returns usage in specified country', () => { equal(browserslist.coverage(['ie 9'], 'UK'), 4.4) }) test('accepts country in any case', () => { equal(browserslist.coverage(['ie 9'], 'uk'), 4.4) }) test('accepts mystats to load from custom stats', () => { process.env.BROWSERSLIST_STATS = STATS equal(browserslist.coverage(['ie 8'], 'my stats'), 6) }) test('accepts mystats to load from custom stats with dataByBrowser', () => { process.env.BROWSERSLIST_STATS = CUSTOM_STATS equal(browserslist.coverage(['ie 8'], 'my stats'), 0.1) }) test('throws when no custom stats', () => { throws(() => browserslist.coverage(['ie 8'], 'my stats'), /statistics was not provided/) }) test('loads country usage data from Can I Use', () => { is(browserslist.coverage(['ie 8', 'ie 9'], 'US') > 0, true) }) test('loads continents usage data from Can I Use', () => { is(browserslist.coverage(['ie 8', 'ie 9'], 'alt-AS') > 0, true) }) test('fixes statistics of 0 version', () => { is(browserslist.coverage(['ie 9'], 'RU'), 2) }) test('fixes statistics of all version', () => { is(browserslist.coverage(['ie all'], 'RU'), 2) }) test('supports custom statistics', () => { is(browserslist.coverage(['ie 9'], custom), 10) is(browserslist.coverage(['ie 9'], { dataByBrowser: custom }), 10) }) test.run() browserslist-4.19.3/test/custom.test.js000066400000000000000000000051321420403321400201510ustar00rootroot00000000000000let { test } = require('uvu') let { equal, is, throws, match } = require('uvu/assert') let { readFile } = require('fs-extra') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let originData = { ...browserslist.data } let CUSTOM_STATS = join(__dirname, 'fixtures', 'stats.json') let ANDROID = join(__dirname, 'fixtures', 'android-stats.json') let STATS = join(__dirname, 'fixtures', 'browserslist-stats.json') test.after.each(() => { delete process.env.BROWSERSLIST_STATS browserslist.data = originData }) test('throws error on invalid file', () => { throws(() => browserslist('', { stats: 'no.json' }), "Can't read no.json") }) test('takes stats file from environment variable', () => { process.env.BROWSERSLIST_STATS = CUSTOM_STATS equal(browserslist('> 10% in my stats'), ['ie 11']) }) test('takes stats by path', () => { equal(browserslist('> 10% in my stats', { stats: CUSTOM_STATS }), ['ie 11']) }) test('selects popularity by more or equal', () => { equal( browserslist('>= 5.3% in my stats', { stats: CUSTOM_STATS }), ['ie 11', 'ie 10'] ) }) test('selects browsers by unpopularity', () => { equal( browserslist('< 0.5% in my stats', { stats: CUSTOM_STATS }), ['chrome 34', 'ie 8'] ) }) test('selects unpopularity by less or equal', () => { equal( browserslist('<= 2.3% in my stats', { stats: CUSTOM_STATS }), [ 'chrome 36', 'chrome 35', 'chrome 34', 'ie 9', 'ie 8' ] ) }) test('accepts non-space query', () => { equal(browserslist('>10% in my stats', { stats: CUSTOM_STATS }), ['ie 11']) }) test('takes stats from usage data object', async () => { let data = JSON.parse((await readFile(CUSTOM_STATS)).toString()) equal(browserslist('> 10% in my stats', { stats: data }), ['ie 11']) }) test('works alongside global usage query', () => { let list = browserslist('> 10% in my stats, > 1%', { stats: CUSTOM_STATS }) is(list.length > 1, true) }) test('takes stats from browserslist-stats.json', () => { equal(browserslist('> 5% in my stats', { path: STATS }), ['ie 8']) }) test('normalizes versions', () => { let opts = { stats: ANDROID } let last = browserslist(['last 1 and_chr version'], undefined, true) match(browserslist(['> 3% in my stats'], opts)[0], last[0]) match(browserslist(['> 3% in my stats'], { ...opts, mobileToDesktop: true })[0], last[0]) equal(browserslist(['> 3% in my stats', 'not and_chr > 0'], opts), []) }) test('throws error on no stats', () => { throws(() => browserslist('> 5% in my stats'), /statistics was not provided/) }) test.run() browserslist-4.19.3/test/dead.test.js000066400000000000000000000005731420403321400175400ustar00rootroot00000000000000let { test } = require('uvu') let { equal, is } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') test('selects dead browsers by keywords', () => { is.not(browserslist('dead').indexOf('ie 10'), -1) }) test('selects dead browsers case insensitive', () => { equal(browserslist('Dead'), browserslist('dead')) }) test.run() browserslist-4.19.3/test/defaults.test.js000066400000000000000000000011521420403321400204440ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') test('selects defaults by keywords', () => { equal( browserslist('defaults, ie 6'), browserslist(browserslist.defaults.concat(['ie 6'])) ) }) test('selects defaults case insensitive', () => { equal(browserslist('Defaults'), browserslist(browserslist.defaults)) }) test('should respect options', () => { equal( browserslist('defaults', { mobileToDesktop: true }), browserslist(browserslist.defaults, { mobileToDesktop: true }) ) }) test.run() browserslist-4.19.3/test/direct.test.js000066400000000000000000000052341420403321400201140ustar00rootroot00000000000000let { test } = require('uvu') let { equal, throws, is, not } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') test('selects browser by name', () => { equal(browserslist('ie 10'), ['ie 10']) }) test('uses case insensitive aliases', () => { let result = browserslist('ie 10') equal(browserslist('Explorer 10'), result) equal(browserslist('IE 10'), result) }) test('raises on unknown name', () => { throws(() => browserslist('unknow 10'), 'Unknown browser unknow') }) test('raises on unknown version', () => { throws(() => browserslist('IE 1'), 'Unknown version 1 of IE') }) test('uses right browser name in error', () => { throws( () => browserslist('chrome 70, ie 11, safari 12.2, safari 12'), 'Unknown version 12.2 of safari' ) }) test('ignores unknown versions on request', () => { equal(browserslist('IE 1, IE 9', { ignoreUnknownVersions: true }), ['ie 9']) }) test('works with joined versions from Can I Use', () => { equal(browserslist('ios 7.0'), ['ios_saf 7.0-7.1']) equal(browserslist('ios 7.1'), ['ios_saf 7.0-7.1']) }) test('allows to miss zero in version', () => { equal(browserslist('ios 7'), ['ios_saf 7.0-7.1']) equal(browserslist('ios 8.0'), ['ios_saf 8']) }) test('supports Safari TP', () => { equal(browserslist('safari tp'), ['safari TP']) equal(browserslist('Safari TP'), ['safari TP']) }) test('supports Can I Use cutted versions', () => { is(browserslist('and_uc 10').length, 1) }) test('supports Can I Use missing mobile versions', () => { let opts = { mobileToDesktop: true } equal(browserslist('chromeandroid 53', opts), ['and_chr 53']) equal(browserslist('and_ff 60', opts), ['and_ff 60']) equal(browserslist('ie_mob 9', opts), ['ie_mob 9']) equal(browserslist('op_mob 30', opts), ['op_mob 30']) equal( browserslist('chromeandroid >= 52 and chromeandroid < 54', opts), ['and_chr 53', 'and_chr 52'] ) equal( browserslist('and_chr 52-53', opts), ['and_chr 53', 'and_chr 52'] ) equal( browserslist('android 4.4-38', opts), [ 'android 38', 'android 37', 'android 36', 'android 4.4.3-4.4.4', 'android 4.4' ] ) }) test('missing mobile versions are not aliased by default', () => { not.equal(browserslist('chromeandroid 53'), ['and_chr 53']) not.equal(browserslist('and_ff 60'), ['and_ff 60']) throws(() => browserslist('ie_mob 9'), /Unknown version 9 of ie_mob/) throws(() => browserslist('op_mob 30'), /Unknown version 30/) }) test('works for all browsers', () => { not.throws(() => { let first = browserslist(['> 0%', 'dead']) browserslist(first, {mobileToDesktop: true}) }) }) test.run() browserslist-4.19.3/test/electron.test.js000066400000000000000000000037031420403321400204540ustar00rootroot00000000000000let { test } = require('uvu') let { equal, throws, is } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') test('converts Electron to Chrome', () => { equal(browserslist('electron 1.1'), ['chrome 50']) }) test('supports Electron Patch versions to Chrome', () => { equal(browserslist('electron 4.0.4'), ['chrome 69']) }) test('supports case insensitive Electron name', () => { equal(browserslist('Electron 1.1'), ['chrome 50']) }) test('throws on unknown Electron version', () => { throws(() => browserslist('electron 0.19'), /Unknown version/) }) test('converts Electron to Chrome in ranges', () => { equal( browserslist('electron 0.36-1.2'), [ 'chrome 51', 'chrome 50', 'chrome 49', 'chrome 47' ] ) }) test('ignores case in Electron ranges', () => { equal(browserslist('Electron 0.37-1.0'), ['chrome 49']) }) test('supports patch versions in Electron ranges', () => { equal(browserslist('Electron 0.37.5-1.0.3'), ['chrome 49']) }) test('throws on unknown Electron range version', () => { throws(() => browserslist('electron 0.1-1.2'), /Unknown version/) throws(() => browserslist('electron 0.37-999'), /Unknown version/) }) test('converts Electron versions to Chrome', () => { equal(browserslist('electron <= 0.21'), ['chrome 41', 'chrome 39']) }) test('ignores case in Electron versions', () => { equal(browserslist('Electron < 0.21'), ['chrome 39']) }) test('converts Electron patch versions to Chrome', () => { equal(browserslist('Electron < 0.21.5'), ['chrome 39']) }) test('supports last versions for Electron', () => { is(browserslist('last 2 Electron versions').length >= 1, true) }) test('supports last major versions for Electron', () => { is(browserslist('last 2 Electron major versions').length >= 1, true) }) test('supports unreleased versions for Electron', () => { is(browserslist('unreleased Electron versions').length, 0) }) test.run() browserslist-4.19.3/test/error.test.js000066400000000000000000000007671420403321400200010ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') let BrowserslistError = require('../error') let originCapture = Error.captureStackTrace test.after.each(() => { Error.captureStackTrace = originCapture }) test('sets stack', () => { let error = new BrowserslistError('test') equal(typeof error.stack, 'string') }) test('works in Firefox', () => { Error.captureStackTrace = undefined let error = new BrowserslistError('test') equal(error.stack, undefined) }) test.run() browserslist-4.19.3/test/esr.test.js000066400000000000000000000010531420403321400174260ustar00rootroot00000000000000let { test } = require('uvu') let { equal, is } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') test('selects Firefox ESR', () => { let versions = browserslist('Firefox ESR') is(versions.length >= 1, true) is(versions.every(i => /^firefox \d+$/.test(i)), true) }) test('uses case insensitive aliases', () => { let result = browserslist('Firefox ESR') equal(browserslist('firefox esr'), result) equal(browserslist('ff esr'), result) equal(browserslist('fx esr'), result) }) test.run() browserslist-4.19.3/test/extends.test.js000066400000000000000000000113061420403321400203110ustar00rootroot00000000000000let { test } = require('uvu') let { equal, throws } = require('uvu/assert') let { ensureDir, writeFile, remove } = require('fs-extra') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let mocked = [] async function mock(name, exports) { let dir = join(__dirname, '..', 'node_modules', name) mocked.push(dir) await ensureDir(dir) let content = 'module.exports = ' + JSON.stringify(exports) await writeFile(join(dir, 'index.js'), content) } test.after.each(async () => { await Promise.all(mocked.map(dir => remove(dir))) mocked = [] delete process.env.BROWSERSLIST_DANGEROUS_EXTEND }) test('uses package', async () => { await mock('browserslist-config-test', ['ie 11']) let result = browserslist(['extends browserslist-config-test', 'ie 6']) equal(result, ['ie 11', 'ie 6']) }) test('uses file in package', async () => { await mock('browserslist-config-test/ie', ['ie 11']) let result = browserslist(['extends browserslist-config-test/ie']) equal(result, ['ie 11']) }) test('works with non-prefixed package with dangerousExtend', async () => { await mock('pkg', ['ie 11']) let result = browserslist(['extends pkg', 'edge 12'], { dangerousExtend: true }) equal(result, ['edge 12', 'ie 11']) }) test('supports BROWSERSLIST_DANGEROUS_EXTEND', async () => { process.env.BROWSERSLIST_DANGEROUS_EXTEND = '1' await mock('pkg', ['ie 11']) let result = browserslist(['extends pkg', 'edge 12']) equal(result, ['edge 12', 'ie 11']) }) test('handles scoped packages', async () => { await mock('@scope/browserslist-config-test', ['ie 11']) let result = browserslist(['extends @scope/browserslist-config-test']) equal(result, ['ie 11']) }) test('handles scoped packages with a dot in the name', async () => { await mock('@example.com/browserslist-config-test', ['ie 11']) let result = browserslist(['extends @example.com/browserslist-config-test']) equal(result, ['ie 11']) }) test('handles file in scoped packages', async () => { await mock('@scope/browserslist-config-test/ie', ['ie 11']) let result = browserslist(['extends @scope/browserslist-config-test/ie']) equal(result, ['ie 11']) }) test('handles file-less scoped packages', async () => { await mock('@scope/browserslist-config', ['ie 11']) let result = browserslist(['extends @scope/browserslist-config']) equal(result, ['ie 11']) }) test('recursively imports configs', async () => { await Promise.all([ mock('browserslist-config-a', ['extends browserslist-config-b', 'ie 9']), mock('browserslist-config-b', ['ie 10']) ]) let result = browserslist(['extends browserslist-config-a']) equal(result, ['ie 10', 'ie 9']) }) test('handles relative queries with local overrides', async () => { await mock('browserslist-config-rel', ['ie 9-10']) let result = browserslist(['extends browserslist-config-rel', 'not ie 9']) equal(result, ['ie 10']) }) test('throws on external package with empty export', async () => { await mock('browserslist-config-wrong', 'some string') throws( () => browserslist(['extends browserslist-config-wrong']), /not an array of queries or an object/ ) }) test('throws when package does not have browserslist-config- prefix', () => { throws( () => browserslist(['extends thing-without-prefix']), /needs `browserslist-config-` prefix/ ) }) test('throws when extends package has dot in path', () => { throws( () => browserslist(['extends browserslist-config-package/../something']), /`.` not allowed/ ) }) test('throws when extends package has node_modules in path', () => { throws( () => browserslist(['extends browserslist-config-test/node_modules/a']), /`node_modules` not allowed/ ) }) test("works with shareable config doesn't contains defaults env", async () => { await mock('browserslist-config-with-env-a', { someEnv: ['ie 10'] }) let result = browserslist(['extends browserslist-config-with-env-a']) equal(result, []) }) test('works with shareable config contains env', async () => { process.env.NODE_ENV = 'someEnv' await mock('browserslist-config-with-env-b', { someEnv: ['ie 10'] }) let result = browserslist(['extends browserslist-config-with-env-b']) equal(result, ['ie 10']) }) test('works with shareable config contains defaults env', async () => { await mock('browserslist-config-with-defaults', { defaults: ['ie 10'] }) let result = browserslist(['extends browserslist-config-with-defaults']) equal(result, ['ie 10']) }) test('throws when external package resolve to nullable', async () => { await mock('browserslist-config-null', null) throws( () => browserslist(['extends browserslist-config-null']), /config exports not an array/ ) }) test.run() browserslist-4.19.3/test/feature.test.js000066400000000000000000000017621420403321400202770ustar00rootroot00000000000000let { test } = require('uvu') let { equal, is } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originCache = browserslist.cache test.before.each(() => { browserslist.cache = {} browserslist.data.and_chr = { name: 'and_chr', versions: ['81'], released: [], releaseDate: {} } }) test.after.each(() => { browserslist.cache = originCache }) test('load features from Can I Use', () => { is(browserslist('supports objectrtc').length > 0, true) }) test('selects browsers by feature', () => { browserslist.cache = { rtcpeerconnection: { 'and_chr 81': 'y', 'firefox 2': 'n' } } equal(browserslist('supports rtcpeerconnection'), ['and_chr 81']) }) test('selects browsers by feature with dashes in its name', () => { browserslist.cache = { 'arrow-functions': { 'and_chr 81': 'y', 'ie 11': 'n' } } equal(browserslist('supports arrow-functions'), ['and_chr 81']) }) test.run() browserslist-4.19.3/test/fixtures/000077500000000000000000000000001420403321400171735ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/android-stats.json000066400000000000000000000000431420403321400226370ustar00rootroot00000000000000{ "and_chr": { "10": 4 } } browserslist-4.19.3/test/fixtures/both1/000077500000000000000000000000001420403321400202105ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/both1/browserslist000066400000000000000000000000341420403321400226720ustar00rootroot00000000000000# File for test ie 11 ie 10 browserslist-4.19.3/test/fixtures/both1/package.json000066400000000000000000000001071420403321400224740ustar00rootroot00000000000000{ "private": true, "browserslist": [ "ie 9", "ie 10" ] } browserslist-4.19.3/test/fixtures/both2/000077500000000000000000000000001420403321400202115ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/both2/.browserslistrc000066400000000000000000000000341420403321400232760ustar00rootroot00000000000000# File for test ie 11 ie 10 browserslist-4.19.3/test/fixtures/both2/package.json000066400000000000000000000001071420403321400224750ustar00rootroot00000000000000{ "private": true, "browserslist": [ "ie 9", "ie 10" ] } browserslist-4.19.3/test/fixtures/both3/000077500000000000000000000000001420403321400202125ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/both3/.browserslistrc000066400000000000000000000000341420403321400232770ustar00rootroot00000000000000# File for test ie 11 ie 10 browserslist-4.19.3/test/fixtures/both3/browserslist000066400000000000000000000000341420403321400226740ustar00rootroot00000000000000# File for test ie 11 ie 10 browserslist-4.19.3/test/fixtures/broken/000077500000000000000000000000001420403321400204535ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/broken/package.json000066400000000000000000000000021420403321400227310ustar00rootroot00000000000000{ browserslist-4.19.3/test/fixtures/browserslist000066400000000000000000000000341420403321400216550ustar00rootroot00000000000000# File for test ie 11 ie 10 browserslist-4.19.3/test/fixtures/browserslist-diff-error/000077500000000000000000000000001420403321400237725ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/browserslist-diff-error/package-lock.json000066400000000000000000001533501420403321400272150ustar00rootroot00000000000000{ "name": "browserslist-diff-error", "lockfileVersion": 2, "requires": true, "packages": { "": { "license": "MIT", "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" } }, "node_modules/@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true, "engines": { "node": ">=4.0.0" } }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/autoprefixer": { "version": "9.7.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "dependencies": { "browserslist": "^4.8.3", "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" }, "bin": { "autoprefixer": "bin/autoprefixer" }, "engines": { "node": ">=6.0.0" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "node_modules/browserslist": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "dependencies": { "caniuse-lite": "^1.0.30001030", "electron-to-chromium": "^1.3.363", "node-releases": "^1.1.50" }, "bin": { "browserslist": "cli.js" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" } }, "node_modules/caniuse-lite": { "version": "1.0.30001030", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", "dev": true }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "node_modules/css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, "dependencies": { "postcss": "^7.0.5" }, "bin": { "css-blank-pseudo": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, "dependencies": { "postcss": "^7.0.6", "postcss-selector-parser": "^5.0.0-rc.4" }, "bin": { "css-has-pseudo": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, "dependencies": { "postcss": "^7.0.5" }, "bin": { "css-prefers-color-scheme": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true }, "node_modules/cssesc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true, "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/electron-to-chromium": { "version": "1.3.377", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", "dev": true }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { "node": ">=4" } }, "node_modules/indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "node_modules/lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "node_modules/lodash.templatesettings": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0" } }, "node_modules/node-releases": { "version": "1.1.52", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", "dev": true, "dependencies": { "semver": "^6.3.0" } }, "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "node_modules/postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "engines": { "node": ">=6.0.0" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" } }, "node_modules/postcss-attribute-case-insensitive": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" } }, "node_modules/postcss-attribute-case-insensitive/node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=4" } }, "node_modules/postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, "dependencies": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "dependencies": { "postcss": "^7.0.14" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "dependencies": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=4.0.0" } }, "node_modules/postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "dependencies": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-font-variant": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-initial": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "dependencies": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, "node_modules/postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "dev": true, "dependencies": { "autoprefixer": "^9.6.1", "browserslist": "^4.6.4", "caniuse-lite": "^1.0.30000981", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", "cssdb": "^4.4.0", "postcss": "^7.0.17", "postcss-attribute-case-insensitive": "^4.0.1", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", "postcss-color-hex-alpha": "^5.0.3", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", "postcss-custom-media": "^7.0.8", "postcss-custom-properties": "^8.0.11", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", "postcss-env-function": "^2.0.2", "postcss-focus-visible": "^4.0.0", "postcss-focus-within": "^3.0.0", "postcss-font-variant": "^4.0.0", "postcss-gap-properties": "^2.0.0", "postcss-image-set-function": "^3.0.1", "postcss-initial": "^3.0.0", "postcss-lab-function": "^2.0.1", "postcss-logical": "^3.0.0", "postcss-media-minmax": "^4.0.0", "postcss-nesting": "^7.0.0", "postcss-overflow-shorthand": "^2.0.0", "postcss-page-break": "^2.0.0", "postcss-place": "^4.0.1", "postcss-pseudo-class-any-link": "^6.0.0", "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "node_modules/postcss-selector-not": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "node_modules/postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "dependencies": { "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=4" } }, "node_modules/postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "node_modules/postcss-values-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "dependencies": { "flatten": "^1.0.2", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=6.14.4" } }, "node_modules/postcss/node_modules/supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true, "engines": { "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true } }, "dependencies": { "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "autoprefixer": { "version": "9.7.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "requires": { "browserslist": "^4.8.3", "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" } }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "browserslist": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001030", "electron-to-chromium": "^1.3.363", "node-releases": "^1.1.50" } }, "caniuse-lite": { "version": "1.0.30001030", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" } }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, "requires": { "postcss": "^7.0.5" } }, "css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, "requires": { "postcss": "^7.0.6", "postcss-selector-parser": "^5.0.0-rc.4" } }, "css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, "requires": { "postcss": "^7.0.5" } }, "cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true }, "cssesc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, "electron-to-chromium": { "version": "1.3.377", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0" } }, "node-releases": { "version": "1.1.52", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", "dev": true, "requires": { "semver": "^6.3.0" } }, "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "postcss-attribute-case-insensitive": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" }, "dependencies": { "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "postcss-selector-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } } } }, "postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" } }, "postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, "requires": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" } }, "postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "requires": { "postcss": "^7.0.14" } }, "postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "requires": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" } }, "postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "requires": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" } }, "postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-font-variant": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-initial": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "requires": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, "postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "dev": true, "requires": { "autoprefixer": "^9.6.1", "browserslist": "^4.6.4", "caniuse-lite": "^1.0.30000981", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", "cssdb": "^4.4.0", "postcss": "^7.0.17", "postcss-attribute-case-insensitive": "^4.0.1", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", "postcss-color-hex-alpha": "^5.0.3", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", "postcss-custom-media": "^7.0.8", "postcss-custom-properties": "^8.0.11", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", "postcss-env-function": "^2.0.2", "postcss-focus-visible": "^4.0.0", "postcss-focus-within": "^3.0.0", "postcss-font-variant": "^4.0.0", "postcss-gap-properties": "^2.0.0", "postcss-image-set-function": "^3.0.1", "postcss-initial": "^3.0.0", "postcss-lab-function": "^2.0.1", "postcss-logical": "^3.0.0", "postcss-media-minmax": "^4.0.0", "postcss-nesting": "^7.0.0", "postcss-overflow-shorthand": "^2.0.0", "postcss-page-break": "^2.0.0", "postcss-place": "^4.0.1", "postcss-pseudo-class-any-link": "^6.0.0", "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" } }, "postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "postcss-selector-not": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "dev": true, "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "requires": { "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } }, "postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "postcss-values-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "requires": { "flatten": "^1.0.2", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } }, "qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true } } } browserslist-4.19.3/test/fixtures/browserslist-diff-error/package.json000066400000000000000000000003541420403321400262620ustar00rootroot00000000000000{ "description": "browserslist", "license": "MIT", "repository": {}, "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" }, "browserslist": [ "erroneous query" ] } browserslist-4.19.3/test/fixtures/browserslist-diff/000077500000000000000000000000001420403321400226435ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/browserslist-diff/package-lock.json000066400000000000000000001533421420403321400260670ustar00rootroot00000000000000{ "name": "browserslist-diff", "lockfileVersion": 2, "requires": true, "packages": { "": { "license": "MIT", "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" } }, "node_modules/@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true, "engines": { "node": ">=4.0.0" } }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/autoprefixer": { "version": "9.7.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "dependencies": { "browserslist": "^4.8.3", "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" }, "bin": { "autoprefixer": "bin/autoprefixer" }, "engines": { "node": ">=6.0.0" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "node_modules/browserslist": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "dependencies": { "caniuse-lite": "^1.0.30001030", "electron-to-chromium": "^1.3.363", "node-releases": "^1.1.50" }, "bin": { "browserslist": "cli.js" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" } }, "node_modules/caniuse-lite": { "version": "1.0.30001030", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", "dev": true }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "node_modules/css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, "dependencies": { "postcss": "^7.0.5" }, "bin": { "css-blank-pseudo": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, "dependencies": { "postcss": "^7.0.6", "postcss-selector-parser": "^5.0.0-rc.4" }, "bin": { "css-has-pseudo": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, "dependencies": { "postcss": "^7.0.5" }, "bin": { "css-prefers-color-scheme": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true }, "node_modules/cssesc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true, "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/electron-to-chromium": { "version": "1.3.377", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", "dev": true }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { "node": ">=4" } }, "node_modules/indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "node_modules/lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "node_modules/lodash.templatesettings": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0" } }, "node_modules/node-releases": { "version": "1.1.52", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", "dev": true, "dependencies": { "semver": "^6.3.0" } }, "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "node_modules/postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "engines": { "node": ">=6.0.0" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" } }, "node_modules/postcss-attribute-case-insensitive": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" } }, "node_modules/postcss-attribute-case-insensitive/node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=4" } }, "node_modules/postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, "dependencies": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "dependencies": { "postcss": "^7.0.14" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "dependencies": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=4.0.0" } }, "node_modules/postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "dependencies": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-font-variant": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-initial": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "dependencies": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, "node_modules/postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "dev": true, "dependencies": { "autoprefixer": "^9.6.1", "browserslist": "^4.6.4", "caniuse-lite": "^1.0.30000981", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", "cssdb": "^4.4.0", "postcss": "^7.0.17", "postcss-attribute-case-insensitive": "^4.0.1", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", "postcss-color-hex-alpha": "^5.0.3", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", "postcss-custom-media": "^7.0.8", "postcss-custom-properties": "^8.0.11", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", "postcss-env-function": "^2.0.2", "postcss-focus-visible": "^4.0.0", "postcss-focus-within": "^3.0.0", "postcss-font-variant": "^4.0.0", "postcss-gap-properties": "^2.0.0", "postcss-image-set-function": "^3.0.1", "postcss-initial": "^3.0.0", "postcss-lab-function": "^2.0.1", "postcss-logical": "^3.0.0", "postcss-media-minmax": "^4.0.0", "postcss-nesting": "^7.0.0", "postcss-overflow-shorthand": "^2.0.0", "postcss-page-break": "^2.0.0", "postcss-place": "^4.0.1", "postcss-pseudo-class-any-link": "^6.0.0", "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "node_modules/postcss-selector-not": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "node_modules/postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "dependencies": { "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=4" } }, "node_modules/postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "node_modules/postcss-values-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "dependencies": { "flatten": "^1.0.2", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=6.14.4" } }, "node_modules/postcss/node_modules/supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true, "engines": { "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true } }, "dependencies": { "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "autoprefixer": { "version": "9.7.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "requires": { "browserslist": "^4.8.3", "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" } }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "browserslist": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001030", "electron-to-chromium": "^1.3.363", "node-releases": "^1.1.50" } }, "caniuse-lite": { "version": "1.0.30001030", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" } }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, "requires": { "postcss": "^7.0.5" } }, "css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, "requires": { "postcss": "^7.0.6", "postcss-selector-parser": "^5.0.0-rc.4" } }, "css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, "requires": { "postcss": "^7.0.5" } }, "cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true }, "cssesc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, "electron-to-chromium": { "version": "1.3.377", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0" } }, "node-releases": { "version": "1.1.52", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", "dev": true, "requires": { "semver": "^6.3.0" } }, "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "postcss-attribute-case-insensitive": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" }, "dependencies": { "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "postcss-selector-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } } } }, "postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" } }, "postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, "requires": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" } }, "postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "requires": { "postcss": "^7.0.14" } }, "postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "requires": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" } }, "postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "requires": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" } }, "postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-font-variant": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-initial": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "requires": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, "postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "dev": true, "requires": { "autoprefixer": "^9.6.1", "browserslist": "^4.6.4", "caniuse-lite": "^1.0.30000981", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", "cssdb": "^4.4.0", "postcss": "^7.0.17", "postcss-attribute-case-insensitive": "^4.0.1", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", "postcss-color-hex-alpha": "^5.0.3", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", "postcss-custom-media": "^7.0.8", "postcss-custom-properties": "^8.0.11", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", "postcss-env-function": "^2.0.2", "postcss-focus-visible": "^4.0.0", "postcss-focus-within": "^3.0.0", "postcss-font-variant": "^4.0.0", "postcss-gap-properties": "^2.0.0", "postcss-image-set-function": "^3.0.1", "postcss-initial": "^3.0.0", "postcss-lab-function": "^2.0.1", "postcss-logical": "^3.0.0", "postcss-media-minmax": "^4.0.0", "postcss-nesting": "^7.0.0", "postcss-overflow-shorthand": "^2.0.0", "postcss-page-break": "^2.0.0", "postcss-place": "^4.0.1", "postcss-pseudo-class-any-link": "^6.0.0", "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" } }, "postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "postcss-selector-not": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "dev": true, "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "requires": { "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } }, "postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "postcss-values-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "requires": { "flatten": "^1.0.2", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } }, "qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true } } } browserslist-4.19.3/test/fixtures/browserslist-diff/package.json000066400000000000000000000004351420403321400251330ustar00rootroot00000000000000{ "description": "browserslist", "license": "MIT", "repository": {}, "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" }, "browserslist": [ "> 0.5%", "last 2 versions", "Firefox ESR", "not dead" ] } browserslist-4.19.3/test/fixtures/browserslist-stats.json000066400000000000000000000000721420403321400237630ustar00rootroot00000000000000{ "ie": { "6": 0.01, "7": 0.4, "8": 6 } } browserslist-4.19.3/test/fixtures/dir/000077500000000000000000000000001420403321400177515ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/dir/test.css000066400000000000000000000000001420403321400214300ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/env-config/000077500000000000000000000000001420403321400212265ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/env-config/browserslist000066400000000000000000000001371420403321400237140ustar00rootroot00000000000000# File for test ie 11 ie 10 [development] ff 50 chrome 55 [production staging] ie 9 opera 41 browserslist-4.19.3/test/fixtures/env-config/package.json000066400000000000000000000000261420403321400235120ustar00rootroot00000000000000{ "private": true } browserslist-4.19.3/test/fixtures/env-package/000077500000000000000000000000001420403321400213545ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/env-package/package.json000066400000000000000000000002061420403321400236400ustar00rootroot00000000000000{ "private": true, "browserslist": { "development": ["chrome 55", "firefox 50"], "production": ["ie 9", "opera 41"] } } browserslist-4.19.3/test/fixtures/explorers000066400000000000000000000000121420403321400211320ustar00rootroot00000000000000ie 9 ie 8 browserslist-4.19.3/test/fixtures/package/000077500000000000000000000000001420403321400205665ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/package/package.json000066400000000000000000000000731420403321400230540ustar00rootroot00000000000000{ "private": true, "browserslist": ["ie 9", "ie 10"] } browserslist-4.19.3/test/fixtures/package2/000077500000000000000000000000001420403321400206505ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/package2/package.json000066400000000000000000000001041420403321400231310ustar00rootroot00000000000000{ "private": true, "browserslist": "ie > 6 and ie 9 or ie 10" } browserslist-4.19.3/test/fixtures/rc/000077500000000000000000000000001420403321400175775ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/rc/.browserslistrc000066400000000000000000000000061420403321400226630ustar00rootroot00000000000000ie 11 browserslist-4.19.3/test/fixtures/stats.json000066400000000000000000000003361420403321400212260ustar00rootroot00000000000000{ "dataByBrowser": { "ie": { "8": 0.1, "9": 0.7, "10": 5.3, "11": 10.4 }, "chrome": { "34": 0.2, "35": 0.7, "36": 2.3, "37": 3.5, "999": null } } } browserslist-4.19.3/test/fixtures/string/000077500000000000000000000000001420403321400205015ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/string/package.json000066400000000000000000000000661420403321400227710ustar00rootroot00000000000000{ "private": true, "browserslist": "ie 9, ie 8" } browserslist-4.19.3/test/fixtures/symlink000077700000000000000000000000001420403321400225452explorersustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/typo/000077500000000000000000000000001420403321400201665ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/typo/package.json000066400000000000000000000000531420403321400224520ustar00rootroot00000000000000{ "private": true, "browserlist": [] } browserslist-4.19.3/test/fixtures/update-missing/000077500000000000000000000000001420403321400221245ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/update-missing/package-lock.json000066400000000000000000000015311420403321400253400ustar00rootroot00000000000000{ "name": "update-missing", "lockfileVersion": 2, "requires": true, "packages": { "": { "license": "MIT", "devDependencies": { "qs": "^6.6.0" } }, "node_modules/qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true, "engines": { "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } } }, "dependencies": { "qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true } } } browserslist-4.19.3/test/fixtures/update-missing/package.json000066400000000000000000000001731420403321400244130ustar00rootroot00000000000000{ "description": "browserslist", "license": "MIT", "repository": {}, "devDependencies": { "qs": "^6.6.0" } } browserslist-4.19.3/test/fixtures/update-npm-shrinkwrap/000077500000000000000000000000001420403321400234335ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/update-npm-shrinkwrap/npm-shrinkwrap.json000066400000000000000000001533461420403321400273220ustar00rootroot00000000000000{ "name": "update-npm-shrinkwrap", "lockfileVersion": 2, "requires": true, "packages": { "": { "license": "MIT", "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" } }, "node_modules/@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true, "engines": { "node": ">=4.0.0" } }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/autoprefixer": { "version": "9.7.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "dependencies": { "browserslist": "^4.8.3", "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" }, "bin": { "autoprefixer": "bin/autoprefixer" }, "engines": { "node": ">=6.0.0" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "node_modules/browserslist": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "dependencies": { "caniuse-lite": "^1.0.30001030", "electron-to-chromium": "^1.3.363", "node-releases": "^1.1.50" }, "bin": { "browserslist": "cli.js" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" } }, "node_modules/caniuse-lite": { "version": "1.0.30001030", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", "dev": true }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "node_modules/css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, "dependencies": { "postcss": "^7.0.5" }, "bin": { "css-blank-pseudo": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, "dependencies": { "postcss": "^7.0.6", "postcss-selector-parser": "^5.0.0-rc.4" }, "bin": { "css-has-pseudo": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, "dependencies": { "postcss": "^7.0.5" }, "bin": { "css-prefers-color-scheme": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true }, "node_modules/cssesc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true, "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/electron-to-chromium": { "version": "1.3.377", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", "dev": true }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { "node": ">=4" } }, "node_modules/indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "node_modules/lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "node_modules/lodash.templatesettings": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0" } }, "node_modules/node-releases": { "version": "1.1.52", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", "dev": true, "dependencies": { "semver": "^6.3.0" } }, "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "node_modules/postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "engines": { "node": ">=6.0.0" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" } }, "node_modules/postcss-attribute-case-insensitive": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" } }, "node_modules/postcss-attribute-case-insensitive/node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=4" } }, "node_modules/postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, "dependencies": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "dependencies": { "postcss": "^7.0.14" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "dependencies": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=4.0.0" } }, "node_modules/postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "dependencies": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-font-variant": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-initial": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "dependencies": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, "node_modules/postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "dev": true, "dependencies": { "autoprefixer": "^9.6.1", "browserslist": "^4.6.4", "caniuse-lite": "^1.0.30000981", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", "cssdb": "^4.4.0", "postcss": "^7.0.17", "postcss-attribute-case-insensitive": "^4.0.1", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", "postcss-color-hex-alpha": "^5.0.3", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", "postcss-custom-media": "^7.0.8", "postcss-custom-properties": "^8.0.11", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", "postcss-env-function": "^2.0.2", "postcss-focus-visible": "^4.0.0", "postcss-focus-within": "^3.0.0", "postcss-font-variant": "^4.0.0", "postcss-gap-properties": "^2.0.0", "postcss-image-set-function": "^3.0.1", "postcss-initial": "^3.0.0", "postcss-lab-function": "^2.0.1", "postcss-logical": "^3.0.0", "postcss-media-minmax": "^4.0.0", "postcss-nesting": "^7.0.0", "postcss-overflow-shorthand": "^2.0.0", "postcss-page-break": "^2.0.0", "postcss-place": "^4.0.1", "postcss-pseudo-class-any-link": "^6.0.0", "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "node_modules/postcss-selector-not": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "node_modules/postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "dependencies": { "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=4" } }, "node_modules/postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "node_modules/postcss-values-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "dependencies": { "flatten": "^1.0.2", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=6.14.4" } }, "node_modules/postcss/node_modules/supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true, "engines": { "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true } }, "dependencies": { "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "autoprefixer": { "version": "9.7.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "requires": { "browserslist": "^4.8.3", "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" } }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "browserslist": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001030", "electron-to-chromium": "^1.3.363", "node-releases": "^1.1.50" } }, "caniuse-lite": { "version": "1.0.30001030", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" } }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, "requires": { "postcss": "^7.0.5" } }, "css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, "requires": { "postcss": "^7.0.6", "postcss-selector-parser": "^5.0.0-rc.4" } }, "css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, "requires": { "postcss": "^7.0.5" } }, "cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true }, "cssesc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, "electron-to-chromium": { "version": "1.3.377", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0" } }, "node-releases": { "version": "1.1.52", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", "dev": true, "requires": { "semver": "^6.3.0" } }, "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "postcss-attribute-case-insensitive": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" }, "dependencies": { "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "postcss-selector-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } } } }, "postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" } }, "postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, "requires": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" } }, "postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "requires": { "postcss": "^7.0.14" } }, "postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "requires": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" } }, "postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "requires": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" } }, "postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-font-variant": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-initial": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "requires": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, "postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "dev": true, "requires": { "autoprefixer": "^9.6.1", "browserslist": "^4.6.4", "caniuse-lite": "^1.0.30000981", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", "cssdb": "^4.4.0", "postcss": "^7.0.17", "postcss-attribute-case-insensitive": "^4.0.1", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", "postcss-color-hex-alpha": "^5.0.3", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", "postcss-custom-media": "^7.0.8", "postcss-custom-properties": "^8.0.11", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", "postcss-env-function": "^2.0.2", "postcss-focus-visible": "^4.0.0", "postcss-focus-within": "^3.0.0", "postcss-font-variant": "^4.0.0", "postcss-gap-properties": "^2.0.0", "postcss-image-set-function": "^3.0.1", "postcss-initial": "^3.0.0", "postcss-lab-function": "^2.0.1", "postcss-logical": "^3.0.0", "postcss-media-minmax": "^4.0.0", "postcss-nesting": "^7.0.0", "postcss-overflow-shorthand": "^2.0.0", "postcss-page-break": "^2.0.0", "postcss-place": "^4.0.1", "postcss-pseudo-class-any-link": "^6.0.0", "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" } }, "postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "postcss-selector-not": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "dev": true, "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "requires": { "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } }, "postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "postcss-values-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "requires": { "flatten": "^1.0.2", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } }, "qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true } } } browserslist-4.19.3/test/fixtures/update-npm-shrinkwrap/package.json000066400000000000000000000002751420403321400257250ustar00rootroot00000000000000{ "description": "browserslist", "license": "MIT", "repository": {}, "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" } } browserslist-4.19.3/test/fixtures/update-npm/000077500000000000000000000000001420403321400212455ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/update-npm/package-lock.json000066400000000000000000001533331420403321400244710ustar00rootroot00000000000000{ "name": "update-npm", "lockfileVersion": 2, "requires": true, "packages": { "": { "license": "MIT", "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" } }, "node_modules/@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true, "engines": { "node": ">=4.0.0" } }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/autoprefixer": { "version": "9.7.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "dependencies": { "browserslist": "^4.8.3", "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" }, "bin": { "autoprefixer": "bin/autoprefixer" }, "engines": { "node": ">=6.0.0" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "node_modules/browserslist": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "dependencies": { "caniuse-lite": "^1.0.30001030", "electron-to-chromium": "^1.3.363", "node-releases": "^1.1.50" }, "bin": { "browserslist": "cli.js" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" } }, "node_modules/caniuse-lite": { "version": "1.0.30001030", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", "dev": true }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "node_modules/css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, "dependencies": { "postcss": "^7.0.5" }, "bin": { "css-blank-pseudo": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, "dependencies": { "postcss": "^7.0.6", "postcss-selector-parser": "^5.0.0-rc.4" }, "bin": { "css-has-pseudo": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, "dependencies": { "postcss": "^7.0.5" }, "bin": { "css-prefers-color-scheme": "cli.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true }, "node_modules/cssesc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true, "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/electron-to-chromium": { "version": "1.3.377", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", "dev": true }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { "node": ">=4" } }, "node_modules/indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "node_modules/lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "node_modules/lodash.templatesettings": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0" } }, "node_modules/node-releases": { "version": "1.1.52", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", "dev": true, "dependencies": { "semver": "^6.3.0" } }, "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "node_modules/postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "engines": { "node": ">=6.0.0" }, "funding": { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" } }, "node_modules/postcss-attribute-case-insensitive": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" } }, "node_modules/postcss-attribute-case-insensitive/node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "bin": { "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=4" } }, "node_modules/postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, "dependencies": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "dependencies": { "postcss": "^7.0.14" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "dependencies": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=4.0.0" } }, "node_modules/postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "dependencies": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-font-variant": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-initial": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "dependencies": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, "node_modules/postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "dependencies": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, "dependencies": { "postcss": "^7.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "dev": true, "dependencies": { "autoprefixer": "^9.6.1", "browserslist": "^4.6.4", "caniuse-lite": "^1.0.30000981", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", "cssdb": "^4.4.0", "postcss": "^7.0.17", "postcss-attribute-case-insensitive": "^4.0.1", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", "postcss-color-hex-alpha": "^5.0.3", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", "postcss-custom-media": "^7.0.8", "postcss-custom-properties": "^8.0.11", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", "postcss-env-function": "^2.0.2", "postcss-focus-visible": "^4.0.0", "postcss-focus-within": "^3.0.0", "postcss-font-variant": "^4.0.0", "postcss-gap-properties": "^2.0.0", "postcss-image-set-function": "^3.0.1", "postcss-initial": "^3.0.0", "postcss-lab-function": "^2.0.1", "postcss-logical": "^3.0.0", "postcss-media-minmax": "^4.0.0", "postcss-nesting": "^7.0.0", "postcss-overflow-shorthand": "^2.0.0", "postcss-page-break": "^2.0.0", "postcss-place": "^4.0.1", "postcss-pseudo-class-any-link": "^6.0.0", "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, "dependencies": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { "node": ">=6.0.0" } }, "node_modules/postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, "dependencies": { "postcss": "^7.0.2" } }, "node_modules/postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "node_modules/postcss-selector-not": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "node_modules/postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "dependencies": { "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=4" } }, "node_modules/postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "node_modules/postcss-values-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "dependencies": { "flatten": "^1.0.2", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { "node": ">=6.14.4" } }, "node_modules/postcss/node_modules/supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true, "engines": { "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true } }, "dependencies": { "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "autoprefixer": { "version": "9.7.4", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "requires": { "browserslist": "^4.8.3", "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" } }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "browserslist": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.9.1.tgz", "integrity": "sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001030", "electron-to-chromium": "^1.3.363", "node-releases": "^1.1.50" } }, "caniuse-lite": { "version": "1.0.30001030", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz", "integrity": "sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw==", "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" } }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, "requires": { "postcss": "^7.0.5" } }, "css-has-pseudo": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, "requires": { "postcss": "^7.0.6", "postcss-selector-parser": "^5.0.0-rc.4" } }, "css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, "requires": { "postcss": "^7.0.5" } }, "cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true }, "cssesc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, "electron-to-chromium": { "version": "1.3.377", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz", "integrity": "sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "flatten": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0" } }, "node-releases": { "version": "1.1.52", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", "dev": true, "requires": { "semver": "^6.3.0" } }, "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, "postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "postcss-attribute-case-insensitive": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^6.0.2" }, "dependencies": { "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "postcss-selector-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } } } }, "postcss-color-functional-notation": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-color-gray": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" } }, "postcss-color-hex-alpha": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, "requires": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" } }, "postcss-color-mod-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-color-rebeccapurple": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-custom-media": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, "requires": { "postcss": "^7.0.14" } }, "postcss-custom-properties": { "version": "8.0.11", "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, "requires": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" } }, "postcss-custom-selectors": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-dir-pseudo-class": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-double-position-gradients": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, "requires": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" } }, "postcss-env-function": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-focus-visible": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-focus-within": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-font-variant": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-gap-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-image-set-function": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-initial": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", "dev": true, "requires": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, "postcss-lab-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, "requires": { "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-logical": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-overflow-shorthand": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-page-break": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-place": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" } }, "postcss-preset-env": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", "dev": true, "requires": { "autoprefixer": "^9.6.1", "browserslist": "^4.6.4", "caniuse-lite": "^1.0.30000981", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", "cssdb": "^4.4.0", "postcss": "^7.0.17", "postcss-attribute-case-insensitive": "^4.0.1", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", "postcss-color-hex-alpha": "^5.0.3", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", "postcss-custom-media": "^7.0.8", "postcss-custom-properties": "^8.0.11", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", "postcss-env-function": "^2.0.2", "postcss-focus-visible": "^4.0.0", "postcss-focus-within": "^3.0.0", "postcss-font-variant": "^4.0.0", "postcss-gap-properties": "^2.0.0", "postcss-image-set-function": "^3.0.1", "postcss-initial": "^3.0.0", "postcss-lab-function": "^2.0.1", "postcss-logical": "^3.0.0", "postcss-media-minmax": "^4.0.0", "postcss-nesting": "^7.0.0", "postcss-overflow-shorthand": "^2.0.0", "postcss-page-break": "^2.0.0", "postcss-place": "^4.0.1", "postcss-pseudo-class-any-link": "^6.0.0", "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" } }, "postcss-pseudo-class-any-link": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, "requires": { "postcss": "^7.0.2", "postcss-selector-parser": "^5.0.0-rc.3" } }, "postcss-replace-overflow-wrap": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, "requires": { "postcss": "^7.0.2" } }, "postcss-selector-matches": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "postcss-selector-not": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", "dev": true, "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" } }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "requires": { "cssesc": "^2.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } }, "postcss-value-parser": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "postcss-values-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, "requires": { "flatten": "^1.0.2", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } }, "qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true } } } browserslist-4.19.3/test/fixtures/update-npm/package.json000066400000000000000000000002751420403321400235370ustar00rootroot00000000000000{ "description": "browserslist", "license": "MIT", "repository": {}, "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" } } browserslist-4.19.3/test/fixtures/update-pnpm/000077500000000000000000000000001420403321400214255ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/update-pnpm/package.json000066400000000000000000000001641420403321400237140ustar00rootroot00000000000000{ "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" } } browserslist-4.19.3/test/fixtures/update-pnpm/pnpm-lock.yaml000066400000000000000000000414541420403321400242210ustar00rootroot00000000000000devDependencies: autoprefixer: 9.7.4 postcss-preset-env: 6.7.0 qs: 6.9.1 lockfileVersion: 5.1 packages: /@csstools/convert-colors/1.4.0: dev: true engines: node: '>=4.0.0' resolution: integrity: sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== /ansi-styles/3.2.1: dependencies: color-convert: 1.9.3 dev: true engines: node: '>=4' resolution: integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== /autoprefixer/9.7.4: dependencies: browserslist: 4.9.1 caniuse-lite: 1.0.30001000 chalk: 2.4.2 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 7.0.27 postcss-value-parser: 4.0.3 dev: true engines: node: '>=6.0.0' hasBin: true resolution: integrity: sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== /balanced-match/1.0.0: dev: true resolution: integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= /browserslist/4.9.1: dependencies: caniuse-lite: 1.0.1234 electron-to-chromium: 1.3.377 node-releases: 1.1.52 dev: true hasBin: true resolution: integrity: sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== /caniuse-lite/1.0.30001035: dev: true resolution: integrity: sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== /chalk/2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 dev: true engines: node: '>=4' resolution: integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== /color-convert/1.9.3: dependencies: color-name: 1.1.3 dev: true resolution: integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== /color-name/1.1.3: dev: true resolution: integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= /css-blank-pseudo/0.1.4: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' hasBin: true resolution: integrity: sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== /css-has-pseudo/0.10.0: dependencies: postcss: 7.0.27 postcss-selector-parser: 5.0.0 dev: true engines: node: '>=6.0.0' hasBin: true resolution: integrity: sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== /css-prefers-color-scheme/3.1.1: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' hasBin: true resolution: integrity: sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== /cssdb/4.4.0: dev: true resolution: integrity: sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== /cssesc/2.0.0: dev: true engines: node: '>=4' hasBin: true resolution: integrity: sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== /cssesc/3.0.0: dev: true engines: node: '>=4' hasBin: true resolution: integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== /electron-to-chromium/1.3.377: dev: true resolution: integrity: sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA== /escape-string-regexp/1.0.5: dev: true engines: node: '>=0.8.0' resolution: integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= /flatten/1.0.3: dev: true resolution: integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== /has-flag/3.0.0: dev: true engines: node: '>=4' resolution: integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0= /indexes-of/1.0.1: dev: true resolution: integrity: sha1-8w9xbI4r00bHtn0985FVZqfAVgc= /lodash._reinterpolate/3.0.0: dev: true resolution: integrity: sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= /lodash.template/4.5.0: dependencies: lodash._reinterpolate: 3.0.0 lodash.templatesettings: 4.2.0 dev: true resolution: integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== /lodash.templatesettings/4.2.0: dependencies: lodash._reinterpolate: 3.0.0 dev: true resolution: integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== /node-releases/1.1.52: dependencies: semver: 6.3.0 dev: true resolution: integrity: sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== /normalize-range/0.1.2: dev: true engines: node: '>=0.10.0' resolution: integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= /num2fraction/1.2.2: dev: true resolution: integrity: sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= /postcss-attribute-case-insensitive/4.0.2: dependencies: postcss: 7.0.27 postcss-selector-parser: 6.0.2 dev: true resolution: integrity: sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== /postcss-color-functional-notation/2.0.1: dependencies: postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== /postcss-color-gray/5.0.0: dependencies: '@csstools/convert-colors': 1.4.0 postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== /postcss-color-hex-alpha/5.0.3: dependencies: postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== /postcss-color-mod-function/3.0.3: dependencies: '@csstools/convert-colors': 1.4.0 postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== /postcss-color-rebeccapurple/4.0.1: dependencies: postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== /postcss-custom-media/7.0.8: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== /postcss-custom-properties/8.0.11: dependencies: postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== /postcss-custom-selectors/5.1.2: dependencies: postcss: 7.0.27 postcss-selector-parser: 5.0.0 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== /postcss-dir-pseudo-class/5.0.0: dependencies: postcss: 7.0.27 postcss-selector-parser: 5.0.0 dev: true engines: node: '>=4.0.0' resolution: integrity: sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== /postcss-double-position-gradients/1.0.0: dependencies: postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== /postcss-env-function/2.0.2: dependencies: postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== /postcss-focus-visible/4.0.0: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== /postcss-focus-within/3.0.0: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== /postcss-font-variant/4.0.0: dependencies: postcss: 7.0.27 dev: true resolution: integrity: sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== /postcss-gap-properties/2.0.0: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== /postcss-image-set-function/3.0.1: dependencies: postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== /postcss-initial/3.0.2: dependencies: lodash.template: 4.5.0 postcss: 7.0.27 dev: true resolution: integrity: sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== /postcss-lab-function/2.0.1: dependencies: '@csstools/convert-colors': 1.4.0 postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== /postcss-logical/3.0.0: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== /postcss-media-minmax/4.0.0: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== /postcss-nesting/7.0.1: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== /postcss-overflow-shorthand/2.0.0: dependencies: postcss: 7.0.27 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== /postcss-page-break/2.0.0: dependencies: postcss: 7.0.27 dev: true resolution: integrity: sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== /postcss-place/4.0.1: dependencies: postcss: 7.0.27 postcss-values-parser: 2.0.1 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== /postcss-preset-env/6.7.0: dependencies: autoprefixer: 9.7.4 browserslist: 4.9.1 caniuse-lite: 1.0.3000 css-blank-pseudo: 0.1.4 css-has-pseudo: 0.10.0 css-prefers-color-scheme: 3.1.1 cssdb: 4.4.0 postcss: 7.0.27 postcss-attribute-case-insensitive: 4.0.2 postcss-color-functional-notation: 2.0.1 postcss-color-gray: 5.0.0 postcss-color-hex-alpha: 5.0.3 postcss-color-mod-function: 3.0.3 postcss-color-rebeccapurple: 4.0.1 postcss-custom-media: 7.0.8 postcss-custom-properties: 8.0.11 postcss-custom-selectors: 5.1.2 postcss-dir-pseudo-class: 5.0.0 postcss-double-position-gradients: 1.0.0 postcss-env-function: 2.0.2 postcss-focus-visible: 4.0.0 postcss-focus-within: 3.0.0 postcss-font-variant: 4.0.0 postcss-gap-properties: 2.0.0 postcss-image-set-function: 3.0.1 postcss-initial: 3.0.2 postcss-lab-function: 2.0.1 postcss-logical: 3.0.0 postcss-media-minmax: 4.0.0 postcss-nesting: 7.0.1 postcss-overflow-shorthand: 2.0.0 postcss-page-break: 2.0.0 postcss-place: 4.0.1 postcss-pseudo-class-any-link: 6.0.0 postcss-replace-overflow-wrap: 3.0.0 postcss-selector-matches: 4.0.0 postcss-selector-not: 4.0.0 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== /postcss-pseudo-class-any-link/6.0.0: dependencies: postcss: 7.0.27 postcss-selector-parser: 5.0.0 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== /postcss-replace-overflow-wrap/3.0.0: dependencies: postcss: 7.0.27 dev: true resolution: integrity: sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== /postcss-selector-matches/4.0.0: dependencies: balanced-match: 1.0.0 postcss: 7.0.27 dev: true resolution: integrity: sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== /postcss-selector-not/4.0.0: dependencies: balanced-match: 1.0.0 postcss: 7.0.27 dev: true resolution: integrity: sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== /postcss-selector-parser/5.0.0: dependencies: cssesc: 2.0.0 indexes-of: 1.0.1 uniq: 1.0.1 dev: true engines: node: '>=4' resolution: integrity: sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== /postcss-selector-parser/6.0.2: dependencies: cssesc: 3.0.0 indexes-of: 1.0.1 uniq: 1.0.1 dev: true engines: node: '>=4' resolution: integrity: sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== /postcss-value-parser/4.0.3: dev: true resolution: integrity: sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== /postcss-values-parser/2.0.1: dependencies: flatten: 1.0.3 indexes-of: 1.0.1 uniq: 1.0.1 dev: true engines: node: '>=6.14.4' resolution: integrity: sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== /postcss/7.0.27: dependencies: chalk: 2.4.2 source-map: 0.6.1 supports-color: 6.1.0 dev: true engines: node: '>=6.0.0' resolution: integrity: sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== /qs/6.9.1: dev: true engines: node: '>=0.6' resolution: integrity: sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== /semver/6.3.0: dev: true hasBin: true resolution: integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== /source-map/0.6.1: dev: true engines: node: '>=0.10.0' resolution: integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== /supports-color/5.5.0: dependencies: has-flag: 3.0.0 dev: true engines: node: '>=4' resolution: integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== /supports-color/6.1.0: dependencies: has-flag: 3.0.0 dev: true engines: node: '>=6' resolution: integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== /uniq/1.0.1: dev: true resolution: integrity: sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= specifiers: autoprefixer: ^9.7.4 postcss-preset-env: ^6.7.0 qs: ^6.6.0 browserslist-4.19.3/test/fixtures/update-yarn-v2/000077500000000000000000000000001420403321400217515ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/update-yarn-v2/package.json000066400000000000000000000002101420403321400242300ustar00rootroot00000000000000{ "license": "MIT", "devDependencies": { "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0", "qs": "^6.6.0" } } browserslist-4.19.3/test/fixtures/update-yarn-v2/yarn.lock000066400000000000000000000561041420403321400236020ustar00rootroot00000000000000# This file is generated by running "yarn install" inside your project. # Manual changes might be lost - proceed with caution! __metadata: version: 4 cacheKey: 8 "@csstools/convert-colors@npm:^1.4.0": version: 1.4.0 resolution: "@csstools/convert-colors@npm:1.4.0" checksum: 26069eeb845a506934c821c203feb97f5de634c5fbeb9978505a2271d6cfdb0ce400240fca9620a4ef2e68953928ea25aab92ea8454e0edf5cd074066d9ad57b languageName: node linkType: hard "ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" dependencies: color-convert: ^1.9.0 checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 languageName: node linkType: hard "autoprefixer@npm:^9.6.1, autoprefixer@npm:^9.7.4": version: 9.7.4 resolution: "autoprefixer@npm:9.7.4" dependencies: browserslist: ^4.8.3 caniuse-lite: ^1.0.30001020 chalk: ^2.4.2 normalize-range: ^0.1.2 num2fraction: ^1.2.2 postcss: ^7.0.26 postcss-value-parser: ^4.0.2 bin: autoprefixer: bin/autoprefixer checksum: 1d22b920142d1cb34313eabb484ea3f2e1262f054c93cc12d9f8fb1f90323ce320cd9ac9d3d160eafb76de681a12e03a670777847a533cd62ecd9c619b32e662 languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.0 resolution: "balanced-match@npm:1.0.0" checksum: 9b67bfe558772f40cf743a3469b48b286aecec2ea9fe80c48d74845e53aab1cef524fafedf123a63019b49ac397760573ef5f173f539423061f7217cbb5fbd40 languageName: node linkType: hard "browserslist@npm:^4.6.4, browserslist@npm:^4.8.3": version: 4.9.1 resolution: "browserslist@npm:4.9.1" dependencies: caniuse-lite: ^1.0.30001030 electron-to-chromium: ^1.3.363 node-releases: ^1.1.50 bin: browserslist: cli.js checksum: 507ae83411c3c87e17c46affeb204444999f82a603959146e1daab72b950d53d28b782cb4cec7522fdd979cbd4a3c6b68d67fd3028df35241cacc70a0b12b409 languageName: node linkType: hard "caniuse-lite@npm:^1.0.30000981, caniuse-lite@npm:^1.0.30001020, caniuse-lite@npm:^1.0.30001030": version: 1.0.30001035 resolution: "caniuse-lite@npm:1.0.30001035" checksum: c0dcc74bb843fafafb8034275d4a4960e89f43f838041e631d18c2225ec1d9225c049b3750517716f04ab8d20e4d500b57febde9ef03122cedddd41127461129 languageName: node linkType: hard "chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: ansi-styles: ^3.2.1 escape-string-regexp: ^1.0.5 supports-color: ^5.3.0 checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 languageName: node linkType: hard "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" dependencies: color-name: 1.1.3 checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 languageName: node linkType: hard "color-name@npm:1.1.3": version: 1.1.3 resolution: "color-name@npm:1.1.3" checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d languageName: node linkType: hard "css-blank-pseudo@npm:^0.1.4": version: 0.1.4 resolution: "css-blank-pseudo@npm:0.1.4" dependencies: postcss: ^7.0.5 bin: css-blank-pseudo: cli.js checksum: f995a6ca5dbb867af4b30c3dc872a8f0b27ad120442c34796eef7f9c4dcf014249522aaa0a2da3c101c4afa5d7d376436bb978ae1b2c02deddec283fad30c998 languageName: node linkType: hard "css-has-pseudo@npm:^0.10.0": version: 0.10.0 resolution: "css-has-pseudo@npm:0.10.0" dependencies: postcss: ^7.0.6 postcss-selector-parser: ^5.0.0-rc.4 bin: css-has-pseudo: cli.js checksum: 88d891ba18f821e8a94d821ecdd723c606019462664c7d86e7d8731622bd26f9d55582e494bcc2a62f9399cc7b89049ddc8a9d1e8f1bf1a133c2427739d2d334 languageName: node linkType: hard "css-prefers-color-scheme@npm:^3.1.1": version: 3.1.1 resolution: "css-prefers-color-scheme@npm:3.1.1" dependencies: postcss: ^7.0.5 bin: css-prefers-color-scheme: cli.js checksum: ba69a86b006818ffe3548bcbeb5e4e8139b8b6cf45815a3b3dddd12cd9acf3d8ac3b94e63fe0abd34e0683cf43ed8c2344e3bd472bbf02a6eb40c7bbf565d587 languageName: node linkType: hard "cssdb@npm:^4.4.0": version: 4.4.0 resolution: "cssdb@npm:4.4.0" checksum: 521dd2135da1ab93612a4161eb1024cfc7b155a35d95f9867d328cc88ad57fdd959aa88ea8f4e6cea3a82bca91b76570dc1abb18bfd902c6889973956a03e497 languageName: node linkType: hard "cssesc@npm:^2.0.0": version: 2.0.0 resolution: "cssesc@npm:2.0.0" bin: cssesc: bin/cssesc checksum: 5e50886c2aca3f492fe808dbd146d30eb1c6f31fbe6093979a8376e39d171d989279199f6f3f1a42464109e082e0e42bc33eeff9467fb69bf346f5ba5853c3c6 languageName: node linkType: hard "cssesc@npm:^3.0.0": version: 3.0.0 resolution: "cssesc@npm:3.0.0" bin: cssesc: bin/cssesc checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 languageName: node linkType: hard "electron-to-chromium@npm:^1.3.363": version: 1.3.377 resolution: "electron-to-chromium@npm:1.3.377" checksum: 46cb4fe5c28c5277efcbdddea0d9de7935031c822d9adee1f2f5038e4daae8caee3edbc63886fc4d188292096dcd48ddb0ed086341d693ca0fe8fdbd72e8cae5 languageName: node linkType: hard "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 languageName: node linkType: hard "flatten@npm:^1.0.2": version: 1.0.3 resolution: "flatten@npm:1.0.3" checksum: 5c57379816f1692aaa79fbc6390e0a0644e5e8442c5783ed57c6d315468eddbc53a659eaa03c9bb1e771b0f4a9bd8dd8a2620286bf21fd6538a7857321fdfb20 languageName: node linkType: hard "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b languageName: node linkType: hard "indexes-of@npm:^1.0.1": version: 1.0.1 resolution: "indexes-of@npm:1.0.1" checksum: 4f9799b1739a62f3e02d09f6f4162cf9673025282af7fa36e790146e7f4e216dad3e776a25b08536c093209c9fcb5ea7bd04b082d42686a45f58ff401d6da32e languageName: node linkType: hard "lodash._reinterpolate@npm:^3.0.0": version: 3.0.0 resolution: "lodash._reinterpolate@npm:3.0.0" checksum: 06d2d5f33169604fa5e9f27b6067ed9fb85d51a84202a656901e5ffb63b426781a601508466f039c720af111b0c685d12f1a5c14ff8df5d5f27e491e562784b2 languageName: node linkType: hard "lodash.template@npm:^4.5.0": version: 4.5.0 resolution: "lodash.template@npm:4.5.0" dependencies: lodash._reinterpolate: ^3.0.0 lodash.templatesettings: ^4.0.0 checksum: ca64e5f07b6646c9d3dbc0fe3aaa995cb227c4918abd1cef7a9024cd9c924f2fa389a0ec4296aa6634667e029bc81d4bbdb8efbfde11df76d66085e6c529b450 languageName: node linkType: hard "lodash.templatesettings@npm:^4.0.0": version: 4.2.0 resolution: "lodash.templatesettings@npm:4.2.0" dependencies: lodash._reinterpolate: ^3.0.0 checksum: 863e025478b092997e11a04e9d9e735875eeff1ffcd6c61742aa8272e3c2cddc89ce795eb9726c4e74cef5991f722897ff37df7738a125895f23fc7d12a7bb59 languageName: node linkType: hard "node-releases@npm:^1.1.50": version: 1.1.52 resolution: "node-releases@npm:1.1.52" dependencies: semver: ^6.3.0 checksum: 7a2fcec1c876925bd4f1b0ab6b92c305e1943385bf49098015f7ba89e7d9b96113994a586fada448242d90192f17f9ff1d37bca271015e41e808cb3d48598bc8 languageName: node linkType: hard "normalize-range@npm:^0.1.2": version: 0.1.2 resolution: "normalize-range@npm:0.1.2" checksum: 9b2f14f093593f367a7a0834267c24f3cb3e887a2d9809c77d8a7e5fd08738bcd15af46f0ab01cc3a3d660386f015816b5c922cea8bf2ee79777f40874063184 languageName: node linkType: hard "num2fraction@npm:^1.2.2": version: 1.2.2 resolution: "num2fraction@npm:1.2.2" checksum: 1da9c6797b505d3f5b17c7f694c4fa31565bdd5c0e5d669553253aed848a580804cd285280e8a73148bd9628839267daee4967f24b53d4e893e44b563e412635 languageName: node linkType: hard "postcss-attribute-case-insensitive@npm:^4.0.1": version: 4.0.2 resolution: "postcss-attribute-case-insensitive@npm:4.0.2" dependencies: postcss: ^7.0.2 postcss-selector-parser: ^6.0.2 checksum: e9cf4b61f443bf302dcd1110ef38d6a808fa38ae5d85bfd0aaaa6d35bef3825e0434f1aed8eb9596a5d88f21580ce8b9cd0098414d8490293ef71149695cae9a languageName: node linkType: hard "postcss-color-functional-notation@npm:^2.0.1": version: 2.0.1 resolution: "postcss-color-functional-notation@npm:2.0.1" dependencies: postcss: ^7.0.2 postcss-values-parser: ^2.0.0 checksum: 0bfd1fa93bc54a07240d821d091093256511f70f0df5349e27e4d8b034ee3345f0ae58674ce425be6a91cc934325b2ce36ecddbf958fa8805fed6647cf671348 languageName: node linkType: hard "postcss-color-gray@npm:^5.0.0": version: 5.0.0 resolution: "postcss-color-gray@npm:5.0.0" dependencies: "@csstools/convert-colors": ^1.4.0 postcss: ^7.0.5 postcss-values-parser: ^2.0.0 checksum: 81a62b3e2c170ffadc085c1643a7b5f1c153837d7ca228b07df88b9aeb0ec9088a92f8d919a748137ead3936e8dac2606e32b14b5166a59143642c8573949db5 languageName: node linkType: hard "postcss-color-hex-alpha@npm:^5.0.3": version: 5.0.3 resolution: "postcss-color-hex-alpha@npm:5.0.3" dependencies: postcss: ^7.0.14 postcss-values-parser: ^2.0.1 checksum: 0a0ccb42c7c6a271ffd3c8b123b9c67744827d4b810b759731bc702fea1e00f05f08479ec7cbd8dfa47bc20510830a69f1e316a5724b9e53d5fdc6fabf90afc4 languageName: node linkType: hard "postcss-color-mod-function@npm:^3.0.3": version: 3.0.3 resolution: "postcss-color-mod-function@npm:3.0.3" dependencies: "@csstools/convert-colors": ^1.4.0 postcss: ^7.0.2 postcss-values-parser: ^2.0.0 checksum: ecbf74e9395527aaf3e83b90b1a6c9bba0a1904038d8acef1f530d50a68d912d6b1af8df690342f942be8b89fa7dfaa35ae67cb5fb48013cb389ecb8c74deadb languageName: node linkType: hard "postcss-color-rebeccapurple@npm:^4.0.1": version: 4.0.1 resolution: "postcss-color-rebeccapurple@npm:4.0.1" dependencies: postcss: ^7.0.2 postcss-values-parser: ^2.0.0 checksum: a7b1a204dfc5163ac4195cc3cb0c7b1bba9561feab49d24be8a17d695d6b69fd92f3da23d638260fe7e9d5076cf81bb798b25134fa2a2fbf7f74b0dda2829a96 languageName: node linkType: hard "postcss-custom-media@npm:^7.0.8": version: 7.0.8 resolution: "postcss-custom-media@npm:7.0.8" dependencies: postcss: ^7.0.14 checksum: 3786eb10f238b22dc620cfcc9257779e27d8cee4510b3209d0ab67310e07dc68b69f3359db7a911f5e76df466f73d078fc80100943fe2e8fa9bcacf226705a2d languageName: node linkType: hard "postcss-custom-properties@npm:^8.0.11": version: 8.0.11 resolution: "postcss-custom-properties@npm:8.0.11" dependencies: postcss: ^7.0.17 postcss-values-parser: ^2.0.1 checksum: cb1b47459a23ff2e48714c5d48d50070d573ef829dc7e57189d1b38c6fba0de7084f1acefbd84c61dd67e30bd9a7d154b22f195547728a9dc5f76f7d3f03ffea languageName: node linkType: hard "postcss-custom-selectors@npm:^5.1.2": version: 5.1.2 resolution: "postcss-custom-selectors@npm:5.1.2" dependencies: postcss: ^7.0.2 postcss-selector-parser: ^5.0.0-rc.3 checksum: 26c83d348448f4ab5931cc1621606b09a6b1171e25fac2404073f3e298e77494ac87d4a21009679503b4895452810e93e618b5af26b4c7180a9013f283bb8088 languageName: node linkType: hard "postcss-dir-pseudo-class@npm:^5.0.0": version: 5.0.0 resolution: "postcss-dir-pseudo-class@npm:5.0.0" dependencies: postcss: ^7.0.2 postcss-selector-parser: ^5.0.0-rc.3 checksum: 703156fc65f259ec2e86ba51d18370a6d3b71f2e6473c7d65694676a8f0152137b1997bc0a53f7f373c8c3e4d63c72f7b5e2049f2ef3a7276b49409395722044 languageName: node linkType: hard "postcss-double-position-gradients@npm:^1.0.0": version: 1.0.0 resolution: "postcss-double-position-gradients@npm:1.0.0" dependencies: postcss: ^7.0.5 postcss-values-parser: ^2.0.0 checksum: d2c4515b38a131ece44dba331aea2b3f9de646e30873b49f03fa8906179a3c43ddc43183bc4df609d8af0834e7c266ec3a63eaa4b3e96aa445d98ecdc12d2544 languageName: node linkType: hard "postcss-env-function@npm:^2.0.2": version: 2.0.2 resolution: "postcss-env-function@npm:2.0.2" dependencies: postcss: ^7.0.2 postcss-values-parser: ^2.0.0 checksum: 0cfa2e6cad5123cce39dcf5af332ec3b0e3e09b54d5142225f255914079d2afda3f1052e60f4b6d3bccf7eb9d592325b7421f1ecc6674ccb13c267a721fc3128 languageName: node linkType: hard "postcss-focus-visible@npm:^4.0.0": version: 4.0.0 resolution: "postcss-focus-visible@npm:4.0.0" dependencies: postcss: ^7.0.2 checksum: a3c93fbb578608f60c5256d0989ae32fd9100f76fa053880e82bfeb43751e81a3a9e69bd8338e06579b7f56b230a80fb2cc671eff134f2682dcbec9bbb8658ae languageName: node linkType: hard "postcss-focus-within@npm:^3.0.0": version: 3.0.0 resolution: "postcss-focus-within@npm:3.0.0" dependencies: postcss: ^7.0.2 checksum: 2a31292cd9b929a2dd3171fc4ed287ea4a93c6ec8df1d634503fb97b8b30b33a2970b5e0df60634c60ff887923ab28641b624d566533096950e0a384705e9b90 languageName: node linkType: hard "postcss-font-variant@npm:^4.0.0": version: 4.0.0 resolution: "postcss-font-variant@npm:4.0.0" dependencies: postcss: ^7.0.2 checksum: 47589557b873c23b1cc81630bc627c52cc9653fbc5e15adfd55559f3f556343eecaae726626d92064c8e754f1f45ef6d5fd954bd32ade01427ed7ac8bf10de92 languageName: node linkType: hard "postcss-gap-properties@npm:^2.0.0": version: 2.0.0 resolution: "postcss-gap-properties@npm:2.0.0" dependencies: postcss: ^7.0.2 checksum: c842d105c9403e34a8fac7bdef33a63fcb6bde038b04b20cae1e719e1966632887545576af99a4a6f302c98ca029c6f0d746419f498ef7f6821177ba676e6c25 languageName: node linkType: hard "postcss-image-set-function@npm:^3.0.1": version: 3.0.1 resolution: "postcss-image-set-function@npm:3.0.1" dependencies: postcss: ^7.0.2 postcss-values-parser: ^2.0.0 checksum: 43958d7c1f80077e60e066bdf61bc326bcac64c272f17fd7a0585a6934fb1ffc7ba7f560a39849f597e4d28b8ae3addd9279c7145b9478d2d91a7c54c2fefd8b languageName: node linkType: hard "postcss-initial@npm:^3.0.0": version: 3.0.2 resolution: "postcss-initial@npm:3.0.2" dependencies: lodash.template: ^4.5.0 postcss: ^7.0.2 checksum: fe47de21f746c3498b63d2cceaea4e0e3d0dfe8253cfcfd02404e6f5d4d80302d043ae10f215b0206c0ea9ac24125ab7d3500bce24654cb0c42dbb05787209a2 languageName: node linkType: hard "postcss-lab-function@npm:^2.0.1": version: 2.0.1 resolution: "postcss-lab-function@npm:2.0.1" dependencies: "@csstools/convert-colors": ^1.4.0 postcss: ^7.0.2 postcss-values-parser: ^2.0.0 checksum: 598229a7a05803b18cccde28114833e910367c5954341bea03c7d7b7b5a667dfb6a77ef9dd4a16d80fdff8b10dd44c478602a7d56e43687c8687af3710b4706f languageName: node linkType: hard "postcss-logical@npm:^3.0.0": version: 3.0.0 resolution: "postcss-logical@npm:3.0.0" dependencies: postcss: ^7.0.2 checksum: 5278661b78a093661c9cac8c04666d457734bf156f83d8c67f6034c00e8d4b3a26fce32a8a4a251feae3c7587f42556412dca980e100d0c920ee55e878f7b8ee languageName: node linkType: hard "postcss-media-minmax@npm:^4.0.0": version: 4.0.0 resolution: "postcss-media-minmax@npm:4.0.0" dependencies: postcss: ^7.0.2 checksum: 8a4d94e25089bb5a66c6742bcdd263fce2fea391438151a85b442b7f8b66323bbca552b59a93efd6bcabcfd41845ddd4149bd56d156b008f8d7d04bc84d9fb11 languageName: node linkType: hard "postcss-nesting@npm:^7.0.0": version: 7.0.1 resolution: "postcss-nesting@npm:7.0.1" dependencies: postcss: ^7.0.2 checksum: 4056be95759e8b25477f19aff7202b57dd27eeef41d31f7ca14e4c87d16ffb40e4db3f518fc85bd28b20e183f5e5399b56b52fcc79affd556e13a98bbc678169 languageName: node linkType: hard "postcss-overflow-shorthand@npm:^2.0.0": version: 2.0.0 resolution: "postcss-overflow-shorthand@npm:2.0.0" dependencies: postcss: ^7.0.2 checksum: 553be1b7f9645017d33b654f9a436ce4f4406066c3056ca4c7ee06c21c2964fbe3437a9a3f998137efb6a17c1a79ee7e8baa39332c7dd9874aac8b69a3ad08b0 languageName: node linkType: hard "postcss-page-break@npm:^2.0.0": version: 2.0.0 resolution: "postcss-page-break@npm:2.0.0" dependencies: postcss: ^7.0.2 checksum: 65a4453883e904ca0f337d3a988a1b5a090e2e8bc2855913cb0b4b741158e6ea2e4eed9b33f5989e7ae55faa0f7b83cdc09693d600ac4c86ce804ae381ec48a4 languageName: node linkType: hard "postcss-place@npm:^4.0.1": version: 4.0.1 resolution: "postcss-place@npm:4.0.1" dependencies: postcss: ^7.0.2 postcss-values-parser: ^2.0.0 checksum: 26b2a443b0a8fcb6774d00036fa351633798a655ccd609da2d561fbd6561b0ba6f6b6d89e15fb074389fadb7da4cbc59c48ba75f1f5fdc478c020febb4e2b557 languageName: node linkType: hard "postcss-preset-env@npm:^6.7.0": version: 6.7.0 resolution: "postcss-preset-env@npm:6.7.0" dependencies: autoprefixer: ^9.6.1 browserslist: ^4.6.4 caniuse-lite: ^1.0.30000981 css-blank-pseudo: ^0.1.4 css-has-pseudo: ^0.10.0 css-prefers-color-scheme: ^3.1.1 cssdb: ^4.4.0 postcss: ^7.0.17 postcss-attribute-case-insensitive: ^4.0.1 postcss-color-functional-notation: ^2.0.1 postcss-color-gray: ^5.0.0 postcss-color-hex-alpha: ^5.0.3 postcss-color-mod-function: ^3.0.3 postcss-color-rebeccapurple: ^4.0.1 postcss-custom-media: ^7.0.8 postcss-custom-properties: ^8.0.11 postcss-custom-selectors: ^5.1.2 postcss-dir-pseudo-class: ^5.0.0 postcss-double-position-gradients: ^1.0.0 postcss-env-function: ^2.0.2 postcss-focus-visible: ^4.0.0 postcss-focus-within: ^3.0.0 postcss-font-variant: ^4.0.0 postcss-gap-properties: ^2.0.0 postcss-image-set-function: ^3.0.1 postcss-initial: ^3.0.0 postcss-lab-function: ^2.0.1 postcss-logical: ^3.0.0 postcss-media-minmax: ^4.0.0 postcss-nesting: ^7.0.0 postcss-overflow-shorthand: ^2.0.0 postcss-page-break: ^2.0.0 postcss-place: ^4.0.1 postcss-pseudo-class-any-link: ^6.0.0 postcss-replace-overflow-wrap: ^3.0.0 postcss-selector-matches: ^4.0.0 postcss-selector-not: ^4.0.0 checksum: 209cbb63443a1631aa97ccfc3b95b1ff519ddaeb672f84d6af501bd9e9ad6727680b5b1bffb8209322e47d93029a69df6064f75cd0b7633b6df943cbef33f22e languageName: node linkType: hard "postcss-pseudo-class-any-link@npm:^6.0.0": version: 6.0.0 resolution: "postcss-pseudo-class-any-link@npm:6.0.0" dependencies: postcss: ^7.0.2 postcss-selector-parser: ^5.0.0-rc.3 checksum: d7dc3bba45df2966f8512c082a9cc341e63edac14d915ad9f41c62c452cd306d82da6baeee757dd4e7deafe3fa33b26c16e5236c670916bbb7ff4b4723453541 languageName: node linkType: hard "postcss-replace-overflow-wrap@npm:^3.0.0": version: 3.0.0 resolution: "postcss-replace-overflow-wrap@npm:3.0.0" dependencies: postcss: ^7.0.2 checksum: 8c5b512a1172dd3d7b4a06d56d3b64c76dea01ca0950b546f83ae993f83aa95f933239e18deed0a5f3d2ef47840de55fa73498c4a46bfbe7bd892eb0dd8b606c languageName: node linkType: hard "postcss-selector-matches@npm:^4.0.0": version: 4.0.0 resolution: "postcss-selector-matches@npm:4.0.0" dependencies: balanced-match: ^1.0.0 postcss: ^7.0.2 checksum: 724f6cb345477691909468268a456f978ad3bae9ecd9908b2bb55c55c5f3c6d54a1fe50ce3956d93b122d05fc36677a8e4a34eed07bccda969c3f8baa43669a6 languageName: node linkType: hard "postcss-selector-not@npm:^4.0.0": version: 4.0.0 resolution: "postcss-selector-not@npm:4.0.0" dependencies: balanced-match: ^1.0.0 postcss: ^7.0.2 checksum: f7d1abc3f240fcae4b81e0cbfaf4c2b363a473a66742497a430c786498abd6be0e1ce9e42b43c64877988356f0b8c5e2446e5bcec722bcef807d275a8f596837 languageName: node linkType: hard "postcss-selector-parser@npm:^5.0.0-rc.3, postcss-selector-parser@npm:^5.0.0-rc.4": version: 5.0.0 resolution: "postcss-selector-parser@npm:5.0.0" dependencies: cssesc: ^2.0.0 indexes-of: ^1.0.1 uniq: ^1.0.1 checksum: e49d21455e06d2cb9bf2a615bf3e605e0603c2c430a84c37a34f8baedaf3e8f9d0059a085d3e0483cbfa04c0d4153c7da28e7ac0ada319efdefe407df11dc1d4 languageName: node linkType: hard "postcss-selector-parser@npm:^6.0.2": version: 6.0.2 resolution: "postcss-selector-parser@npm:6.0.2" dependencies: cssesc: ^3.0.0 indexes-of: ^1.0.1 uniq: ^1.0.1 checksum: 5fa344e63bfeda65720d49669696d243b31dd533095fc7a7f39ef8556f511e1ed91ebbe049ff967b2dfa1ac3d5d452091a09614158c94687e24895411ab3c23e languageName: node linkType: hard "postcss-value-parser@npm:^4.0.2": version: 4.0.3 resolution: "postcss-value-parser@npm:4.0.3" checksum: fbbad3bcbd108d05a5625f268faf1b6f61e7c8eb38cd259b8b57f25cfda3a4f4bebfd3f57a50816db4f9d8d3c6eef52f4e80525915c6761b69a409f07ab3a578 languageName: node linkType: hard "postcss-values-parser@npm:^2.0.0, postcss-values-parser@npm:^2.0.1": version: 2.0.1 resolution: "postcss-values-parser@npm:2.0.1" dependencies: flatten: ^1.0.2 indexes-of: ^1.0.1 uniq: ^1.0.1 checksum: 050877880937e15af8d18bf48902e547e2123d7cc32c1f215b392642bc5e2598a87a341995d62f38e450aab4186b8afeb2c9541934806d458ad8b117020b2ebf languageName: node linkType: hard "postcss@npm:^7.0.14, postcss@npm:^7.0.17, postcss@npm:^7.0.2, postcss@npm:^7.0.26, postcss@npm:^7.0.5, postcss@npm:^7.0.6": version: 7.0.27 resolution: "postcss@npm:7.0.27" dependencies: chalk: ^2.4.2 source-map: ^0.6.1 supports-color: ^6.1.0 checksum: 0e2850b58d7ff5a35132dda1ff3863ee0b2377c14b711045511c322429123c71885d572d3c56c4e574b970fa01618a05af86dc5d32a3e7b15901833949f7a2c8 languageName: node linkType: hard "qs@npm:^6.6.0": version: 6.9.1 resolution: "qs@npm:6.9.1" checksum: b8ad80e09bb52232963aadd9276b8d3802723c9ecd31388ff129a7ab5542e7dc67c43a05b2250f973be460d2c734f16d8d908216e5340024349763ee5e19666c languageName: node linkType: hard "root-workspace-0b6124@workspace:.": version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: autoprefixer: ^9.7.4 postcss-preset-env: ^6.7.0 qs: ^6.6.0 languageName: unknown linkType: soft "semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: semver: ./bin/semver.js checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 languageName: node linkType: hard "source-map@npm:^0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 languageName: node linkType: hard "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" dependencies: has-flag: ^3.0.0 checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac languageName: node linkType: hard "supports-color@npm:^6.1.0": version: 6.1.0 resolution: "supports-color@npm:6.1.0" dependencies: has-flag: ^3.0.0 checksum: 74358f9535c83ee113fbaac354b11e808060f6e7d8722082ee43af3578469134e89d00026dce2a6b93ce4e5b89d0e9a10f638b2b9f64c7838c2fb2883a47b3d5 languageName: node linkType: hard "uniq@npm:^1.0.1": version: 1.0.1 resolution: "uniq@npm:1.0.1" checksum: 8206535f83745ea83f9da7035f3b983fd6ed5e35b8ed7745441944e4065b616bc67cf0d0a23a86b40ee0074426f0607f0a138f9b78e124eb6a7a6a6966055709 languageName: node linkType: hard browserslist-4.19.3/test/fixtures/update-yarn-without-integrity/000077500000000000000000000000001420403321400251415ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/update-yarn-without-integrity/package.json000066400000000000000000000002101420403321400274200ustar00rootroot00000000000000{ "license": "MIT", "devDependencies": { "qs": "^6.6.0", "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0" } } browserslist-4.19.3/test/fixtures/update-yarn-without-integrity/yarn.lock000066400000000000000000000552221420403321400267720ustar00rootroot00000000000000# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" autoprefixer@^9.6.1, autoprefixer@^9.7.4: version "9.7.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: browserslist "^4.8.3" caniuse-lite "^1.0.30001020" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^7.0.26" postcss-value-parser "^4.0.2" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= browserslist@^4.6.4, browserslist@^4.8.3: version "4.9.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== dependencies: caniuse-lite "^1.0.30001030" electron-to-chromium "^1.3.363" node-releases "^1.1.50" caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: version "1.0.30001035" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== dependencies: postcss "^7.0.5" css-has-pseudo@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" css-prefers-color-scheme@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== dependencies: postcss "^7.0.5" cssdb@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== cssesc@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== electron-to-chromium@^1.3.363: version "1.3.377" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz#b49d420b36ee6c48b0cd3137bfc7fec75f369b2e" integrity sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA== escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= flatten@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: lodash._reinterpolate "^3.0.0" lodash.templatesettings "^4.0.0" lodash.templatesettings@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: lodash._reinterpolate "^3.0.0" node-releases@^1.1.50: version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== dependencies: semver "^6.3.0" normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= postcss-attribute-case-insensitive@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: postcss "^7.0.2" postcss-selector-parser "^6.0.2" postcss-color-functional-notation@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-color-gray@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.5" postcss-values-parser "^2.0.0" postcss-color-hex-alpha@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== dependencies: postcss "^7.0.14" postcss-values-parser "^2.0.1" postcss-color-mod-function@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-color-rebeccapurple@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-custom-media@^7.0.8: version "7.0.8" resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: postcss "^7.0.14" postcss-custom-properties@^8.0.11: version "8.0.11" resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== dependencies: postcss "^7.0.17" postcss-values-parser "^2.0.1" postcss-custom-selectors@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-dir-pseudo-class@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-double-position-gradients@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== dependencies: postcss "^7.0.5" postcss-values-parser "^2.0.0" postcss-env-function@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-focus-visible@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== dependencies: postcss "^7.0.2" postcss-focus-within@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== dependencies: postcss "^7.0.2" postcss-font-variant@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== dependencies: postcss "^7.0.2" postcss-gap-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== dependencies: postcss "^7.0.2" postcss-image-set-function@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-initial@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== dependencies: lodash.template "^4.5.0" postcss "^7.0.2" postcss-lab-function@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-logical@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== dependencies: postcss "^7.0.2" postcss-media-minmax@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== dependencies: postcss "^7.0.2" postcss-nesting@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== dependencies: postcss "^7.0.2" postcss-overflow-shorthand@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== dependencies: postcss "^7.0.2" postcss-page-break@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== dependencies: postcss "^7.0.2" postcss-place@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-preset-env@^6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== dependencies: autoprefixer "^9.6.1" browserslist "^4.6.4" caniuse-lite "^1.0.30000981" css-blank-pseudo "^0.1.4" css-has-pseudo "^0.10.0" css-prefers-color-scheme "^3.1.1" cssdb "^4.4.0" postcss "^7.0.17" postcss-attribute-case-insensitive "^4.0.1" postcss-color-functional-notation "^2.0.1" postcss-color-gray "^5.0.0" postcss-color-hex-alpha "^5.0.3" postcss-color-mod-function "^3.0.3" postcss-color-rebeccapurple "^4.0.1" postcss-custom-media "^7.0.8" postcss-custom-properties "^8.0.11" postcss-custom-selectors "^5.1.2" postcss-dir-pseudo-class "^5.0.0" postcss-double-position-gradients "^1.0.0" postcss-env-function "^2.0.2" postcss-focus-visible "^4.0.0" postcss-focus-within "^3.0.0" postcss-font-variant "^4.0.0" postcss-gap-properties "^2.0.0" postcss-image-set-function "^3.0.1" postcss-initial "^3.0.0" postcss-lab-function "^2.0.1" postcss-logical "^3.0.0" postcss-media-minmax "^4.0.0" postcss-nesting "^7.0.0" postcss-overflow-shorthand "^2.0.0" postcss-page-break "^2.0.0" postcss-place "^4.0.1" postcss-pseudo-class-any-link "^6.0.0" postcss-replace-overflow-wrap "^3.0.0" postcss-selector-matches "^4.0.0" postcss-selector-not "^4.0.0" postcss-pseudo-class-any-link@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-replace-overflow-wrap@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== dependencies: postcss "^7.0.2" postcss-selector-matches@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== dependencies: balanced-match "^1.0.0" postcss "^7.0.2" postcss-selector-not@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== dependencies: balanced-match "^1.0.0" postcss "^7.0.2" postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== dependencies: cssesc "^2.0.0" indexes-of "^1.0.1" uniq "^1.0.1" postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== dependencies: cssesc "^3.0.0" indexes-of "^1.0.1" uniq "^1.0.1" postcss-value-parser@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== dependencies: flatten "^1.0.2" indexes-of "^1.0.1" uniq "^1.0.1" postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.5, postcss@^7.0.6: version "7.0.27" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" qs@^6.6.0: version "6.9.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= browserslist-4.19.3/test/fixtures/update-yarn-workspaces/000077500000000000000000000000001420403321400236035ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/update-yarn-workspaces/package.json000066400000000000000000000003331420403321400260700ustar00rootroot00000000000000{ "license": "MIT", "private": true, "devDependencies": { "qs": "^6.6.0", "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0" }, "workspaces": [ "workspace-one", "workspace-two" ] } browserslist-4.19.3/test/fixtures/update-yarn-workspaces/yarn.lock000066400000000000000000000553231420403321400254360ustar00rootroot00000000000000# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" autoprefixer@^9.6.1, autoprefixer@^9.7.4: version "9.7.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: browserslist "^4.8.3" caniuse-lite "^1.0.30001020" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^7.0.26" postcss-value-parser "^4.0.2" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= browserslist@^4.6.4, browserslist@^4.8.3: version "4.9.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== dependencies: caniuse-lite "^1.0.30001030" electron-to-chromium "^1.3.363" node-releases "^1.1.50" caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: version "1.0.30001156" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001156.tgz" integrity sha512-z7qztybA2eFZTB6Z3yvaQBIoJpQtsewRD74adw2UbRWwsRq3jIPvgrQGawBMbfafekQaD21FWuXNcywtTDGGCw== chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== dependencies: postcss "^7.0.5" css-has-pseudo@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" css-prefers-color-scheme@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== dependencies: postcss "^7.0.5" cssdb@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== cssesc@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== electron-to-chromium@^1.3.363: version "1.3.377" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz#b49d420b36ee6c48b0cd3137bfc7fec75f369b2e" integrity sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA== escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= flatten@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: lodash._reinterpolate "^3.0.0" lodash.templatesettings "^4.0.0" lodash.templatesettings@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: lodash._reinterpolate "^3.0.0" node-releases@^1.1.50: version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== dependencies: semver "^6.3.0" normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= postcss-attribute-case-insensitive@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: postcss "^7.0.2" postcss-selector-parser "^6.0.2" postcss-color-functional-notation@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-color-gray@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.5" postcss-values-parser "^2.0.0" postcss-color-hex-alpha@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== dependencies: postcss "^7.0.14" postcss-values-parser "^2.0.1" postcss-color-mod-function@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-color-rebeccapurple@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-custom-media@^7.0.8: version "7.0.8" resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: postcss "^7.0.14" postcss-custom-properties@^8.0.11: version "8.0.11" resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== dependencies: postcss "^7.0.17" postcss-values-parser "^2.0.1" postcss-custom-selectors@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-dir-pseudo-class@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-double-position-gradients@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== dependencies: postcss "^7.0.5" postcss-values-parser "^2.0.0" postcss-env-function@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-focus-visible@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== dependencies: postcss "^7.0.2" postcss-focus-within@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== dependencies: postcss "^7.0.2" postcss-font-variant@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== dependencies: postcss "^7.0.2" postcss-gap-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== dependencies: postcss "^7.0.2" postcss-image-set-function@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-initial@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== dependencies: lodash.template "^4.5.0" postcss "^7.0.2" postcss-lab-function@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-logical@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== dependencies: postcss "^7.0.2" postcss-media-minmax@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== dependencies: postcss "^7.0.2" postcss-nesting@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== dependencies: postcss "^7.0.2" postcss-overflow-shorthand@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== dependencies: postcss "^7.0.2" postcss-page-break@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== dependencies: postcss "^7.0.2" postcss-place@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-preset-env@^6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== dependencies: autoprefixer "^9.6.1" browserslist "^4.6.4" caniuse-lite "^1.0.30000981" css-blank-pseudo "^0.1.4" css-has-pseudo "^0.10.0" css-prefers-color-scheme "^3.1.1" cssdb "^4.4.0" postcss "^7.0.17" postcss-attribute-case-insensitive "^4.0.1" postcss-color-functional-notation "^2.0.1" postcss-color-gray "^5.0.0" postcss-color-hex-alpha "^5.0.3" postcss-color-mod-function "^3.0.3" postcss-color-rebeccapurple "^4.0.1" postcss-custom-media "^7.0.8" postcss-custom-properties "^8.0.11" postcss-custom-selectors "^5.1.2" postcss-dir-pseudo-class "^5.0.0" postcss-double-position-gradients "^1.0.0" postcss-env-function "^2.0.2" postcss-focus-visible "^4.0.0" postcss-focus-within "^3.0.0" postcss-font-variant "^4.0.0" postcss-gap-properties "^2.0.0" postcss-image-set-function "^3.0.1" postcss-initial "^3.0.0" postcss-lab-function "^2.0.1" postcss-logical "^3.0.0" postcss-media-minmax "^4.0.0" postcss-nesting "^7.0.0" postcss-overflow-shorthand "^2.0.0" postcss-page-break "^2.0.0" postcss-place "^4.0.1" postcss-pseudo-class-any-link "^6.0.0" postcss-replace-overflow-wrap "^3.0.0" postcss-selector-matches "^4.0.0" postcss-selector-not "^4.0.0" postcss-pseudo-class-any-link@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-replace-overflow-wrap@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== dependencies: postcss "^7.0.2" postcss-selector-matches@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== dependencies: balanced-match "^1.0.0" postcss "^7.0.2" postcss-selector-not@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== dependencies: balanced-match "^1.0.0" postcss "^7.0.2" postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== dependencies: cssesc "^2.0.0" indexes-of "^1.0.1" uniq "^1.0.1" postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== dependencies: cssesc "^3.0.0" indexes-of "^1.0.1" uniq "^1.0.1" postcss-value-parser@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== dependencies: flatten "^1.0.2" indexes-of "^1.0.1" uniq "^1.0.1" postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.5, postcss@^7.0.6: version "7.0.27" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" qs@^6.6.0: version "6.9.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= browserslist-4.19.3/test/fixtures/update-yarn/000077500000000000000000000000001420403321400214245ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/update-yarn/package.json000066400000000000000000000002101420403321400237030ustar00rootroot00000000000000{ "license": "MIT", "devDependencies": { "qs": "^6.6.0", "autoprefixer": "^9.7.4", "postcss-preset-env": "^6.7.0" } } browserslist-4.19.3/test/fixtures/update-yarn/yarn.lock000066400000000000000000000553761420403321400232670ustar00rootroot00000000000000# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" autoprefixer@^9.6.1, autoprefixer@^9.7.4: version "9.7.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: browserslist "^4.8.3" caniuse-lite "^1.0.30001020" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^7.0.26" postcss-value-parser "^4.0.2" balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= browserslist@^4.6.4, browserslist@^4.8.3: version "4.9.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== dependencies: caniuse-lite "^1.0.30001030" electron-to-chromium "^1.3.363" node-releases "^1.1.50" caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: version "1.0.30001035" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== dependencies: postcss "^7.0.5" css-has-pseudo@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" css-prefers-color-scheme@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== dependencies: postcss "^7.0.5" cssdb@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== cssesc@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== electron-to-chromium@^1.3.363: version "1.3.377" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz#b49d420b36ee6c48b0cd3137bfc7fec75f369b2e" integrity sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA== escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= flatten@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: lodash._reinterpolate "^3.0.0" lodash.templatesettings "^4.0.0" lodash.templatesettings@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: lodash._reinterpolate "^3.0.0" node-releases@^1.1.50: version "1.1.52" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== dependencies: semver "^6.3.0" normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= postcss-attribute-case-insensitive@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: postcss "^7.0.2" postcss-selector-parser "^6.0.2" postcss-color-functional-notation@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-color-gray@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.5" postcss-values-parser "^2.0.0" postcss-color-hex-alpha@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== dependencies: postcss "^7.0.14" postcss-values-parser "^2.0.1" postcss-color-mod-function@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-color-rebeccapurple@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-custom-media@^7.0.8: version "7.0.8" resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: postcss "^7.0.14" postcss-custom-properties@^8.0.11: version "8.0.11" resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== dependencies: postcss "^7.0.17" postcss-values-parser "^2.0.1" postcss-custom-selectors@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-dir-pseudo-class@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-double-position-gradients@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== dependencies: postcss "^7.0.5" postcss-values-parser "^2.0.0" postcss-env-function@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-focus-visible@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== dependencies: postcss "^7.0.2" postcss-focus-within@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== dependencies: postcss "^7.0.2" postcss-font-variant@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== dependencies: postcss "^7.0.2" postcss-gap-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== dependencies: postcss "^7.0.2" postcss-image-set-function@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-initial@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== dependencies: lodash.template "^4.5.0" postcss "^7.0.2" postcss-lab-function@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== dependencies: "@csstools/convert-colors" "^1.4.0" postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-logical@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== dependencies: postcss "^7.0.2" postcss-media-minmax@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== dependencies: postcss "^7.0.2" postcss-nesting@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== dependencies: postcss "^7.0.2" postcss-overflow-shorthand@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== dependencies: postcss "^7.0.2" postcss-page-break@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== dependencies: postcss "^7.0.2" postcss-place@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== dependencies: postcss "^7.0.2" postcss-values-parser "^2.0.0" postcss-preset-env@^6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== dependencies: autoprefixer "^9.6.1" browserslist "^4.6.4" caniuse-lite "^1.0.30000981" css-blank-pseudo "^0.1.4" css-has-pseudo "^0.10.0" css-prefers-color-scheme "^3.1.1" cssdb "^4.4.0" postcss "^7.0.17" postcss-attribute-case-insensitive "^4.0.1" postcss-color-functional-notation "^2.0.1" postcss-color-gray "^5.0.0" postcss-color-hex-alpha "^5.0.3" postcss-color-mod-function "^3.0.3" postcss-color-rebeccapurple "^4.0.1" postcss-custom-media "^7.0.8" postcss-custom-properties "^8.0.11" postcss-custom-selectors "^5.1.2" postcss-dir-pseudo-class "^5.0.0" postcss-double-position-gradients "^1.0.0" postcss-env-function "^2.0.2" postcss-focus-visible "^4.0.0" postcss-focus-within "^3.0.0" postcss-font-variant "^4.0.0" postcss-gap-properties "^2.0.0" postcss-image-set-function "^3.0.1" postcss-initial "^3.0.0" postcss-lab-function "^2.0.1" postcss-logical "^3.0.0" postcss-media-minmax "^4.0.0" postcss-nesting "^7.0.0" postcss-overflow-shorthand "^2.0.0" postcss-page-break "^2.0.0" postcss-place "^4.0.1" postcss-pseudo-class-any-link "^6.0.0" postcss-replace-overflow-wrap "^3.0.0" postcss-selector-matches "^4.0.0" postcss-selector-not "^4.0.0" postcss-pseudo-class-any-link@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== dependencies: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" postcss-replace-overflow-wrap@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== dependencies: postcss "^7.0.2" postcss-selector-matches@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== dependencies: balanced-match "^1.0.0" postcss "^7.0.2" postcss-selector-not@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== dependencies: balanced-match "^1.0.0" postcss "^7.0.2" postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: version "5.0.0" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== dependencies: cssesc "^2.0.0" indexes-of "^1.0.1" uniq "^1.0.1" postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== dependencies: cssesc "^3.0.0" indexes-of "^1.0.1" uniq "^1.0.1" postcss-value-parser@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== dependencies: flatten "^1.0.2" indexes-of "^1.0.1" uniq "^1.0.1" postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.5, postcss@^7.0.6: version "7.0.27" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" qs@^6.6.0: version "6.9.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= browserslist-4.19.3/test/fixtures/wrong1/000077500000000000000000000000001420403321400204105ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/wrong1/package.json000066400000000000000000000000741420403321400226770ustar00rootroot00000000000000{ "private": true, "browserslist": { "ie": 10 } } browserslist-4.19.3/test/fixtures/wrong2/000077500000000000000000000000001420403321400204115ustar00rootroot00000000000000browserslist-4.19.3/test/fixtures/wrong2/package.json000066400000000000000000000000651420403321400227000ustar00rootroot00000000000000{ "private": true, "browserslist": [ 1 ] } browserslist-4.19.3/test/global.test.js000066400000000000000000000023551420403321400201030ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originUsage = browserslist.usage test.before.each(() => { browserslist.usage = { global: { 'ie 8': 1, 'ie 9': 5, 'ie 10': 10.1, 'ie 11': 75 } } }) test.after.each(() => { browserslist.usage = originUsage }) test('selects browsers by popularity', () => { equal(browserslist('> 10%'), ['ie 11', 'ie 10']) }) test('selects popularity by more or equal', () => { equal(browserslist('>= 5%'), ['ie 11', 'ie 10', 'ie 9']) }) test('selects browsers by unpopularity', () => { equal(browserslist('< 5%'), ['ie 8']) }) test('selects unpopularity by less or equal', () => { equal(browserslist('<= 5%'), ['ie 9', 'ie 8']) }) test('accepts non-space query', () => { equal(browserslist('>10%'), ['ie 11', 'ie 10']) }) test('works with float', () => { equal(browserslist('> 10.2%'), ['ie 11']) }) test('works with float that has a leading dot', () => { equal(browserslist('> .2%'), ['ie 11', 'ie 10', 'ie 9', 'ie 8']) }) test('allows omission of the space between the > and the percentage', () => { equal(browserslist('>10%'), ['ie 11', 'ie 10']) }) test.run() browserslist-4.19.3/test/last.test.js000066400000000000000000000036761420403321400176150ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originData = { ...browserslist.data } test.before.each(() => { browserslist.data = { ie: { name: 'ie', released: ['9', '10', '11'], versions: ['9', '10', '11'], releaseDate: {} }, edge: { name: 'edge', released: ['12'], versions: ['12', '13'], releaseDate: {} }, chrome: { name: 'chrome', released: ['37', '38', '39'], versions: ['37', '38', '39', '40'], releaseDate: {} }, bb: { name: 'bb', released: ['8'], versions: ['8'], releaseDate: {} }, firefox: { name: 'firefox', released: [], versions: [], releaseDate: {} }, android: { name: 'android', released: ['4.4', '4.4.3-4.4.4', '67'], versions: [], releaseDate: {} } } }) test.after.each(() => { browserslist.data = originData }) test('selects versions of each browser', () => { let res = browserslist('last 2 versions', undefined, true) equal( res, [ 'android 67', 'bb 8', 'chrome 39', 'chrome 38', 'edge 12', 'ie 11', 'ie 10' ] ) }) test('has special logic for android', () => { equal( browserslist('last 31 versions'), [ 'android 67', 'android 4.4.3-4.4.4', 'bb 8', 'chrome 39', 'chrome 38', 'chrome 37', 'edge 12', 'ie 11', 'ie 10', 'ie 9' ] ) }) test('supports pluralization', () => { equal( browserslist('last 1 version'), [ 'android 67', 'bb 8', 'chrome 39', 'edge 12', 'ie 11' ] ) }) test('is case insensitive', () => { equal( browserslist('Last 01 Version'), [ 'android 67', 'bb 8', 'chrome 39', 'edge 12', 'ie 11' ] ) }) test.run() browserslist-4.19.3/test/main.test.js000066400000000000000000000170631420403321400175710ustar00rootroot00000000000000delete require.cache[require.resolve('..')] let { equal, throws, is, type, not } = require('uvu/assert') let { spyOn, restoreAll } = require('nanospy') let { test } = require('uvu') let path = require('path') let browserslist = require('..') let IE = path.join(__dirname, 'fixtures', 'explorers') let FILE = path.join(__dirname, 'fixtures', 'dir', 'test.css') let LINK = path.join(__dirname, 'fixtures', 'symlink') let CONFIG = path.join(__dirname, 'fixtures', 'env-config', 'test.css') let STRING = path.join(__dirname, 'fixtures', 'string', 'package.json') let PACKAGE = path.join(__dirname, 'fixtures', 'env-package', 'package.json') let DEFAULTS = browserslist(browserslist.defaults) test.after.each(() => { restoreAll() process.env.NODE_ENV = 'test' delete process.env.BROWSERSLIST delete process.env.BROWSERSLIST_CONFIG delete process.env.BROWSERSLIST_ENV }) test('accepts array', () => { equal(browserslist(['ie 11', 'ie 10']), ['ie 11', 'ie 10']) }) test('accepts string', () => { equal(browserslist('ie 11, ie 10'), ['ie 11', 'ie 10']) }) test('trims queries', () => { equal(browserslist(['ie 11 ', ' ie 10']), ['ie 11', 'ie 10']) equal(browserslist('ie 11 , ie 10'), ['ie 11', 'ie 10']) }) test('does not accept non-string and non-array parameters', () => { throws(() => browserslist({}), /an array or string. Got object/) }) test('returns unique array', () => { equal(browserslist('ie 10, ie 10'), ['ie 10']) }) test('returns empty result', () => { equal(browserslist([]), []) equal(browserslist(''), []) }) test('uses environment variable on empty request', () => { process.env.BROWSERSLIST = 'ie 10' equal(browserslist(null, { path: FILE }), ['ie 10']) }) test('reads config on no variable', () => { equal(browserslist(null, { path: FILE }), ['ie 11', 'ie 10']) }) test('reads config by direct path', () => { equal(browserslist(null, { config: IE }), ['ie 9', 'ie 8']) }) test('reads package.json config by direct path', () => { equal(browserslist(null, { config: PACKAGE, env: 'development' }), [ 'chrome 55', 'firefox 50' ]) }) test('reads package.json config with one string', () => { equal(browserslist(null, { config: STRING }), ['ie 9', 'ie 8']) }) test('reads config by direct path in environment variable', () => { process.env.BROWSERSLIST_CONFIG = IE equal(browserslist(null, { path: FILE }), ['ie 9', 'ie 8']) }) test('handles undefined stats and path correctly', () => { let config = { stats: undefined, path: undefined } equal(browserslist([], config), []) }) test('throw a error on wrong path to config', () => { throws(() => browserslist(null, { config: IE + '2' }), /Can't read/) }) if (!/^win/.test(process.platform)) { test('reads config by symlink', () => { equal(browserslist(null, { config: LINK }), ['ie 9', 'ie 8']) }) } test('has default selection', () => { is(browserslist.defaults.length > 0, true) }) test('uses default selection on empty request and no config', () => { equal(browserslist(), DEFAULTS) }) test('uses current dir on undefined path', () => { let loadConfig = spyOn(browserslist, 'loadConfig') equal(browserslist(undefined, { path: undefined }), DEFAULTS) equal(loadConfig.calls, [[{ path: process.cwd() }]]) }) test('uses default selection on disabled path', () => { let loadConfig = spyOn(browserslist, 'loadConfig') equal(browserslist(null, { path: false }), DEFAULTS) equal(loadConfig.calls, [[{ path: false }]]) }) test('raises on unknow query', () => { throws(() => browserslist('good'), 'Unknown browser query `good`') throws(() => browserslist('IE === 9'), 'Unknown browser query `IE === 9`') }) test('raises on missed version', () => { throws(() => browserslist('IE'), 'Specify versions in Browserslist query for browser IE') }) test('sorts browsers', () => { equal( browserslist(['ff 10', 'ie 11', 'ie 6', 'ie 10', 'ff 9']), [ 'firefox 10', 'firefox 9', 'ie 11', 'ie 10', 'ie 6' ] ) }) test('sorts browsers with version ranges', () => { equal( browserslist(['ios_saf 7', 'ie 11', 'ie 6', 'ios_saf 10']), [ 'ie 11', 'ie 6', 'ios_saf 10.0-10.2', 'ios_saf 7.0-7.1' ] ) }) test('throws custom error', () => { let error try { browserslist('wrong') } catch (e) { if (e instanceof Error) error = e } equal(error.name, 'BrowserslistError') type(error.stack, 'string') }) test('excludes queries', () => { equal( browserslist(['ie >= 9', 'not ie 11', 'not ie 10', 'ie 10']), ['ie 10', 'ie 9'] ) }) test('excludes queries for 0 version', () => { let browsers = browserslist(['> 1% in US', 'not last 2 and_chr versions']) let android = browsers.filter(i => i.indexOf('and_chr ') !== -1) is(android.length, 0) }) test('excludes queries for all version', () => { let browsers = browserslist(['> 0% in US', 'not last 1 op_mini versions']) let operaMini = browsers.filter(i => i.indexOf('op_mini ') !== -1) is(operaMini.length, 0) }) test('has actual browsers list in docs', () => { let names = browserslist(['last 1 version']).map(i => i.split(' ')[0]) equal( names, [ 'and_chr', 'and_ff', 'and_qq', 'and_uc', 'android', 'baidu', 'bb', 'chrome', 'edge', 'firefox', 'ie', 'ie_mob', 'ios_saf', 'kaios', 'op_mini', 'op_mob', 'opera', 'safari', 'samsung' ] ) }) test('throws error on first exclude query', () => { throws( () => browserslist(['not ie 11']), 'Write any browsers query (for instance, `defaults`) ' + 'before `not ie 11`' ) }) test('cleans 0 version', () => { not.match(browserslist(['> 0%', '> 0% in FI']), 'and_chr 0') }) test('uses env options to browserlist config', () => { equal( browserslist(null, { path: CONFIG, env: 'production' }), ['ie 9', 'opera 41'] ) equal(browserslist(null, { path: CONFIG, env: 'staging' }), ['ie 9', 'opera 41']) equal(browserslist(null, { path: CONFIG, env: 'development' }), ['chrome 55', 'firefox 50']) equal(browserslist(null, { path: CONFIG, env: 'test' }), ['ie 11', 'ie 10']) }) test('uses env options to package.json', () => { equal(browserslist(null, { path: PACKAGE, env: 'production' }), ['ie 9', 'opera 41']) equal(browserslist(null, { path: PACKAGE, env: 'development' }), ['chrome 55', 'firefox 50']) equal(browserslist(null, { path: PACKAGE, env: 'test' }), DEFAULTS) }) test('uses NODE_ENV to get environment', () => { process.env.NODE_ENV = 'test' equal(browserslist(null, { path: CONFIG }), ['ie 11', 'ie 10']) }) test('uses BROWSERSLIST_ENV to get environment', () => { process.env.BROWSERSLIST_ENV = 'development' equal(browserslist(null, { path: CONFIG }), ['chrome 55', 'firefox 50']) }) test('uses production environment by default', () => { delete process.env.NODE_ENV equal(browserslist(null, { path: CONFIG }), ['ie 9', 'opera 41']) }) test('correctly works with not and one-version browsers', () => { equal(browserslist('last 1 Baidu version, not <2% in AT'), ['baidu 7.12']) }) test('throws error on missing env', () => { throws( () => browserslist(null, { path: PACKAGE, throwOnMissing: true, env: 'test' }), "Missing config for Browserslist environment 'test'" ) }) test('does not throw error on missing defaults env', () => { equal( browserslist(null, { path: PACKAGE, throwOnMissing: true, env: 'defaults' }), DEFAULTS ) }) test('does not throw error on missing env', () => { equal( browserslist(null, { path: PACKAGE, throwOnMissing: false, env: 'test' }), DEFAULTS ) }) test.run() browserslist-4.19.3/test/major.test.js000066400000000000000000000053141420403321400177510ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originData = { ...browserslist.data } test.before.each(() => { browserslist.data = { ie: { name: 'ie', released: ['9', '10', '11'], versions: ['9', '10', '11'], releaseDate: {} }, edge: { name: 'edge', released: ['8', '9', '10', '11.0.1', '11.1', '12'], versions: ['8', '9', '10', '11.0.1', '11.1', '12', '13'], releaseDate: {} }, chrome: { name: 'chrome', released: ['37', '38', '39'], versions: ['37', '38', '39', '40'], releaseDate: {} }, bb: { name: 'bb', released: ['8', '10'], versions: ['8'], releaseDate: {} }, firefox: { name: 'firefox', released: [], versions: [], releaseDate: {} }, android: { name: 'android', released: ['4.4', '4.4.3-4.4.4', '39'], versions: ['4.4', '4.4.3-4.4.4', '39'], releaseDate: {} } } }) test.after.each(() => { browserslist.data = originData }) test('selects versions of each browser', () => { equal( browserslist('last 2 major versions'), [ 'android 39', 'bb 10', 'bb 8', 'chrome 39', 'chrome 38', 'edge 12', 'edge 11.1', 'edge 11.0.1', 'ie 11', 'ie 10' ] ) }) test('supports pluralization', () => { equal( browserslist('last 1 major version'), [ 'android 39', 'bb 10', 'chrome 39', 'edge 12', 'ie 11' ] ) }) test('is case insensitive', () => { equal( browserslist('Last 01 MaJoR Version'), [ 'android 39', 'bb 10', 'chrome 39', 'edge 12', 'ie 11' ] ) }) test('selects versions of a single browser', () => { equal( browserslist('last 2 edge major versions'), [ 'edge 12', 'edge 11.1', 'edge 11.0.1' ] ) equal(browserslist('last 1 bb major version'), ['bb 10']) equal( browserslist('last 3 Chrome major versions'), [ 'chrome 39', 'chrome 38', 'chrome 37' ] ) equal(browserslist('last 2 android major versions'), ['android 39']) }) test('supports non-sequential version numbers', () => { equal(browserslist('last 2 bb major versions'), ['bb 10', 'bb 8']) }) test('supports more versions than have been released', () => { equal(browserslist('last 3 bb major versions'), ['bb 10', 'bb 8']) }) test('supports Can I Use missing mobile versions', () => { let opts = { mobileToDesktop: true } equal( browserslist('last 2 android major versions', opts), [ 'android 39', 'android 38' ] ) }) test.run() browserslist-4.19.3/test/node.test.js000066400000000000000000000155071420403321400175730ustar00rootroot00000000000000let { test } = require('uvu') let { equal, throws, is, match } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let arrayContaining = (set, subset) => subset.every(v => set.includes(v)) test('selects Node.js version', () => { equal(browserslist('node 7.5.0'), ['node 7.5.0']) }) test('supports case insensitive Node.js name', () => { equal(browserslist('Node 7.5.0'), ['node 7.5.0']) }) test('throws on unknown Node.js version', () => { throws(() => browserslist('node 3'), /Unknown version/) }) test('throws on malformed Node.js version', () => { throws(() => browserslist('node 8.a'), /Unknown/) throws(() => browserslist('node 8.8.8.8'), /Unknown/) throws(() => browserslist('node 8.01'), /Unknown/) throws(() => browserslist('node 6 - 8.a'), /Unknown/) }) test('return empty array on unknown Node.js version with special flag', () => { equal(browserslist('node 3', { ignoreUnknownVersions: true }), []) }) test('supports selection of Node.js version by major.minor query', () => { equal(browserslist('node 5.1'), ['node 5.1.0']) }) test('supports selection of Node.js version by major version only', () => { equal(browserslist('node 5'), ['node 5.12.0']) }) test('selects maintained Node.js versions', () => { is(Array.isArray(browserslist('maintained node versions')), true) }) test('supports case insensitive query for maintained Node.js versions', () => { is(Array.isArray(browserslist('maintained Node versions')), true) }) test('supports current node version', () => { let versions = browserslist('current node') is(versions.length, 1) match(versions[0], /node \d+\.\d+\.\d+/) }) test('supports comparison operator', () => { equal( browserslist('node <= 5'), [ 'node 5.0.0', 'node 4.9.0', 'node 4.8.0', 'node 4.7.0', 'node 4.6.0', 'node 4.5.0', 'node 4.4.0', 'node 4.3.0', 'node 4.2.0', 'node 4.1.0', 'node 4.0.0', 'node 0.12.0', 'node 0.11.0', 'node 0.10.0', 'node 0.9.0', 'node 0.8.0', 'node 0.7.0', 'node 0.6.0', 'node 0.5.0', 'node 0.4.0', 'node 0.3.0', 'node 0.2.0' ] ) equal( browserslist('node < 5'), [ 'node 4.9.0', 'node 4.8.0', 'node 4.7.0', 'node 4.6.0', 'node 4.5.0', 'node 4.4.0', 'node 4.3.0', 'node 4.2.0', 'node 4.1.0', 'node 4.0.0', 'node 0.12.0', 'node 0.11.0', 'node 0.10.0', 'node 0.9.0', 'node 0.8.0', 'node 0.7.0', 'node 0.6.0', 'node 0.5.0', 'node 0.4.0', 'node 0.3.0', 'node 0.2.0' ] ) is(browserslist('Node <= 5').length, 22) is(arrayContaining( browserslist('node >= 9'), [ 'node 9.0.0', 'node 9.1.0', 'node 9.2.0', 'node 9.3.0', 'node 9.4.0', 'node 9.5.0', 'node 9.6.0', 'node 9.7.0', 'node 9.8.0', 'node 9.9.0', 'node 9.10.0', 'node 9.11.0', 'node 10.0.0', 'node 10.1.0', 'node 10.2.0', 'node 10.3.0', 'node 10.4.0', 'node 10.5.0', 'node 10.6.0', 'node 10.7.0', 'node 10.8.0', 'node 10.9.0', 'node 10.10.0', 'node 10.11.0', 'node 10.12.0', 'node 10.13.0', 'node 10.14.0', 'node 10.15.0', 'node 11.0.0', 'node 11.1.0', 'node 11.2.0', 'node 11.3.0', 'node 11.4.0', 'node 11.5.0', 'node 11.6.0', 'node 11.7.0', 'node 11.8.0', 'node 11.9.0', 'node 11.10.0' ] ), true) is(arrayContaining( browserslist('node > 9'), [ 'node 9.1.0', 'node 9.2.0', 'node 9.3.0', 'node 9.4.0', 'node 9.5.0', 'node 9.6.0', 'node 9.7.0', 'node 9.8.0', 'node 9.9.0', 'node 9.10.0', 'node 9.11.0', 'node 10.0.0', 'node 10.1.0', 'node 10.2.0', 'node 10.3.0', 'node 10.4.0', 'node 10.5.0', 'node 10.6.0', 'node 10.7.0', 'node 10.8.0', 'node 10.9.0', 'node 10.10.0', 'node 10.11.0', 'node 10.12.0', 'node 10.13.0', 'node 10.14.0', 'node 10.15.0', 'node 11.0.0', 'node 11.1.0', 'node 11.2.0', 'node 11.3.0', 'node 11.4.0', 'node 11.5.0', 'node 11.6.0', 'node 11.7.0', 'node 11.8.0', 'node 11.9.0', 'node 11.10.0' ] ), true) }) test('supports range selection', () => { equal( browserslist('node 4-6'), [ 'node 6.17.0', 'node 6.16.0', 'node 6.15.0', 'node 6.14.0', 'node 6.13.0', 'node 6.12.0', 'node 6.11.0', 'node 6.10.0', 'node 6.9.0', 'node 6.8.0', 'node 6.7.0', 'node 6.6.0', 'node 6.5.0', 'node 6.4.0', 'node 6.3.0', 'node 6.2.0', 'node 6.1.0', 'node 6.0.0', 'node 5.12.0', 'node 5.11.0', 'node 5.10.0', 'node 5.9.0', 'node 5.8.0', 'node 5.7.0', 'node 5.6.0', 'node 5.5.0', 'node 5.4.0', 'node 5.3.0', 'node 5.2.0', 'node 5.1.0', 'node 5.0.0', 'node 4.9.0', 'node 4.8.0', 'node 4.7.0', 'node 4.6.0', 'node 4.5.0', 'node 4.4.0', 'node 4.3.0', 'node 4.2.0', 'node 4.1.0', 'node 4.0.0' ] ) equal( browserslist('node 4-6.0.0'), [ 'node 6.0.0', 'node 5.12.0', 'node 5.11.0', 'node 5.10.0', 'node 5.9.0', 'node 5.8.0', 'node 5.7.0', 'node 5.6.0', 'node 5.5.0', 'node 5.4.0', 'node 5.3.0', 'node 5.2.0', 'node 5.1.0', 'node 5.0.0', 'node 4.9.0', 'node 4.8.0', 'node 4.7.0', 'node 4.6.0', 'node 4.5.0', 'node 4.4.0', 'node 4.3.0', 'node 4.2.0', 'node 4.1.0', 'node 4.0.0' ] ) equal( browserslist('node 6.5-7.5'), [ 'node 7.5.0', 'node 7.4.0', 'node 7.3.0', 'node 7.2.0', 'node 7.1.0', 'node 7.0.0', 'node 6.17.0', 'node 6.16.0', 'node 6.15.0', 'node 6.14.0', 'node 6.13.0', 'node 6.12.0', 'node 6.11.0', 'node 6.10.0', 'node 6.9.0', 'node 6.8.0', 'node 6.7.0', 'node 6.6.0', 'node 6.5.0' ] ) equal( browserslist('node 6.6.4-7.7.5'), [ 'node 7.7.0', 'node 7.6.0', 'node 7.5.0', 'node 7.4.0', 'node 7.3.0', 'node 7.2.0', 'node 7.1.0', 'node 7.0.0', 'node 6.17.0', 'node 6.16.0', 'node 6.15.0', 'node 6.14.0', 'node 6.13.0', 'node 6.12.0', 'node 6.11.0', 'node 6.10.0', 'node 6.9.0', 'node 6.8.0', 'node 6.7.0', // include 6.6.0 as patch versions are ignored 'node 6.6.0' ] ) }) test.run() browserslist-4.19.3/test/opera.test.js000066400000000000000000000005531420403321400177470ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') test('selects opera mini', () => { equal(browserslist('op_mini all'), ['op_mini all']) }) test('selects opera mini case insensitive', () => { equal(browserslist('OperaMini All'), ['op_mini all']) }) test.run() browserslist-4.19.3/test/phantomjs.test.js000066400000000000000000000007401420403321400206420ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') test('converts PhantomJS to Safari', () => { equal(browserslist('phantomjs 2.1'), ['safari 6']) equal(browserslist('phantomjs 1.9'), ['safari 5']) }) test('supports case insensitive PhantomJS name', () => { equal(browserslist('PhantomJS 2.1'), ['safari 6']) equal(browserslist('PhantomJS 1.9'), ['safari 5']) }) test.run() browserslist-4.19.3/test/range.test.js000066400000000000000000000022751420403321400177400ustar00rootroot00000000000000let { test } = require('uvu') let { equal, throws } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originData = { ...browserslist.data } test.before.each(() => { browserslist.data = { ie: { name: 'ie', released: ['8', '9', '10', '11'], versions: ['8', '9', '10', '11'], releaseDate: {} }, android: { name: 'android', released: ['4.2-4.3', '4.4', '4.4.3-4.4.4', '37'], versions: ['4.2-4.3', '4.4', '4.4.3-4.4.4', '37'], releaseDate: {} } } }) test.after.each(() => { browserslist.data = originData }) test('selects a range of browsers', () => { equal(browserslist('ie 8-10'), ['ie 10', 'ie 9', 'ie 8']) }) test('selects versions with query out of range', () => { equal(browserslist('ie 1-12'), ['ie 11', 'ie 10', 'ie 9', 'ie 8']) }) test('selects a range of android browsers', () => { equal( browserslist('android 4.3-37'), [ 'android 37', 'android 4.4.3-4.4.4', 'android 4.4', 'android 4.2-4.3' ] ) }) test('raises on an unknown browser', () => { throws(() => browserslist('unknown 4-7'), 'Unknown browser unknown') }) test.run() browserslist-4.19.3/test/release.test.js000066400000000000000000000060321420403321400202570ustar00rootroot00000000000000delete require.cache[require.resolve('..')] let { spyOn, restoreAll } = require('nanospy') let { equal, is } = require('uvu/assert') let { test } = require('uvu') let fs = require('fs') let browserslist = require('..') let originData = browserslist.data function createDate(monthBack) { let releaseTime = Date.now() - monthBack * 30 * 24 * 60 * 60 * 1000 return releaseTime / 1000 } let youngerSixMonthsData = { ie: { name: 'ie', released: ['9', '10', '11'], versions: ['9', '10', '11'], releaseDate: { 9: createDate(14), 10: createDate(8), 11: createDate(7) } }, edge: { name: 'edge', released: ['14', '15', '16', '17', '18'], versions: ['14', '15', '16', '17', '18'], releaseDate: { 14: createDate(8), 15: createDate(6), 16: createDate(5), 17: createDate(4), 18: null } }, bb: { name: 'bb', released: [], versions: [], releaseDate: {} } } let olderSixMonthsData = { ie: { name: 'ie', released: ['9', '10', '11'], versions: ['9', '10', '11'], releaseDate: { 9: createDate(7), 10: createDate(8), 11: createDate(10) } }, edge: { name: 'edge', released: ['14', '15', '16', '17', '18'], versions: ['14', '15', '16', '17', '18'], releaseDate: { 14: createDate(9), 15: createDate(8), 16: createDate(12), 17: createDate(7), 18: null } }, bb: { name: 'bb', released: [], versions: [], releaseDate: {} } } function findPackage(text) { return /package.json/.test(text.toString()) } function mockStatSync() { return { isFile: () => true } } let warn test.before.each(() => { warn = spyOn(console, 'warn', () => true) }) test.after.each(() => { restoreAll() browserslist.clearCaches() delete process.env.BROWSERSLIST_IGNORE_OLD_DATA }) test.after(() => { browserslist.data = originData }) test('does not print warning', () => { browserslist.data = youngerSixMonthsData browserslist('last 2 versions') warn(warn.called, false) }) test('shows warning', () => { browserslist.data = olderSixMonthsData spyOn(fs, 'existsSync', findPackage) spyOn(fs, 'statSync', mockStatSync) browserslist('last 2 versions') equal(warn.calls, [ [ 'Browserslist: caniuse-lite is outdated. Please run:\n' + ' npx browserslist@latest --update-db\n' + ' Why you should do it regularly: ' + 'https://github.com/browserslist/browserslist#browsers-data-updating' ] ]) }) test('hides warning on request', () => { process.env.BROWSERSLIST_IGNORE_OLD_DATA = 'true' browserslist.data = olderSixMonthsData spyOn(fs, 'existsSync', findPackage) spyOn(fs, 'statSync', mockStatSync) browserslist('last 2 versions') is(warn.called, false) }) test('shows warning only once', () => { browserslist.data = olderSixMonthsData spyOn(fs, 'existsSync', findPackage) spyOn(fs, 'statSync', mockStatSync) browserslist('last 2 versions') browserslist('last 2 versions') is(warn.callCount, 1) }) test.run() browserslist-4.19.3/test/shareable-stats.test.js000066400000000000000000000100261420403321400217170ustar00rootroot00000000000000let { test } = require('uvu') let { equal, throws } = require('uvu/assert') let { ensureDir, writeFile, remove } = require('fs-extra') let { join } = require('path') delete require.cache[require.resolve('..')] let browserslist = require('..') let STATS = join(__dirname, 'fixtures', 'browserslist-stats.json') let CUSTOM_STATS = join(__dirname, 'fixtures', 'stats.json') let mocked = [] async function mock(name, index, stats) { let dir = join(__dirname, '..', 'node_modules', name) mocked.push(dir) await ensureDir(dir) if (index) { let content = 'module.exports = ' + JSON.stringify(index) await writeFile(join(dir, 'index.js'), content) } if (stats) { let statsContent = JSON.stringify(stats) await writeFile(join(dir, 'browserslist-stats.json'), statsContent) } } test.after.each(async () => { await Promise.all(mocked.map(dir => remove(dir))) mocked = [] delete process.env.BROWSERSLIST_STATS }) test('takes stats from shareable config', async () => { await mock('browserslist-config-test1', undefined, { dataByBrowser: { chrome: { 55: 4, 56: 6 } } }) equal(browserslist('> 5% in browserslist-config-test1 stats'), ['chrome 56']) }) test('takes stats and queries from shareable config', async () => { await mock( 'browserslist-config-test2', ['> 1% in browserslist-config-test2 stats'], { ie: { 8: 1, 11: 2 } } ) equal(browserslist('extends browserslist-config-test2'), ['ie 11']) }) test('ignores null usage value', async () => { await mock( 'browserslist-config-null-test', undefined, { chrome: { 90: 3, 999: null } } ) equal(browserslist('< 5% in browserslist-config-null-test stats'), ['chrome 90']) }) test('works with non-prefixed stats with dangerousExtend', async () => { await mock('pkg', undefined, { chrome: { 78: 6 } }) equal( browserslist(['> 5% in pkg stats'], { dangerousExtend: true }), ['chrome 78'] ) }) test('handles scoped stats with a dot in the name', async () => { await mock('@example.com/browserslist-config', undefined, { ie: { 8: 5, 11: 4 } }) equal( browserslist(['< 5% in @example.com/browserslist-config stats']), ['ie 11'] ) }) test('handles file in scoped stats', async () => { await mock('@scope/browserslist-config/ie', undefined, { ie: { 8: 2, 11: 5 } }) equal( browserslist(['>= 5% in @scope/browserslist-config/ie stats']), ['ie 11'] ) }) test('handles file-less scoped stats', async () => { await mock('@scope/browserslist-config', undefined, { ie: { 8: 6, 11: 5 } }) equal(browserslist(['<= 5% in @scope/browserslist-config stats']), ['ie 11']) }) test('handles scoped stats', async () => { await mock('@scope/browserslist-config-test', undefined, { ie: { 8: 2, 11: 6 } }) equal(browserslist(['> 5% in @scope/browserslist-config-test stats']), ['ie 11']) }) test('ignores passed stats', () => { throws( () => browserslist('> 5% in browserslist-config-test3 stats', { stats: STATS }), /Cannot (find|resolve) module/ ) }) test('ignores environment variable stats', () => { process.env.BROWSERSLIST_STATS = CUSTOM_STATS throws(() => browserslist('> 5% in browserslist-config-test4 stats'), /Cannot (find|resolve) module/) }) test('throws when stats does not have browserslist-config- prefix', () => { throws( () => { browserslist(['> 5% in thing-without-prefix stats'])}, /needs `browserslist-config-` prefix/ ) }) test('throws when stats has dot in path', () => { throws(() => browserslist(['> 5% in browserslist-config-package/../something stats']), /`.` not allowed/) }) test('throws when stats has node_modules in path', () => { throws( () => browserslist(['> 5% in browserslist-config-test/node_modules/a stats']), /`node_modules` not allowed/ ) }) test('throw if stats undefined', async () => { await mock( 'browserslist-config-undefined', undefined, // @ts-expect-error { dataByBrowser: 'not object' } ) throws(() => browserslist(['> 5% in browserslist-config-undefined stats']), /statistics was not provided/ ) }) test.run() browserslist-4.19.3/test/since.test.js000066400000000000000000000027171420403321400177460ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originData = { ...browserslist.data } let originWarn = console.warn test.before.each(() => { browserslist.data = { ie: { name: 'ie', versions: ['1', '2', '3'], released: [], releaseDate: { 1: 0, // Thu, 01 Jan 1970 00:00:00 +0000 2: 1483228800, // Sun, 01 Jan 2017 00:00:00 +0000 3: 1485907200 // Wed, 01 Feb 2017 00:00:00 +0000 } }, safari: { name: 'safari', versions: ['TP'], released: [], releaseDate: { 1: 1451606400, // Fri, 01 Jan 2016 00:00:00 +0000 TP: null // unreleased } } } console.warn = function (...args) { if (args[0].includes('--update-db')) return originWarn.apply(this, args) } }) test.after.each(() => { browserslist.data = originData console.warn = originWarn }) test('selects versions released on year boundaries', () => { equal(browserslist('since 1970'), ['ie 3', 'ie 2', 'ie 1', 'safari 1']) }) test('is case insensitive', () => { equal(browserslist('Since 1970'), ['ie 3', 'ie 2', 'ie 1', 'safari 1']) }) test('selects versions released on year and month boundaries', () => { equal(browserslist('since 2017-01'), ['ie 3', 'ie 2']) }) test('selects versions released on date boundaries', () => { equal(browserslist('since 2017-02-01'), ['ie 3']) }) test.run() browserslist-4.19.3/test/unreleased.test.js000066400000000000000000000021731420403321400207700ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originData = { ...browserslist.data } test.before.each(() => { browserslist.data = { ie: { name: 'ie', released: ['9', '10', '11'], versions: ['9', '10', '11'], releaseDate: {} }, edge: { name: 'edge', released: ['12'], versions: ['12', '13'], releaseDate: {} }, chrome: { name: 'chrome', released: ['37', '38', '39'], versions: ['37', '38', '39', '40'], releaseDate: {} } } }) test.after.each(() => { browserslist.data = originData }) test('selects unreleased versions of each browser', () => { equal(browserslist('unreleased versions'), ['chrome 40', 'edge 13']) }) test('selects unreleased versions of specific browser', () => { equal(browserslist('unreleased Edge versions'), ['edge 13']) }) test('is case insensitive', () => { equal(browserslist('Unreleased Versions'), ['chrome 40', 'edge 13']) equal(browserslist('Unreleased Chrome versions'), ['chrome 40']) }) test.run() browserslist-4.19.3/test/update-db/000077500000000000000000000000001420403321400171675ustar00rootroot00000000000000browserslist-4.19.3/test/update-db/index.test.js000066400000000000000000000177741420403321400216320ustar00rootroot00000000000000process.env.NO_COLOR = '1' let { test } = require('uvu') let { equal, match, throws } = require('uvu/assert') let { remove, copy, readFile, ensureDir } = require('fs-extra') let { execSync } = require('child_process') let { nanoid } = require('nanoid/non-secure') let { tmpdir } = require('os') let { join } = require('path') let updateDb = require('../../update-db') const NODE_8 = process.version.startsWith('v8.') const NODE_10 = process.version.startsWith('v10.') let testdir test.after.each(async () => { process.chdir(join(__dirname, '..')) await remove(testdir) }) async function chdir(fixture, ...files) { testdir = join(tmpdir(), `browserslist-${fixture}-${nanoid()}`) await ensureDir(testdir) let from = join(__dirname, '..', 'fixtures', fixture) await Promise.all( files.map(async i => { await copy(join(from, i), join(testdir, i)) }) ) process.chdir(testdir) return testdir } function runUpdate() { let out = '' updateDb(str => { out += str }) return out } function isInstalled(cmd) { return execSync(`whereis ${cmd}`).toString().trim() !== `${cmd}:` } function checkRunUpdateContents(installedVersions, system) { let addCmd = system + (system === 'yarn' ? ' add -W' : ' install') let rmCmd = system + (system === 'yarn' ? ' remove -W' : ' uninstall') match( runUpdate(), `Latest version: ${caniuse.version}\n` + 'Installed version' + (installedVersions.indexOf(',') !== -1 ? 's:' : ': ') + ` ${installedVersions}\n` + 'Removing old caniuse-lite from lock file\n' + 'Installing new caniuse-lite version\n' + `$ ${addCmd} caniuse-lite\n` + 'Cleaning package.json dependencies from caniuse-lite\n' + `$ ${rmCmd} caniuse-lite\n` + 'caniuse-lite has been successfully updated\n' ) } function checkRunUpdateNoChanges() { match( runUpdate(), `Latest version: ${caniuse.version}\n` + `Installed version: ${caniuse.version}\n` + 'caniuse-lite is up to date\n' ) } const yarnLockfile1Versions = 'caniuse-lite@^1.0.30000981, ' + 'caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030:' const yarnLockfile2Versions = '"caniuse-lite@npm:^1.0.30000981, ' + 'caniuse-lite@npm:^1.0.30001020, caniuse-lite@npm:^1.0.30001030":' async function checkYarnLockfile(dir, version) { let yarnLockfileVersions = yarnLockfile1Versions let versionSyntax = ` version "${caniuse.version}"` if (version === 2) { yarnLockfileVersions = yarnLockfile2Versions versionSyntax = ` version: ${caniuse.version}` } let contents = (await readFile(join(dir, 'yarn.lock'))).toString() match(contents, `${yarnLockfileVersions}\n`) match(contents, `${yarnLockfileVersions}\n` + versionSyntax) } let caniuse = JSON.parse(execSync('npm show caniuse-lite --json').toString()) test('throws on missing package.json', async () => { await chdir('update-missing') throws( runUpdate, 'Cannot find package.json. ' + 'Is this the right directory to run `npx browserslist --update-db` in?' ) }) test('throws on missing lockfile', async () => { await chdir('update-missing', 'package.json') throws( runUpdate, 'No lockfile found. Run "npm install", "yarn install" or "pnpm install"' ) }) test('shows target browser changes', async () => { let dir = await chdir( 'browserslist-diff', 'package.json', 'package-lock.json' ) match( runUpdate(), /(Target browser changes:\n([+-] \w+ [\d.-]+\n)+)|(No target browser changes)/ ) let lock = JSON.parse(await readFile(join(dir, 'package-lock.json'))) equal(lock.dependencies['caniuse-lite'].version, caniuse.version) }) test("shows an error when browsers list can't be retrieved", async () => { let dir = await chdir( 'browserslist-diff-error', 'package.json', 'package-lock.json' ) match( runUpdate(), 'Problem with browser list retrieval.\n' + 'Target browser changes won’t be shown.\n' ) let lock = JSON.parse(await readFile(join(dir, 'package-lock.json'))) equal(lock.dependencies['caniuse-lite'].version, caniuse.version) }) test('updates caniuse-lite without previous version', async () => { let dir = await chdir('update-missing', 'package.json', 'package-lock.json') checkRunUpdateContents('none', 'npm') let lock = JSON.parse(await readFile(join(dir, 'package-lock.json'))) equal(lock.dependencies['caniuse-lite'], undefined) }) test('updates caniuse-lite for npm', async () => { let dir = await chdir('update-npm', 'package.json', 'package-lock.json') checkRunUpdateContents('1.0.30001030', 'npm') let lock = JSON.parse(await readFile(join(dir, 'package-lock.json'))) equal(lock.dependencies['caniuse-lite'].version, caniuse.version) }) test('skips the npm update if caniuse-lite is up to date', async () => { let dir = await chdir('update-npm', 'package.json', 'package-lock.json') checkRunUpdateContents('1.0.30001030', 'npm') let lock = JSON.parse(await readFile(join(dir, 'package-lock.json'))) equal(lock.dependencies['caniuse-lite'].version, caniuse.version) checkRunUpdateNoChanges() lock = JSON.parse(await readFile(join(dir, 'package-lock.json'))) equal(lock.dependencies['caniuse-lite'].version, caniuse.version) }) test('updates caniuse-lite for npm-shrinkwrap', async () => { let dir = await chdir( 'update-npm-shrinkwrap', 'package.json', 'npm-shrinkwrap.json' ) checkRunUpdateContents('1.0.30001030', 'npm') let lock = JSON.parse(await readFile(join(dir, 'npm-shrinkwrap.json'))) equal(lock.dependencies['caniuse-lite'].version, caniuse.version) }) test('skips the npm-shrinkwrap update if caniuse-lite is up to date', async () => { let dir = await chdir( 'update-npm-shrinkwrap', 'package.json', 'npm-shrinkwrap.json' ) checkRunUpdateContents('1.0.30001030', 'npm') let lock = JSON.parse(await readFile(join(dir, 'npm-shrinkwrap.json'))) equal(lock.dependencies['caniuse-lite'].version, caniuse.version) checkRunUpdateNoChanges() lock = JSON.parse(await readFile(join(dir, 'npm-shrinkwrap.json'))) equal(lock.dependencies['caniuse-lite'].version, caniuse.version) }) test('updates caniuse-lite for yarn', async () => { let dir = await chdir('update-yarn', 'package.json', 'yarn.lock') checkRunUpdateContents('1.0.30001035', 'yarn') checkYarnLockfile(dir) }) test('updates caniuse-lite for yarn without integrity', async () => { let dir = await chdir( 'update-yarn-without-integrity', 'package.json', 'yarn.lock' ) checkRunUpdateContents('1.0.30001035', 'yarn') checkYarnLockfile(dir) }) test('skips the yarn update if caniuse-lite is up to date', async () => { let dir = await chdir('update-yarn', 'package.json', 'yarn.lock') checkRunUpdateContents('1.0.30001035', 'yarn') checkYarnLockfile(dir) checkRunUpdateNoChanges() checkYarnLockfile(dir) }) test('updates caniuse-lite for yarn with workspaces', async () => { let dir = await chdir('update-yarn-workspaces', 'package.json', 'yarn.lock') checkRunUpdateContents('1.0.30001156', 'yarn') checkYarnLockfile(dir) }) if (!NODE_8 && !NODE_10) { test('updates caniuse-lite for yarn v2', async () => { let dir = await chdir('update-yarn-v2', 'package.json', 'yarn.lock') execSync('yarn set version berry') match( runUpdate(), `Latest version: ${caniuse.version}\n` + 'Updating caniuse-lite version\n' + '$ yarn up -R caniuse-lite\n' + 'caniuse-lite has been successfully updated\n' ) checkYarnLockfile(dir, 2) execSync('yarn set version classic') }) } if (!NODE_8 && !NODE_10 && isInstalled('pnpm')) { test('updates caniuse-lite for pnpm', async () => { let dir = await chdir('update-pnpm', 'package.json', 'pnpm-lock.yaml') match( runUpdate(), `Latest version: ${caniuse.version}\n` + 'Updating caniuse-lite version\n' + '$ pnpm up caniuse-lite\n' + 'caniuse-lite has been successfully updated\n' ) let lock = (await readFile(join(dir, 'pnpm-lock.yaml'))).toString() match(lock, `/caniuse-lite/${caniuse.version}:`) }) } test.run() browserslist-4.19.3/test/versions.test.js000066400000000000000000000033301420403321400205050ustar00rootroot00000000000000let { test } = require('uvu') let { equal, throws } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let originData = { ...browserslist.data } test.before.each(() => { browserslist.data = { ie: { name: 'ie', released: ['8', '9', '10', '11'], versions: ['8', '9', '10', '11'], releaseDate: {} }, android: { name: 'android', released: ['4.2-4.3'], versions: ['4.2-4.3'], releaseDate: {} }, and_qq: { name: 'and_qq', released: ['1.2'], versions: ['1.2'], releaseDate: {} } } }) test.after.each(() => { browserslist.data = originData }) test('selects browser by more sign', () => { equal(browserslist('ie > 9'), ['ie 11', 'ie 10']) }) test('selects browser by more or equal sign', () => { equal(browserslist('ie >= 10'), ['ie 11', 'ie 10']) }) test('selects browser by less sign', () => { equal(browserslist('ie < 10'), ['ie 9', 'ie 8']) }) test('selects browser by less or equal sign', () => { equal(browserslist('ie <= 9'), ['ie 9', 'ie 8']) }) test('uses case insensitive aliases', () => { equal(browserslist('Explorer > 10'), ['ie 11']) }) test('raises on unknown browser', () => { throws(() => { browserslist('unknow > 10') }, 'Unknown browser unknow') }) test('works with joined versions from Can I Use', () => { equal(browserslist('android >= 4.2'), ['android 4.2-4.3']) equal(browserslist('android >= 4.3'), ['android 4.2-4.3']) }) test('allows omission of the space around the operator', () => { equal(browserslist('ie<=9'), ['ie 9', 'ie 8']) }) test('selects browser with one version', () => { equal(browserslist('and_qq > 0'), ['and_qq 1.2']) }) test.run() browserslist-4.19.3/test/years.test.js000066400000000000000000000040231420403321400177600ustar00rootroot00000000000000let { test } = require('uvu') let { equal } = require('uvu/assert') delete require.cache[require.resolve('..')] let browserslist = require('..') let RealDate = Date let originData = { ...browserslist.data } let originWarn = console.warn function mockDate(iso) { global.Date = function (self) { Object.getPrototypeOf(RealDate.prototype).constructor.call(self) return new RealDate(iso) } global.Date.now = function () { return new RealDate(iso).valueOf() } } test.before.each(() => { mockDate('2018-01-01T00:00:00z') browserslist.data = { ie: { name: 'ie', versions: [], released: ['9', '10', '11'], releaseDate: { 9: 1300060800, // 2011-03-14T00:00:00.000Z 10: 1346716800, // 2012-09-04T00:00:00.000Z 11: 1381968000 // 2013-10-17T00:00:00.000Z } }, edge: { name: 'edge', versions: [], released: ['12', '13', '14', '15', '16'], releaseDate: { 12: 1438128000, // 2015-07-29T00:00:00.000Z 13: 1447286400, // 2015-11-12T00:00:00.000Z 14: 1470096000, // 2016-08-02T00:00:00.000Z 15: 1491868800, // 2017-04-11T00:00:00.000Z 16: 1508198400 // 2017-10-17T00:00:00.000Z } } } console.warn = function (...args) { if (/(yarn|npm) upgrade/.test(args[0])) return originWarn.apply(this, args) } }) test.after.each(() => { global.Date = RealDate browserslist.data = originData }) test('selects versions released within last X years', () => { equal( browserslist('last 2 years'), [ 'edge 16', 'edge 15', 'edge 14' ] ) }) test('selects versions released within last year', () => { equal(browserslist('last 1 year'), ['edge 16', 'edge 15']) }) test('supports year fraction', () => { equal(browserslist('last 1.4 years'), ['edge 16', 'edge 15']) }) test('is case insensitive', () => { equal( browserslist('Last 5 years'), [ 'edge 16', 'edge 15', 'edge 14', 'edge 13', 'edge 12', 'ie 11' ] ) }) test.run() browserslist-4.19.3/update-db.js000066400000000000000000000212561420403321400165540ustar00rootroot00000000000000var childProcess = require('child_process') var escalade = require('escalade/sync') var pico = require('picocolors') var path = require('path') var fs = require('fs') var BrowserslistError = require('./error') function detectLockfile() { var packageDir = escalade('.', function (dir, names) { return names.indexOf('package.json') !== -1 ? dir : '' }) if (!packageDir) { throw new BrowserslistError( 'Cannot find package.json. ' + 'Is this the right directory to run `npx browserslist --update-db` in?' ) } var lockfileNpm = path.join(packageDir, 'package-lock.json') var lockfileShrinkwrap = path.join(packageDir, 'npm-shrinkwrap.json') var lockfileYarn = path.join(packageDir, 'yarn.lock') var lockfilePnpm = path.join(packageDir, 'pnpm-lock.yaml') if (fs.existsSync(lockfilePnpm)) { return { mode: 'pnpm', file: lockfilePnpm } } else if (fs.existsSync(lockfileNpm)) { return { mode: 'npm', file: lockfileNpm } } else if (fs.existsSync(lockfileYarn)) { var lock = { mode: 'yarn', file: lockfileYarn } lock.content = fs.readFileSync(lock.file).toString() lock.version = /# yarn lockfile v1/.test(lock.content) ? 1 : 2 return lock } else if (fs.existsSync(lockfileShrinkwrap)) { return { mode: 'npm', file: lockfileShrinkwrap } } throw new BrowserslistError( 'No lockfile found. Run "npm install", "yarn install" or "pnpm install"' ) } function getLatestInfo(lock) { if (lock.mode === 'yarn') { if (lock.version === 1) { return JSON.parse( childProcess.execSync('yarn info caniuse-lite --json').toString() ).data } else { return JSON.parse( childProcess.execSync('yarn npm info caniuse-lite --json').toString() ) } } return JSON.parse( childProcess.execSync('npm show caniuse-lite --json').toString() ) } function getBrowsersList() { return childProcess .execSync('npx browserslist') .toString() .trim() .split('\n') .map(function (line) { return line.trim().split(' ') }) .reduce(function (result, entry) { if (!result[entry[0]]) { result[entry[0]] = [] } result[entry[0]].push(entry[1]) return result }, {}) } function diffBrowsersLists(old, current) { var browsers = Object.keys(old).concat( Object.keys(current).filter(function (browser) { return old[browser] === undefined }) ) return browsers .map(function (browser) { var oldVersions = old[browser] || [] var currentVersions = current[browser] || [] var intersection = oldVersions.filter(function (version) { return currentVersions.indexOf(version) !== -1 }) var addedVersions = currentVersions.filter(function (version) { return intersection.indexOf(version) === -1 }) var removedVersions = oldVersions.filter(function (version) { return intersection.indexOf(version) === -1 }) return removedVersions .map(function (version) { return pico.red('- ' + browser + ' ' + version) }) .concat( addedVersions.map(function (version) { return pico.green('+ ' + browser + ' ' + version) }) ) }) .reduce(function (result, array) { return result.concat(array) }, []) .join('\n') } function updateNpmLockfile(lock, latest) { var metadata = { latest: latest, versions: [] } var content = deletePackage(JSON.parse(lock.content), metadata) metadata.content = JSON.stringify(content, null, ' ') return metadata } function deletePackage(node, metadata) { if (node.dependencies) { if (node.dependencies['caniuse-lite']) { var version = node.dependencies['caniuse-lite'].version metadata.versions[version] = true delete node.dependencies['caniuse-lite'] } for (var i in node.dependencies) { node.dependencies[i] = deletePackage(node.dependencies[i], metadata) } } return node } var yarnVersionRe = /version "(.*?)"/ function updateYarnLockfile(lock, latest) { var blocks = lock.content.split(/(\n{2,})/).map(function (block) { return block.split('\n') }) var versions = {} blocks.forEach(function (lines) { if (lines[0].indexOf('caniuse-lite@') !== -1) { var match = yarnVersionRe.exec(lines[1]) versions[match[1]] = true if (match[1] !== latest.version) { lines[1] = lines[1].replace( /version "[^"]+"/, 'version "' + latest.version + '"' ) lines[2] = lines[2].replace( /resolved "[^"]+"/, 'resolved "' + latest.dist.tarball + '"' ) if (lines.length === 4) { lines[3] = latest.dist.integrity ? lines[3].replace( /integrity .+/, 'integrity ' + latest.dist.integrity ) : '' } } } }) var content = blocks .map(function (lines) { return lines.join('\n') }) .join('') return { content: content, versions: versions } } function updateLockfile(lock, latest) { if (!lock.content) lock.content = fs.readFileSync(lock.file).toString() if (lock.mode === 'yarn') { return updateYarnLockfile(lock, latest) } else { return updateNpmLockfile(lock, latest) } } function updatePackageManually(print, lock, latest) { var lockfileData = updateLockfile(lock, latest) var caniuseVersions = Object.keys(lockfileData.versions).sort() if (caniuseVersions.length === 1 && caniuseVersions[0] === latest.version) { print( 'Installed version: ' + pico.bold(pico.green(latest.version)) + '\n' + pico.bold(pico.green('caniuse-lite is up to date')) + '\n' ) return } if (caniuseVersions.length === 0) { caniuseVersions[0] = 'none' } print( 'Installed version' + (caniuseVersions.length === 1 ? ': ' : 's: ') + pico.bold(pico.red(caniuseVersions.join(', '))) + '\n' + 'Removing old caniuse-lite from lock file\n' ) fs.writeFileSync(lock.file, lockfileData.content) var install = lock.mode === 'yarn' ? 'yarn add -W' : lock.mode + ' install' print( 'Installing new caniuse-lite version\n' + pico.yellow('$ ' + install + ' caniuse-lite') + '\n' ) try { childProcess.execSync(install + ' caniuse-lite') } catch (e) /* c8 ignore start */ { print( pico.red( '\n' + e.stack + '\n\n' + 'Problem with `' + install + ' caniuse-lite` call. ' + 'Run it manually.\n' ) ) process.exit(1) } /* c8 ignore end */ var del = lock.mode === 'yarn' ? 'yarn remove -W' : lock.mode + ' uninstall' print( 'Cleaning package.json dependencies from caniuse-lite\n' + pico.yellow('$ ' + del + ' caniuse-lite') + '\n' ) childProcess.execSync(del + ' caniuse-lite') } function updateWith(print, cmd) { print('Updating caniuse-lite version\n' + pico.yellow('$ ' + cmd) + '\n') try { childProcess.execSync(cmd) } catch (e) /* c8 ignore start */ { print(pico.red(e.stdout.toString())) print( pico.red( '\n' + e.stack + '\n\n' + 'Problem with `' + cmd + '` call. ' + 'Run it manually.\n' ) ) process.exit(1) } /* c8 ignore end */ } module.exports = function updateDB(print) { var lock = detectLockfile() var latest = getLatestInfo(lock) var browsersListRetrievalError var oldBrowsersList try { oldBrowsersList = getBrowsersList() } catch (e) { browsersListRetrievalError = e } print('Latest version: ' + pico.bold(pico.green(latest.version)) + '\n') if (lock.mode === 'yarn' && lock.version !== 1) { updateWith(print, 'yarn up -R caniuse-lite') } else if (lock.mode === 'pnpm') { updateWith(print, 'pnpm up caniuse-lite') } else { updatePackageManually(print, lock, latest) } print('caniuse-lite has been successfully updated\n') var currentBrowsersList if (!browsersListRetrievalError) { try { currentBrowsersList = getBrowsersList() } catch (e) /* c8 ignore start */ { browsersListRetrievalError = e } /* c8 ignore end */ } if (browsersListRetrievalError) { print( pico.red( '\n' + browsersListRetrievalError.stack + '\n\n' + 'Problem with browser list retrieval.\n' + 'Target browser changes won’t be shown.\n' ) ) } else { var targetBrowserChanges = diffBrowsersLists( oldBrowsersList, currentBrowsersList ) if (targetBrowserChanges) { print('\nTarget browser changes:\n') print(targetBrowserChanges + '\n') } else { print('\n' + pico.green('No target browser changes') + '\n') } } }