summaryrefslogtreecommitdiff
path: root/node_modules/postcss-loader
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-loader')
-rw-r--r--node_modules/postcss-loader/CHANGELOG.md563
-rw-r--r--node_modules/postcss-loader/LICENSE20
-rw-r--r--node_modules/postcss-loader/README.md1175
-rw-r--r--node_modules/postcss-loader/dist/cjs.js3
-rw-r--r--node_modules/postcss-loader/dist/config.d.ts16
-rw-r--r--node_modules/postcss-loader/dist/index.js168
-rw-r--r--node_modules/postcss-loader/dist/options.json58
-rw-r--r--node_modules/postcss-loader/dist/utils.js458
l---------node_modules/postcss-loader/node_modules/.bin/jiti1
l---------node_modules/postcss-loader/node_modules/.bin/semver1
-rw-r--r--node_modules/postcss-loader/node_modules/lru-cache/LICENSE15
-rw-r--r--node_modules/postcss-loader/node_modules/lru-cache/README.md166
-rw-r--r--node_modules/postcss-loader/node_modules/lru-cache/index.js334
-rw-r--r--node_modules/postcss-loader/node_modules/lru-cache/package.json34
-rw-r--r--node_modules/postcss-loader/node_modules/semver/LICENSE15
-rw-r--r--node_modules/postcss-loader/node_modules/semver/README.md637
-rwxr-xr-xnode_modules/postcss-loader/node_modules/semver/bin/semver.js197
-rw-r--r--node_modules/postcss-loader/node_modules/semver/classes/comparator.js141
-rw-r--r--node_modules/postcss-loader/node_modules/semver/classes/index.js5
-rw-r--r--node_modules/postcss-loader/node_modules/semver/classes/range.js539
-rw-r--r--node_modules/postcss-loader/node_modules/semver/classes/semver.js302
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/clean.js6
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/cmp.js52
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/coerce.js52
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/compare-build.js7
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/compare-loose.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/compare.js5
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/diff.js65
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/eq.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/gt.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/gte.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/inc.js19
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/lt.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/lte.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/major.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/minor.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/neq.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/parse.js16
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/patch.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/prerelease.js6
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/rcompare.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/rsort.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/satisfies.js10
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/sort.js3
-rw-r--r--node_modules/postcss-loader/node_modules/semver/functions/valid.js6
-rw-r--r--node_modules/postcss-loader/node_modules/semver/index.js89
-rw-r--r--node_modules/postcss-loader/node_modules/semver/internal/constants.js35
-rw-r--r--node_modules/postcss-loader/node_modules/semver/internal/debug.js9
-rw-r--r--node_modules/postcss-loader/node_modules/semver/internal/identifiers.js23
-rw-r--r--node_modules/postcss-loader/node_modules/semver/internal/parse-options.js15
-rw-r--r--node_modules/postcss-loader/node_modules/semver/internal/re.js212
-rw-r--r--node_modules/postcss-loader/node_modules/semver/package.json87
-rw-r--r--node_modules/postcss-loader/node_modules/semver/preload.js2
-rw-r--r--node_modules/postcss-loader/node_modules/semver/range.bnf16
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/gtr.js4
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/intersects.js7
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/ltr.js4
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/max-satisfying.js25
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/min-satisfying.js24
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/min-version.js61
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/outside.js80
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/simplify.js47
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/subset.js247
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/to-comparators.js8
-rw-r--r--node_modules/postcss-loader/node_modules/semver/ranges/valid.js11
-rw-r--r--node_modules/postcss-loader/node_modules/yallist/LICENSE15
-rw-r--r--node_modules/postcss-loader/node_modules/yallist/README.md204
-rw-r--r--node_modules/postcss-loader/node_modules/yallist/iterator.js8
-rw-r--r--node_modules/postcss-loader/node_modules/yallist/package.json29
-rw-r--r--node_modules/postcss-loader/node_modules/yallist/yallist.js426
-rw-r--r--node_modules/postcss-loader/package.json100
71 files changed, 6919 insertions, 0 deletions
diff --git a/node_modules/postcss-loader/CHANGELOG.md b/node_modules/postcss-loader/CHANGELOG.md
new file mode 100644
index 00000000..6bb7ed00
--- /dev/null
+++ b/node_modules/postcss-loader/CHANGELOG.md
@@ -0,0 +1,563 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+### [7.3.3](https://github.com/webpack-contrib/postcss-loader/compare/v7.3.2...v7.3.3) (2023-06-10)
+
+
+### Bug Fixes
+
+* **perf:** avoid using `klona` for postcss options ([#658](https://github.com/webpack-contrib/postcss-loader/issues/658)) ([e754c3f](https://github.com/webpack-contrib/postcss-loader/commit/e754c3f8451a09ea633674af90fb3b6b1c073460))
+* bug with loading configurations after updating `cosmiconfig` to version 8.2 ([684d265](https://github.com/webpack-contrib/postcss-loader/commit/684d2654393d225bbbcc443ffc9494ab54fe8112))
+
+### [7.3.2](https://github.com/webpack-contrib/postcss-loader/compare/v7.3.1...v7.3.2) (2023-05-28)
+
+
+### Bug Fixes
+
+* use `cause` to keep original errors and warnings ([#655](https://github.com/webpack-contrib/postcss-loader/issues/655)) ([e8873f4](https://github.com/webpack-contrib/postcss-loader/commit/e8873f46b4ac3cf94d854d8c20f0d0a444309eb6))
+
+### [7.3.1](https://github.com/webpack-contrib/postcss-loader/compare/v7.3.0...v7.3.1) (2023-05-26)
+
+
+### Bug Fixes
+
+* warning and error serialization ([65748ec](https://github.com/webpack-contrib/postcss-loader/commit/65748ece396d0b38713783495d8a64f128d3992b))
+
+## [7.3.0](https://github.com/webpack-contrib/postcss-loader/compare/v7.2.4...v7.3.0) (2023-04-28)
+
+
+### Features
+
+* use `jiti` for typescript configurations ([#649](https://github.com/webpack-contrib/postcss-loader/issues/649)) ([8b876fa](https://github.com/webpack-contrib/postcss-loader/commit/8b876fa49c71c434b9c5598b179a4f88cf8123e4))
+
+### [7.2.4](https://github.com/webpack-contrib/postcss-loader/compare/v7.2.3...v7.2.4) (2023-04-04)
+
+
+### Bug Fixes
+
+* memory leak ([#642](https://github.com/webpack-contrib/postcss-loader/issues/642)) ([7ab3b59](https://github.com/webpack-contrib/postcss-loader/commit/7ab3b591dd108732aeab1178d452763936105eae))
+
+### [7.2.3](https://github.com/webpack-contrib/postcss-loader/compare/v7.2.2...v7.2.3) (2023-04-03)
+
+
+### Bug Fixes
+
+* `ts-node` loading ([#640](https://github.com/webpack-contrib/postcss-loader/issues/640)) ([38b1992](https://github.com/webpack-contrib/postcss-loader/commit/38b199285e02ec767ebebd366180b663731c38cb))
+
+### [7.2.2](https://github.com/webpack-contrib/postcss-loader/compare/v7.2.1...v7.2.2) (2023-04-03)
+
+
+### Bug Fixes
+
+* cannot find module 'ts-node' ([#639](https://github.com/webpack-contrib/postcss-loader/issues/639)) ([ab4d16a](https://github.com/webpack-contrib/postcss-loader/commit/ab4d16a55b3539cc2b160727b426c6deef75ace9))
+
+### [7.2.1](https://github.com/webpack-contrib/postcss-loader/compare/v7.2.0...v7.2.1) (2023-04-03)
+
+
+### Bug Fixes
+
+* cosmiconfig typescript loader ([#635](https://github.com/webpack-contrib/postcss-loader/issues/635)) ([129f5be](https://github.com/webpack-contrib/postcss-loader/commit/129f5be42ead5c5a2b0f654631bcb94fa3d76a95))
+
+## [7.2.0](https://github.com/webpack-contrib/postcss-loader/compare/v7.1.0...v7.2.0) (2023-04-03)
+
+
+### Features
+
+* add support for TypeScript based configs ([#632](https://github.com/webpack-contrib/postcss-loader/issues/632)) ([c6b5def](https://github.com/webpack-contrib/postcss-loader/commit/c6b5def4459df0492d4d9175748823e89fa8f3ed))
+
+## [7.1.0](https://github.com/webpack-contrib/postcss-loader/compare/v7.0.2...v7.1.0) (2023-03-16)
+
+
+### Features
+
+* **deps:** update `cosmiconfig` ([#628](https://github.com/webpack-contrib/postcss-loader/issues/628)) ([8114be4](https://github.com/webpack-contrib/postcss-loader/commit/8114be41a46843cbf614bc422e3cafcb8e853860))
+
+### [7.0.2](https://github.com/webpack-contrib/postcss-loader/compare/v7.0.1...v7.0.2) (2022-11-29)
+
+
+### Bug Fixes
+
+* support ESM version of `postcss.config.js` and `postcss.config.mjs` ([#614](https://github.com/webpack-contrib/postcss-loader/issues/614)) ([955085f](https://github.com/webpack-contrib/postcss-loader/commit/955085f04f5d12bb89d660d88159169b80d5eb99))
+
+### [7.0.1](https://github.com/webpack-contrib/postcss-loader/compare/v7.0.0...v7.0.1) (2022-07-11)
+
+
+### Bug Fixes
+
+* unexpected failing on CSS syntax error ([#593](https://github.com/webpack-contrib/postcss-loader/issues/593)) ([888d72e](https://github.com/webpack-contrib/postcss-loader/commit/888d72e340b6d176e95c15d5f96ca412af86a66a))
+
+## [7.0.0](https://github.com/webpack-contrib/postcss-loader/compare/v6.2.1...v7.0.0) (2022-05-18)
+
+
+### ⚠ BREAKING CHANGES
+
+* minimum supported `Node.js` version is `14.15.0`
+
+### [6.2.1](https://github.com/webpack-contrib/postcss-loader/compare/v6.2.0...v6.2.1) (2021-11-26)
+
+
+### Bug Fixes
+
+* watching configuration ([#553](https://github.com/webpack-contrib/postcss-loader/issues/553)) ([7f165b4](https://github.com/webpack-contrib/postcss-loader/commit/7f165b4991b59085651b517d960556a77b72a4d6))
+
+## [6.2.0](https://github.com/webpack-contrib/postcss-loader/compare/v6.1.1...v6.2.0) (2021-10-13)
+
+
+### Features
+
+* add `link` field in schema ([#540](https://github.com/webpack-contrib/postcss-loader/issues/540)) ([1ae8212](https://github.com/webpack-contrib/postcss-loader/commit/1ae82129bce9039ac25f7254aa9ba8827ab79b3e))
+
+### [6.1.1](https://github.com/webpack-contrib/postcss-loader/compare/v6.1.0...v6.1.1) (2021-07-01)
+
+
+### Bug Fixes
+
+* do not swallow exception from postcss ([2eec42b](https://github.com/webpack-contrib/postcss-loader/commit/2eec42b1a61bbafa039627d3071ba2a1be03de9f))
+
+## [6.1.0](https://github.com/webpack-contrib/postcss-loader/compare/v6.0.0...v6.1.0) (2021-06-10)
+
+
+### Features
+
+* allow `String` value for the "implementation" option ([0d342b1](https://github.com/webpack-contrib/postcss-loader/commit/0d342b16dabf58c499da4e13310fdfa5c05badd9))
+
+## [6.0.0](https://github.com/webpack-contrib/postcss-loader/compare/v5.3.0...v6.0.0) (2021-06-10)
+
+
+### ⚠ BREAKING CHANGES
+
+* minimum supported `Node.js` version is `12.13.0` (#526)
+
+### Bug Fixes
+
+* check postcss as project dependency ([570db67](https://github.com/webpack-contrib/postcss-loader/commit/570db6726e4f86c966bc35c13637e0aad00f7a1a))
+
+
+## [5.3.0](https://github.com/webpack-contrib/postcss-loader/compare/v5.2.0...v5.3.0) (2021-05-14)
+
+
+### Features
+
+* add support for `dir-dependency` message type ([#524](https://github.com/webpack-contrib/postcss-loader/issues/524)) ([91dea60](https://github.com/webpack-contrib/postcss-loader/commit/91dea607623d3f9a2c3f7c989243934ba5274296))
+
+## [5.2.0](https://github.com/webpack-contrib/postcss-loader/compare/v5.1.0...v5.2.0) (2021-03-11)
+
+
+### Features
+
+* support `ecma` modules for the 'parser', 'stringifier' and 'syntax' options ([#519](https://github.com/webpack-contrib/postcss-loader/issues/519)) ([cc69754](https://github.com/webpack-contrib/postcss-loader/commit/cc69754383f6f9881ac5f02ec489eb89db2cfb0d))
+
+## [5.1.0](https://github.com/webpack-contrib/postcss-loader/compare/v5.0.0...v5.1.0) (2021-03-05)
+
+
+### Features
+
+* added support for registering `context`, `build` and `missing` dependencies ([#518](https://github.com/webpack-contrib/postcss-loader/issues/518)) ([9ce4972](https://github.com/webpack-contrib/postcss-loader/commit/9ce4972c6740c8dd82463fff0934987695ccf7d2)), please read [docs](https://github.com/webpack-contrib/postcss-loader#add-dependencies-contextdependencies-builddependencies-missingdependencies)
+
+## [5.0.0](https://github.com/webpack-contrib/postcss-loader/compare/v4.2.0...v5.0.0) (2021-02-02)
+
+
+### ⚠ BREAKING CHANGES
+
+* minimum supported `webpack` version is `5`
+
+## [4.2.0](https://github.com/webpack-contrib/postcss-loader/compare/v4.1.0...v4.2.0) (2021-01-21)
+
+
+### Features
+
+* added the `implementation` option ([#511](https://github.com/webpack-contrib/postcss-loader/issues/511)) ([deac978](https://github.com/webpack-contrib/postcss-loader/commit/deac9787eed614b1c445f091a2b70736a6212812))
+
+## [4.1.0](https://github.com/webpack-contrib/postcss-loader/compare/v4.0.4...v4.1.0) (2020-11-19)
+
+
+### Features
+
+* partial compatibility with `postcss-cli`, added `api.env` (alias for `api.mode`) and `api.options` (contains options from the `postcssOptions` options), please look at the [example](https://github.com/webpack-contrib/postcss-loader#examples-of-config-files) for more details ([#498](https://github.com/webpack-contrib/postcss-loader/issues/498)) ([84a9c46](https://github.com/webpack-contrib/postcss-loader/commit/84a9c46467086df0185519ceb93bf66893af4cf2))
+
+### [4.0.4](https://github.com/webpack-contrib/postcss-loader/compare/v4.0.3...v4.0.4) (2020-10-09)
+
+### Chore
+
+* update `schema-utils`
+
+## [4.0.3](https://github.com/webpack-contrib/postcss-loader/compare/v4.0.2...v4.0.3) (2020-10-02)
+
+
+### Bug Fixes
+
+* PostCSS 8 plugin loading ([e1b82fe](https://github.com/webpack-contrib/postcss-loader/commit/e1b82feb9cc27f55953b9237708800cb8c07724e))
+* error and warning messages ([#485](https://github.com/webpack-contrib/postcss-loader/issues/485)) ([4b44e01](https://github.com/webpack-contrib/postcss-loader/commit/4b44e01a323aa9d2c0965e92c1796158cb36ce5a))
+
+### [4.0.2](https://github.com/webpack-contrib/postcss-loader/compare/v4.0.1...v4.0.2) (2020-09-15)
+
+
+### Bug Fixes
+
+* compatibility with `postcss@8` ([#479](https://github.com/webpack-contrib/postcss-loader/issues/479)) ([218b0f8](https://github.com/webpack-contrib/postcss-loader/commit/218b0f8013acfafdabea9f561d4c3d074bd2eff3))
+
+### [4.0.1](https://github.com/webpack-contrib/postcss-loader/compare/v4.0.0...v4.0.1) (2020-09-08)
+
+
+### Bug Fixes
+
+* source map generation with the `map` option for `postcss` ([#476](https://github.com/webpack-contrib/postcss-loader/issues/476)) ([6babeb1](https://github.com/webpack-contrib/postcss-loader/commit/6babeb1d64ca1e7d3d3651cb07881e1e291fa994))
+
+## [4.0.0](https://github.com/webpack-contrib/postcss-loader/compare/v3.0.0...v4.0.0) (2020-09-07)
+
+
+### ⚠ BREAKING CHANGES
+
+* minimum supported `Node.js` version is `10.13`
+* minimum supported `webpack` version is `4`
+* `postcss` was moved to `peerDependencies`, you need to install `postcss`
+* `PostCSS` (`plugins`/`syntax`/`parser`/`stringifier`) options was moved to the `postcssOptions` option, please look at [docs](https://github.com/webpack-contrib/postcss-loader#postcssoptions)
+* `sourceMap` default value depends on the `compiler.devtool` option
+* the `inline` value was removed for the `sourceMap` option, please use `{ map: { inline: true, annotation: false } }` to achieve this
+* source maps contain absolute paths in `sources`
+* loader output only CSS, so you need to use `css-loader`/`file-loader`/`raw-loader` to inject code inside bundle
+* `exec` option was renamed to the `execute` option
+* the `config` option doesn't support `Object` type anymore, `config.path` and `config.ctx` options were removed
+* argument in the config for `Function` notation (previously `config.ctx`) was changed, now it contains `{ file, mode, webpackLoaderContext }`
+* loader context in the config was renamed from `webpack` to `webpackLoaderContext`
+
+### Features
+
+* message API for emit assets ([#443](https://github.com/webpack-contrib/postcss-loader/issues/443)) ([e966ab9](https://github.com/webpack-contrib/postcss-loader/commit/e966ab965132ca812cb50e5eaf7df5fc2ad9c137))
+* reuse AST from other loaders ([#468](https://github.com/webpack-contrib/postcss-loader/issues/468)) ([9b75888](https://github.com/webpack-contrib/postcss-loader/commit/9b75888dff4957f2ef1e94eca871e329354a9f6d))
+* allows to use config and loader options together, options from the loader takes precedence over the config, the `plugins` option from the config and options are merged ([0eb5aaf](https://github.com/webpack-contrib/postcss-loader/commit/0eb5aaf3d49f6d5e570a3c3fdb6b201487e503c7))
+* `postcssOptions` options can be `Function`
+
+### Bug Fixes
+
+* compatibility with webpack@5 ([#437](https://github.com/webpack-contrib/postcss-loader/issues/437)) ([ed50491](https://github.com/webpack-contrib/postcss-loader/commit/ed504910b70b4d8b4d77084c19ad92330676433e))
+* `default` export for plugins ([#465](https://github.com/webpack-contrib/postcss-loader/issues/465)) ([3d32c35](https://github.com/webpack-contrib/postcss-loader/commit/3d32c35c5c911d6bd25dc0c4b5b3cd11408632d7))
+* avoid mutations of loader options and config ([#470](https://github.com/webpack-contrib/postcss-loader/issues/470)) ([cad6f07](https://github.com/webpack-contrib/postcss-loader/commit/cad6f07c7f4923e8ef69ecb402b10bbd08d09530))
+* respect the `map` option from loader options and config ([#458](https://github.com/webpack-contrib/postcss-loader/issues/458)) ([98441ff](https://github.com/webpack-contrib/postcss-loader/commit/98441ff87e51b58e9322d1bebb5eefc5ba417e24))
+
+### Notes
+
+* you don't need `ident` option for loader
+* `Object` syntax for the `plugin` option is soft deprecated, please migrate on `Array` syntax (`plugins: ['postcss-preset-env', ['cssnano', options]]`)
+
+<a name="3.0.0"></a>
+# [3.0.0](https://github.com/postcss/postcss-loader/compare/v2.1.6...v3.0.0) (2018-08-08)
+
+
+### Bug Fixes
+
+* **index:** add ast version (`meta.ast`) ([f34954f](https://github.com/postcss/postcss-loader/commit/f34954f))
+* **index:** emit `warnings` as an instance of `{Error}` ([8ac6fb5](https://github.com/postcss/postcss-loader/commit/8ac6fb5))
+* **options:** improved `ValidationError` messages ([549ea08](https://github.com/postcss/postcss-loader/commit/549ea08))
+
+
+### Chores
+
+* **package:** update `postcss` v6.0.0...7.0.0 (`dependencies`) ([#375](https://github.com/postcss/postcss-loader/issues/375)) ([daa0da8](https://github.com/postcss/postcss-loader/commit/daa0da8))
+
+
+### BREAKING CHANGES
+
+* **package:** requires `node >= v6.0.0`
+
+
+
+<a name="2.1.6"></a>
+## [2.1.6](https://github.com/postcss/postcss-loader/compare/v2.1.5...v2.1.6) (2018-07-10)
+
+
+### Bug Fixes
+
+* **package:** config memory leak, updates `postcss-load-config` v1.2.0...2.0.0 (`dependencies`) ([0547b12](https://github.com/postcss/postcss-loader/commit/0547b12))
+
+
+
+<a name="2.1.5"></a>
+## [2.1.5](https://github.com/postcss/postcss-loader/compare/v2.1.4...v2.1.5) (2018-05-04)
+
+
+### Bug Fixes
+
+* **index:** remove `sourceMap` warning ([#361](https://github.com/postcss/postcss-loader/issues/361)) ([4416791](https://github.com/postcss/postcss-loader/commit/4416791))
+
+
+
+<a name="2.1.4"></a>
+## [2.1.4](https://github.com/postcss/postcss-loader/compare/v2.1.3...v2.1.4) (2018-04-16)
+
+
+### Bug Fixes
+
+* restore loader object in postcss config context ([#355](https://github.com/postcss/postcss-loader/issues/355)) ([2ff1735](https://github.com/postcss/postcss-loader/commit/2ff1735))
+
+
+
+<a name="2.1.3"></a>
+## [2.1.3](https://github.com/postcss/postcss-loader/compare/v2.1.2...v2.1.3) (2018-03-20)
+
+
+### Bug Fixes
+
+* **options:** revert additionalProperties changes to keep SemVer ([bd7fc38](https://github.com/postcss/postcss-loader/commit/bd7fc38))
+
+
+
+<a name="2.1.2"></a>
+## [2.1.2](https://github.com/postcss/postcss-loader/compare/v2.1.1...v2.1.2) (2018-03-17)
+
+
+### Bug Fixes
+
+* **options:** disallow additional properties and add `ident` to validation ([#346](https://github.com/postcss/postcss-loader/issues/346)) ([82ef553](https://github.com/postcss/postcss-loader/commit/82ef553))
+
+
+
+<a name="2.1.1"></a>
+## [2.1.1](https://github.com/postcss/postcss-loader/compare/v2.1.0...v2.1.1) (2018-02-26)
+
+
+### Bug Fixes
+
+* **index:** don't set `to` value (`options`) ([#339](https://github.com/postcss/postcss-loader/issues/339)) ([cdbb8b6](https://github.com/postcss/postcss-loader/commit/cdbb8b6))
+
+
+
+<a name="2.1.0"></a>
+# [2.1.0](https://github.com/postcss/postcss-loader/compare/v2.0.10...v2.1.0) (2018-02-02)
+
+
+### Bug Fixes
+
+* **index:** continue watching after dependency `{Error}` ([#332](https://github.com/postcss/postcss-loader/issues/332)) ([a8921cc](https://github.com/postcss/postcss-loader/commit/a8921cc))
+
+
+### Features
+
+* **index:** pass AST (`result.root`) && Messages (`result.messages`) as metadata to other loaders ([#322](https://github.com/postcss/postcss-loader/issues/322)) ([56232e7](https://github.com/postcss/postcss-loader/commit/56232e7))
+
+
+
+<a name="2.0.10"></a>
+## [2.0.10](https://github.com/postcss/postcss-loader/compare/v2.0.9...v2.0.10) (2018-01-03)
+
+
+### Bug Fixes
+
+* **index:** copy loader `options` before modifying ([#326](https://github.com/postcss/postcss-loader/issues/326)) ([61ff03c](https://github.com/postcss/postcss-loader/commit/61ff03c))
+
+
+
+<a name="2.0.9"></a>
+## [2.0.9](https://github.com/postcss/postcss-loader/compare/v2.0.8...v2.0.9) (2017-11-24)
+
+
+### Bug Fixes
+
+* **index:** filter `ident` (`options.ident`) ([#315](https://github.com/postcss/postcss-loader/issues/315)) ([3e1c7fa](https://github.com/postcss/postcss-loader/commit/3e1c7fa))
+
+
+
+<a name="2.0.8"></a>
+## [2.0.8](https://github.com/postcss/postcss-loader/compare/v2.0.6...v2.0.8) (2017-10-14)
+
+
+### Bug Fixes
+
+* **lib/options:** handle `{Object}` return (`options.plugins`) ([#301](https://github.com/postcss/postcss-loader/issues/301)) ([df010a7](https://github.com/postcss/postcss-loader/commit/df010a7))
+* **schema:** allow to pass an `{Object}` (`options.syntax/options.stringifier`) ([#300](https://github.com/postcss/postcss-loader/issues/300)) ([58e9996](https://github.com/postcss/postcss-loader/commit/58e9996))
+
+
+
+<a name="2.0.7"></a>
+## [2.0.7](https://github.com/postcss/postcss-loader/compare/v2.0.6...v2.0.7) (2017-10-10)
+
+
+### Bug Fixes
+
+* sanitizing `from` and `to` options (`postcss.config.js`) ([#260](https://github.com/postcss/postcss-loader/issues/260)) ([753dea7](https://github.com/postcss/postcss-loader/commit/753dea7))
+* **index:** runaway promise ([#269](https://github.com/postcss/postcss-loader/issues/269)) ([8df20ce](https://github.com/postcss/postcss-loader/commit/8df20ce))
+
+
+
+<a name="2.0.6"></a>
+## [2.0.6](https://github.com/postcss/postcss-loader/compare/v2.0.5...v2.0.6) (2017-06-14)
+
+
+### Bug Fixes
+
+* allow to pass an `{Object}` (`options.parser`) ([#257](https://github.com/postcss/postcss-loader/issues/257)) ([4974607](https://github.com/postcss/postcss-loader/commit/4974607))
+* misspelling in warnings ([#237](https://github.com/postcss/postcss-loader/issues/237)) ([adcbb2e](https://github.com/postcss/postcss-loader/commit/adcbb2e))
+* **index:** simplify config loading behaviour ([#259](https://github.com/postcss/postcss-loader/issues/259)) ([b313478](https://github.com/postcss/postcss-loader/commit/b313478))
+
+
+
+<a name="2.0.5"></a>
+## [2.0.5](https://github.com/postcss/postcss-loader/compare/v2.0.4...v2.0.5) (2017-05-10)
+
+
+### Bug Fixes
+
+* regression with `options.plugins` `{Function}` (`webpack.config.js`) (#229) ([dca52a9](https://github.com/postcss/postcss-loader/commit/dca52a9))
+
+
+
+<a name="2.0.4"></a>
+## [2.0.4](https://github.com/postcss/postcss-loader/compare/v2.0.3...v2.0.4) (2017-05-10)
+
+
+### Bug Fixes
+
+* **index:** `postcss.config.js` not resolved correctly (`options.config`) ([faaeee4](https://github.com/postcss/postcss-loader/commit/faaeee4))
+* **index:** update validation schema, better warning message ([4f20c99](https://github.com/postcss/postcss-loader/commit/4f20c99))
+
+
+
+<a name="2.0.3"></a>
+## [2.0.3](https://github.com/postcss/postcss-loader/compare/v2.0.2...v2.0.3) (2017-05-09)
+
+
+### Bug Fixes
+
+* **index:** don't fail on 'sourceMap: false' && emit a warning instead, when previous map found (`options.sourceMap`) ([159b66a](https://github.com/postcss/postcss-loader/commit/159b66a))
+
+
+
+<a name="2.0.2"></a>
+## [2.0.2](https://github.com/postcss/postcss-loader/compare/v2.0.1...v2.0.2) (2017-05-09)
+
+
+### Bug Fixes
+
+* **index:** 'No PostCSS Config found' (`options.config`) (#215) ([e764761](https://github.com/postcss/postcss-loader/commit/e764761))
+
+
+
+<a name="2.0.1"></a>
+## [2.0.1](https://github.com/postcss/postcss-loader/compare/v2.0.0...v2.0.1) (2017-05-08)
+
+
+### Bug Fixes
+
+* **index:** 'Cannot create property `prev` on boolean `false`' (`options.sourceMap`) ([c4f0064](https://github.com/postcss/postcss-loader/commit/c4f0064))
+
+
+
+<a name="2.0.0"></a>
+# [2.0.0](https://github.com/postcss/postcss-loader/compare/1.2.2...v2.0.0) (2017-05-08)
+
+
+### Features
+
+* **index:** add ctx, ctx.file, ctx.options ([0dceb2c](https://github.com/postcss/postcss-loader/commit/0dceb2c))
+* **index:** add options validation ([2b76df8](https://github.com/postcss/postcss-loader/commit/2b76df8))
+
+
+
+## 1.3.3
+* Remove `postcss-loader-before-processing` warning (by Michael Ciniawsky).
+
+## 1.3.2
+* Fix deprecated warning (by Xiaoyu Zhai).
+
+## 1.3.1
+* Fix conflict with CLI `--config` argument (by EGOIST).
+
+## 1.3
+* Allow object in syntax options, not only path for require (by Jeff Escalante).
+
+## 1.2.2
+* Watch `postcss.config.js` for changes (by Michael Ciniawsky).
+
+## 1.2.1
+* Fix relative `config` parameter resolving (by Simen Bekkhus).
+
+## 1.2
+* Add `config` parameter (by sainthkh).
+
+## 1.1.1
+* Fix `this` in options function (by Jeff Escalante).
+
+## 1.1
+* PostCSS common config could be placed to subdirs.
+* Add webpack instance to PostCSS common config context.
+
+## 1.0
+* Add common PostCSS config support (by Mateusz Derks).
+* Add Webpack 2 support with `plugins` query option (by Izaak Schroeder).
+* Add `dependency` message support.
+* Rewrite docs (by Michael Ciniawsky).
+
+## 0.13
+* Add `exec` parameter (by Neal Granger).
+
+## 0.12
+* Add CSS syntax highlight to syntax error code frame.
+
+## 0.11.1
+* Fix Promise API (by Daniel Haus).
+
+## 0.11
+* Add `postcss-loader-before-processing` webpack event (by Jan Nicklas).
+
+## 0.10.1
+* Better syntax error message (by Andrey Popp).
+
+## 0.10.0
+* Add `sourceMap` parameter to force inline maps (by 雪狼).
+
+## 0.9.1
+* Fix plugin in simple array config.
+
+## 0.9
+* Allow to pass syntax, parser or stringifier as function (by Jeff Escalante).
+
+## 0.8.2
+* Fix source map support (by Andrew Bradley).
+
+## 0.8.1
+* Fix resource path.
+
+## 0.8
+* Add postcss-js support (by Simon Degraeve).
+
+## 0.7
+* Added argument with webpack instance to plugins callback (by Maxime Thirouin).
+
+## 0.6
+* Use PostCSS 5.0.
+* Remove `safe` parameter. Use Safe Parser.
+* Add `syntax`, `parser` and `stringifier` parameters.
+
+## 0.5.1
+* Fix string source map support (by Jan Nicklas).
+
+## 0.5.0
+* Set plugins by function for hot reload support (by Stefano Brilli).
+
+## 0.4.4
+* Fix error on empty PostCSS config.
+
+## 0.4.3
+* Better check for `CssSyntaxError`.
+
+## 0.4.2
+* Fixed invalid sourcemap exception (by Richard Willis).
+
+## 0.4.1
+* Use only Promise API to catch PostCSS errors.
+
+## 0.4
+* Add PostCSS asynchronous API support.
+* Fix source map support (by Richard Willis).
+* Add warnings API support.
+* Better output for CSS syntax errors.
+
+## 0.3
+* Use PostCSS 4.0.
+
+## 0.2
+* Use PostCSS 3.0.
+
+## 0.1
+* Initial release.
diff --git a/node_modules/postcss-loader/LICENSE b/node_modules/postcss-loader/LICENSE
new file mode 100644
index 00000000..3d5fa732
--- /dev/null
+++ b/node_modules/postcss-loader/LICENSE
@@ -0,0 +1,20 @@
+Copyright JS Foundation 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. \ No newline at end of file
diff --git a/node_modules/postcss-loader/README.md b/node_modules/postcss-loader/README.md
new file mode 100644
index 00000000..4af79a10
--- /dev/null
+++ b/node_modules/postcss-loader/README.md
@@ -0,0 +1,1175 @@
+<div align="center">
+ <img
+ width="180"
+ height="180"
+ hspace="10"
+ alt="PostCSS Logo"
+ src="https://api.postcss.org/logo.svg">
+ <a href="https://github.com/webpack/webpack">
+ <img
+ width="200"
+ height="200"
+ hspace="10"
+ src="https://cdn.rawgit.com/webpack/media/e7485eb2/logo/icon.svg">
+ </a>
+ <div align="center">
+ <a href="https://evilmartians.com/?utm_source=postcss">
+ <img
+ src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg"
+ alt="Sponsored by Evil Martians"
+ width="236"
+ height="54"
+ vspace="10">
+ </a>
+ </div>
+</div>
+
+[![npm][npm]][npm-url]
+[![node][node]][node-url]
+[![tests][tests]][tests-url]
+[![coverage][cover]][cover-url]
+[![size][size]][size-url]
+
+Webpack discussion: [![discussion][discussion]][discussion-url]
+
+PostCSS chat: [![chat-postcss][chat-postcss]][chat-postcss-url]
+
+# postcss-loader
+
+Loader to process CSS with [`PostCSS`](https://github.com/postcss/postcss).
+
+## Getting Started
+
+You need webpack v5 to use the latest version. For Webpack v4, you have to install postcss-loader v4.
+
+To begin, you'll need to install `postcss-loader` and `postcss`:
+
+```console
+npm install --save-dev postcss-loader postcss
+```
+
+or
+
+```console
+yarn add -D postcss-loader postcss
+```
+
+or
+
+```console
+pnpm add -D postcss-loader postcss
+```
+
+Then add the plugin to your `webpack` config. For example:
+
+> In the following configuration the plugin [`postcss-preset-env`](https://github.com/csstools/postcss-preset-env) is used, which is not installed by default.
+
+**file.js**
+
+```js
+import css from "file.css";
+```
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ "style-loader",
+ "css-loader",
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ plugins: [
+ [
+ "postcss-preset-env",
+ {
+ // Options
+ },
+ ],
+ ],
+ },
+ },
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+Alternative use with [config files](#config):
+
+**postcss.config.js**
+
+```js
+module.exports = {
+ plugins: [
+ [
+ "postcss-preset-env",
+ {
+ // Options
+ },
+ ],
+ ],
+};
+```
+
+The loader **automatically** searches for configuration files.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: ["style-loader", "css-loader", "postcss-loader"],
+ },
+ ],
+ },
+};
+```
+
+And run `webpack` via your preferred method.
+
+## Options
+
+- [`execute`](#execute)
+- [`postcssOptions`](#postcssOptions)
+- [`sourceMap`](#sourcemap)
+- [`implementation`](#implementation)
+
+### `execute`
+
+Type:
+
+```ts
+type execute = boolean;
+```
+
+Default: `undefined`
+
+Enable PostCSS Parser support in `CSS-in-JS`.
+If you use JS styles the [`postcss-js`](https://github.com/postcss/postcss-js) parser, add the `execute` option.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.style.js$/,
+ use: [
+ "style-loader",
+ {
+ loader: "css-loader",
+ },
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ parser: "postcss-js",
+ },
+ execute: true,
+ },
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+### `postcssOptions`
+
+See the file [`./src/config.d.ts`](./src/config.d.ts).
+
+Type:
+
+```ts
+import type { Config as PostCSSConfig } from "postcss-load-config";
+import type { LoaderContext } from "webpack";
+
+type PostCSSLoaderContext = LoaderContext<PostCSSConfig>;
+
+interface PostCSSLoaderAPI {
+ mode: PostCSSLoaderContext["mode"];
+ file: PostCSSLoaderContext["resourcePath"];
+ webpackLoaderContext: PostCSSLoaderContext;
+ env: PostCSSLoaderContext["mode"];
+ options: PostCSSConfig;
+}
+
+export type PostCSSLoaderOptions =
+ | PostCSSConfig
+ | ((api: PostCSSLoaderAPI) => PostCSSConfig);
+```
+
+Default: `undefined`
+
+Allows to set [`PostCSS options`](https://postcss.org/api/#processoptions) and plugins.
+
+All `PostCSS` options are supported.
+There is the special `config` option for config files. How it works and how it can be configured is described below.
+
+We recommend do not specify `from`, `to` and `map` options, because this can lead to wrong path in source maps.
+If you need source maps please use the [`sourcemap`](#sourcemap) option.
+
+For large projects, to optimize performance of the loader, it is better to provide `postcssOptions` in loader
+config and specify `config: false`. This approach removes the need to lookup and load external config files multiple
+times during compilation.
+
+#### `object`
+
+Setup `plugins`:
+
+**webpack.config.js** (**recommended**)
+
+```js
+const myOtherPostcssPlugin = require("postcss-my-plugin");
+
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.sss$/i,
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ plugins: [
+ "postcss-import",
+ ["postcss-short", { prefix: "x" }],
+ require.resolve("my-postcss-plugin"),
+ myOtherPostcssPlugin({ myOption: true }),
+ // Deprecated and will be removed in the next major release
+ { "postcss-nested": { preserveEmpty: true } },
+ ],
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+**webpack.config.js** (**deprecated**, will be removed in the next major release)
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.sss$/i,
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ plugins: {
+ "postcss-import": {},
+ "postcss-short": { prefix: "x" },
+ },
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+Setup `syntax`:
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.sss$/i,
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ // Can be `string`
+ syntax: "sugarss",
+ // Can be `object`
+ syntax: require("sugarss"),
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+Setup `parser`:
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.sss$/i,
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ // Can be `string`
+ parser: "sugarss",
+ // Can be `object`
+ parser: require("sugarss"),
+ // Can be `function`
+ parser: require("sugarss").parse,
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+Setup `stringifier`:
+
+**webpack.config.js**
+
+```js
+const Midas = require("midas");
+const midas = new Midas();
+
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.sss$/i,
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ // Can be `string`
+ stringifier: "sugarss",
+ // Can be `object`
+ stringifier: require("sugarss"),
+ // Can be `function`
+ stringifier: midas.stringifier,
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+#### `function`
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.(css|sss)$/i,
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: (loaderContext) => {
+ if (/\.sss$/.test(loaderContext.resourcePath)) {
+ return {
+ parser: "sugarss",
+ plugins: [
+ ["postcss-short", { prefix: "x" }],
+ "postcss-preset-env",
+ ],
+ };
+ }
+
+ return {
+ plugins: [
+ ["postcss-short", { prefix: "x" }],
+ "postcss-preset-env",
+ ],
+ };
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+#### `config`
+
+Type:
+
+```ts
+type config = boolean | string;
+```
+
+Default: `true`
+
+Allows to set options using config files.
+Options specified in the config file are combined with options passed to the loader, the loader options overwrite options from config.
+
+##### Config Files
+
+The loader will search up the directory tree for configuration in the following places:
+
+- a `postcss` property in `package.json`
+- a `.postcssrc` file in JSON or YAML format
+- a `.postcssrc.json`, `.postcssrc.yaml`, `.postcssrc.yml`, `.postcssrc.js`, or `.postcssrc.cjs` file
+- a `postcss.config.js` or `postcss.config.cjs` CommonJS module exporting an object (**recommended**)
+
+##### Examples of Config Files
+
+Using `object` notation:
+
+**postcss.config.js** (**recommend**)
+
+```js
+module.exports = {
+ // You can specify any options from https://postcss.org/api/#processoptions here
+ // parser: 'sugarss',
+ plugins: [
+ // Plugins for PostCSS
+ ["postcss-short", { prefix: "x" }],
+ "postcss-preset-env",
+ ],
+};
+```
+
+Using `function` notation:
+
+**postcss.config.js** (**recommend**)
+
+```js
+module.exports = (api) => {
+ // `api.file` - path to the file
+ // `api.mode` - `mode` value of webpack, please read https://webpack.js.org/configuration/mode/
+ // `api.webpackLoaderContext` - loader context for complex use cases
+ // `api.env` - alias `api.mode` for compatibility with `postcss-cli`
+ // `api.options` - the `postcssOptions` options
+
+ if (/\.sss$/.test(api.file)) {
+ return {
+ // You can specify any options from https://postcss.org/api/#processoptions here
+ parser: "sugarss",
+ plugins: [
+ // Plugins for PostCSS
+ ["postcss-short", { prefix: "x" }],
+ "postcss-preset-env",
+ ],
+ };
+ }
+
+ return {
+ // You can specify any options from https://postcss.org/api/#processoptions here
+ plugins: [
+ // Plugins for PostCSS
+ ["postcss-short", { prefix: "x" }],
+ "postcss-preset-env",
+ ],
+ };
+};
+```
+
+**postcss.config.js** (**deprecated**, will be removed in the next major release)
+
+```js
+module.exports = {
+ // You can specify any options from https://postcss.org/api/#processoptions here
+ // parser: 'sugarss',
+ plugins: {
+ // Plugins for PostCSS
+ "postcss-short": { prefix: "x" },
+ "postcss-preset-env": {},
+ },
+};
+```
+
+##### Config Cascade
+
+You can use different `postcss.config.js` files in different directories.
+Config lookup starts from `path.dirname(file)` and walks the file tree upwards until a config file is found.
+
+```
+|– components
+| |– component
+| | |– index.js
+| | |– index.png
+| | |– style.css (1)
+| | |– postcss.config.js (1)
+| |– component
+| | |– index.js
+| | |– image.png
+| | |– style.css (2)
+|
+|– postcss.config.js (1 && 2 (recommended))
+|– webpack.config.js
+|
+|– package.json
+```
+
+After setting up your `postcss.config.js`, add `postcss-loader` to your `webpack.config.js`.
+You can use it standalone or in conjunction with `css-loader` (recommended).
+
+Use it **before** `css-loader` and `style-loader`, but **after** other preprocessor loaders like e.g `sass|less|stylus-loader`, if you use any (since [webpack loaders evaluate right to left/bottom to top](https://webpack.js.org/concepts/loaders/#configuration)).
+
+**webpack.config.js** (**recommended**)
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: [
+ "style-loader",
+ {
+ loader: "css-loader",
+ options: {
+ importLoaders: 1,
+ },
+ },
+ "postcss-loader",
+ ],
+ },
+ ],
+ },
+};
+```
+
+#### `boolean`
+
+Enables/Disables autoloading config.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ config: false,
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+#### String
+
+Allows to specify the path to the config file.
+
+**webpack.config.js**
+
+```js
+const path = require("path");
+
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ config: path.resolve(__dirname, "custom.config.js"),
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+### `sourceMap`
+
+Type:
+
+```ts
+type sourceMap = boolean;
+```
+
+Default: depends on the `compiler.devtool` value
+
+By default generation of source maps depends on the [`devtool`](https://webpack.js.org/configuration/devtool/) option.
+All values enable source map generation except `eval` and `false` value.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ { loader: "style-loader" },
+ { loader: "css-loader", options: { sourceMap: true } },
+ { loader: "postcss-loader", options: { sourceMap: true } },
+ { loader: "sass-loader", options: { sourceMap: true } },
+ ],
+ },
+ ],
+ },
+};
+```
+
+Alternative setup:
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ devtool: "source-map",
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ { loader: "style-loader" },
+ { loader: "css-loader" },
+ { loader: "postcss-loader" },
+ { loader: "sass-loader" },
+ ],
+ },
+ ],
+ },
+};
+```
+
+### `implementation`
+
+Type:
+
+```ts
+type implementation = object;
+```
+
+type of `implementation` should be the same as [postcss.d.ts](https://github.com/postcss/postcss/blob/main/lib/postcss.d.ts)
+
+Default: `postcss`
+
+The special `implementation` option determines which implementation of PostCSS to use. Overrides the locally installed `peerDependency` version of `postcss`.
+
+**This option is only really useful for downstream tooling authors to ease the PostCSS 7-to-8 transition.**
+
+#### `function`
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ { loader: "style-loader" },
+ { loader: "css-loader" },
+ {
+ loader: "postcss-loader",
+ options: { implementation: require("postcss") },
+ },
+ { loader: "sass-loader" },
+ ],
+ },
+ ],
+ },
+};
+```
+
+#### String
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ { loader: "style-loader" },
+ { loader: "css-loader" },
+ {
+ loader: "postcss-loader",
+ options: { implementation: require.resolve("postcss") },
+ },
+ { loader: "sass-loader" },
+ ],
+ },
+ ],
+ },
+};
+```
+
+## Examples
+
+### SugarSS
+
+You'll need to install `sugarss`:
+
+```console
+npm install --save-dev sugarss
+```
+
+Using [`SugarSS`](https://github.com/postcss/sugarss) syntax.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.sss$/i,
+ use: [
+ "style-loader",
+ {
+ loader: "css-loader",
+ options: { importLoaders: 1 },
+ },
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ parser: "sugarss",
+ },
+ },
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+### Autoprefixer
+
+You'll need to install `autoprefixer`:
+
+```console
+npm install --save-dev autoprefixer
+```
+
+Add vendor prefixes to CSS rules using [`autoprefixer`](https://github.com/postcss/autoprefixer).
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ "style-loader",
+ {
+ loader: "css-loader",
+ options: { importLoaders: 1 },
+ },
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ plugins: [
+ [
+ "autoprefixer",
+ {
+ // Options
+ },
+ ],
+ ],
+ },
+ },
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+> **Warning**
+>
+> [`postcss-preset-env`](https://github.com/csstools/postcss-preset-env) includes [`autoprefixer`](https://github.com/postcss/autoprefixer), so adding it separately is not necessary if you already use the preset. More [information](https://github.com/csstools/postcss-preset-env#autoprefixer)
+
+### PostCSS Preset Env
+
+You'll need to install `postcss-preset-env`:
+
+```console
+npm install --save-dev postcss-preset-env
+```
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ "style-loader",
+ {
+ loader: "css-loader",
+ options: { importLoaders: 1 },
+ },
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ plugins: [
+ [
+ "postcss-preset-env",
+ {
+ // Options
+ },
+ ],
+ ],
+ },
+ },
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+### CSS Modules
+
+What is `CSS Modules`? Please [read](https://github.com/webpack-contrib/css-loader#modules).
+
+No additional options required on the `postcss-loader` side.
+To make them work properly, either add the `css-loader`’s `importLoaders` option.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ "style-loader",
+ {
+ loader: "css-loader",
+ options: {
+ modules: true,
+ importLoaders: 1,
+ },
+ },
+ "postcss-loader",
+ ],
+ },
+ ],
+ },
+};
+```
+
+### CSS-in-JS and [`postcss-js`](https://github.com/postcss/postcss-js)
+
+You'll need to install `postcss-js`:
+
+```console
+npm install --save-dev postcss-js
+```
+
+If you want to process styles written in JavaScript, use the [`postcss-js`](https://github.com/postcss/postcss-js) parser.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.style.js$/,
+ use: [
+ "style-loader",
+ {
+ loader: "css-loader",
+ options: {
+ importLoaders: 2,
+ },
+ },
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ parser: "postcss-js",
+ },
+ execute: true,
+ },
+ },
+ "babel-loader",
+ ],
+ },
+ ],
+ },
+};
+```
+
+As result you will be able to write styles in the following way
+
+```js
+import colors from "./styles/colors";
+
+export default {
+ ".menu": {
+ color: colors.main,
+ height: 25,
+ "&_link": {
+ color: "white",
+ },
+ },
+};
+```
+
+> **Warning**
+>
+> If you are using Babel you need to do the following in order for the setup to work
+
+> 1. Add [`babel-plugin-add-module-exports`](https://github.com/59naga/babel-plugin-add-module-exports) to your configuration.
+> 2. You need to have only one **default** export per style module.
+
+### Extract CSS
+
+Using [`mini-css-extract-plugin`](https://github.com/webpack-contrib/mini-css-extract-plugin).
+
+**webpack.config.js**
+
+```js
+const isProductionMode = process.env.NODE_ENV === "production";
+
+const MiniCssExtractPlugin = require("mini-css-extract-plugin");
+
+module.exports = {
+ mode: isProductionMode ? "production" : "development",
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: [
+ isProductionMode ? MiniCssExtractPlugin.loader : "style-loader",
+ "css-loader",
+ "postcss-loader",
+ ],
+ },
+ ],
+ },
+ plugins: [
+ new MiniCssExtractPlugin({
+ filename: isProductionMode ? "[name].[contenthash].css" : "[name].css",
+ }),
+ ],
+};
+```
+
+### Emit assets
+
+To write a asset from PostCSS plugin to the webpack, need to add a message in `result.messages`.
+
+The message should contain the following fields:
+
+- `type` = `asset` - Message type (require, should be equal `asset`)
+- `file` - file name (require)
+- `content` - file content (require)
+- `sourceMap` - sourceMap
+- `info` - asset info
+
+**webpack.config.js**
+
+```js
+const postcssCustomPlugin = (opts = {}) => {
+ return {
+ postcssPlugin: "postcss-custom-plugin",
+ Once: (root, { result }) => {
+ result.messages.push({
+ type: "asset",
+ file: "sprite.svg",
+ content: "<svg>...</svg>",
+ });
+ },
+ };
+};
+
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ "style-loader",
+ "css-loader",
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ plugins: [postcssCustomPlugin()],
+ },
+ },
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+### Add dependencies, contextDependencies, buildDependencies, missingDependencies
+
+The dependencies are necessary for webpack to understand when it needs to run recompilation on the changed files.
+
+There are two way to add dependencies:
+
+1. (Recommended). The plugin may emit messages in `result.messages`.
+
+The message should contain the following fields:
+
+- `type` = `dependency` - Message type (require, should be equal `dependency`, `context-dependency`, `build-dependency` or `missing-dependency`)
+- `file` - absolute file path (require)
+
+**webpack.config.js**
+
+```js
+const path = require("path");
+
+const postcssCustomPlugin = (opts = {}) => {
+ return {
+ postcssPlugin: "postcss-custom-plugin",
+ Once: (root, { result }) => {
+ result.messages.push({
+ type: "dependency",
+ file: path.resolve(__dirname, "path", "to", "file"),
+ });
+ },
+ };
+};
+
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ "style-loader",
+ "css-loader",
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ plugins: [postcssCustomPlugin()],
+ },
+ },
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+Or you can use ready-made plugin [postcss-add-dependencies](https://www.npmjs.com/package/postcss-add-dependencies).
+
+2. Pass `loaderContext` in plugin.
+
+**webpack.config.js**
+
+```js
+const path = require("path");
+
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ "style-loader",
+ "css-loader",
+ {
+ loader: "postcss-loader",
+ options: {
+ postcssOptions: {
+ config: path.resolve(__dirname, "path/to/postcss.config.js"),
+ },
+ },
+ },
+ ],
+ },
+ ],
+ },
+};
+```
+
+**postcss.config.js**
+
+```js
+module.exports = (api) => ({
+ plugins: [
+ require("path/to/postcssCustomPlugin.js")({
+ loaderContext: api.webpackLoaderContext,
+ }),
+ ],
+});
+```
+
+**postcssCustomPlugin.js**
+
+```js
+const path = require("path");
+
+const postcssCustomPlugin = (opts = {}) => {
+ return {
+ postcssPlugin: "postcss-custom-plugin",
+ Once: (root, { result }) => {
+ opts.loaderContext.addDependency(
+ path.resolve(__dirname, "path", "to", "file")
+ );
+ },
+ };
+};
+
+postcssCustomPlugin.postcss = true;
+module.exports = postcssCustomPlugin;
+```
+
+## Contributing
+
+Please take a moment to read our contributing guidelines if you haven't yet done so.
+
+[CONTRIBUTING](./.github/CONTRIBUTING.md)
+
+## License
+
+[MIT](./LICENSE)
+
+[npm]: https://img.shields.io/npm/v/postcss-loader.svg
+[npm-url]: https://npmjs.com/package/postcss-loader
+[node]: https://img.shields.io/node/v/postcss-loader.svg
+[node-url]: https://nodejs.org
+[tests]: https://github.com/webpack-contrib/postcss-loader/workflows/postcss-loader/badge.svg
+[tests-url]: https://github.com/webpack-contrib/postcss-loader/actions
+[cover]: https://codecov.io/gh/webpack-contrib/postcss-loader/branch/master/graph/badge.svg
+[cover-url]: https://codecov.io/gh/webpack-contrib/postcss-loader
+[discussion]: https://img.shields.io/github/discussions/webpack/webpack
+[discussion-url]: https://github.com/webpack/webpack/discussions
+[chat-postcss]: https://badges.gitter.im/postcss/postcss.svg
+[chat-postcss-url]: https://gitter.im/postcss/postcss
+[size]: https://packagephobia.now.sh/badge?p=postcss-loader
+[size-url]: https://packagephobia.now.sh/result?p=postcss-loader
diff --git a/node_modules/postcss-loader/dist/cjs.js b/node_modules/postcss-loader/dist/cjs.js
new file mode 100644
index 00000000..1ec2c7ec
--- /dev/null
+++ b/node_modules/postcss-loader/dist/cjs.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./index").default; \ No newline at end of file
diff --git a/node_modules/postcss-loader/dist/config.d.ts b/node_modules/postcss-loader/dist/config.d.ts
new file mode 100644
index 00000000..729c449c
--- /dev/null
+++ b/node_modules/postcss-loader/dist/config.d.ts
@@ -0,0 +1,16 @@
+import type { Config as PostCSSConfig } from "postcss-load-config";
+import type { LoaderContext } from "webpack";
+
+type PostCSSLoaderContext = LoaderContext<PostCSSConfig>;
+
+interface PostCSSLoaderAPI {
+ mode: PostCSSLoaderContext["mode"];
+ file: PostCSSLoaderContext["resourcePath"];
+ webpackLoaderContext: PostCSSLoaderContext;
+ env: PostCSSLoaderContext["mode"];
+ options: PostCSSConfig;
+}
+
+export type PostCSSLoaderOptions =
+ | PostCSSConfig
+ | ((api: PostCSSLoaderAPI) => PostCSSConfig);
diff --git a/node_modules/postcss-loader/dist/index.js b/node_modules/postcss-loader/dist/index.js
new file mode 100644
index 00000000..d4c1c91b
--- /dev/null
+++ b/node_modules/postcss-loader/dist/index.js
@@ -0,0 +1,168 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = loader;
+var _path = _interopRequireDefault(require("path"));
+var _package = _interopRequireDefault(require("postcss/package.json"));
+var _options = _interopRequireDefault(require("./options.json"));
+var _utils = require("./utils");
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+let hasExplicitDependencyOnPostCSS = false;
+
+/**
+ * **PostCSS Loader**
+ *
+ * Loads && processes CSS with [PostCSS](https://github.com/postcss/postcss)
+ *
+ * @method loader
+ *
+ * @param {String} content Source
+ * @param {Object} sourceMap Source Map
+ * @param {Object} meta Meta
+ *
+ * @return {callback} callback Result
+ */
+async function loader(content, sourceMap, meta) {
+ const options = this.getOptions(_options.default);
+ const callback = this.async();
+ const configOption = typeof options.postcssOptions === "undefined" || typeof options.postcssOptions.config === "undefined" ? true : options.postcssOptions.config;
+ let implementation;
+ try {
+ implementation = (0, _utils.getPostcssImplementation)(this, options.implementation);
+ } catch (error) {
+ callback(error);
+ return;
+ }
+ if (!implementation) {
+ callback(new Error(`The Postcss implementation "${options.implementation}" not found`));
+ return;
+ }
+ let loadedConfig;
+ if (configOption) {
+ try {
+ loadedConfig = await (0, _utils.loadConfig)(this, configOption, options.postcssOptions);
+ } catch (error) {
+ callback(error);
+ return;
+ }
+ }
+ const {
+ plugins,
+ processOptions
+ } = await (0, _utils.getPostcssOptions)(this, loadedConfig, options.postcssOptions);
+ const useSourceMap = typeof options.sourceMap !== "undefined" ? options.sourceMap : this.sourceMap;
+ if (useSourceMap) {
+ processOptions.map = {
+ inline: false,
+ annotation: false,
+ ...processOptions.map
+ };
+ }
+ if (sourceMap && processOptions.map) {
+ processOptions.map.prev = (0, _utils.normalizeSourceMap)(sourceMap, this.context);
+ }
+ let root;
+
+ // Reuse PostCSS AST from other loaders
+ if (meta && meta.ast && meta.ast.type === "postcss" &&
+ // eslint-disable-next-line global-require
+ require("semver").satisfies(meta.ast.version, `^${_package.default.version}`)) {
+ ({
+ root
+ } = meta.ast);
+ }
+ if (!root && options.execute) {
+ // eslint-disable-next-line no-param-reassign
+ content = (0, _utils.exec)(content, this);
+ }
+ let result;
+ let processor;
+ try {
+ processor = implementation(plugins);
+ result = await processor.process(root || content, processOptions);
+ } catch (error) {
+ // Check postcss versions to avoid using PostCSS 7.
+ // For caching reasons, we use the readFileSync and existsSync functions from the context,
+ // not the functions from the `fs` module.
+ if (!hasExplicitDependencyOnPostCSS && processor && processor.version && processor.version.startsWith("7.")) {
+ // The `findPackageJsonDir` function returns `string` or `null`.
+ // This is used to do for caching, that is, an explicit comparison with `undefined`
+ // is used to make the condition body run once.
+ const packageJSONDir = (0, _utils.findPackageJSONDir)(process.cwd(), this.fs.statSync);
+ if (packageJSONDir) {
+ let bufferOfPackageJSON;
+ try {
+ bufferOfPackageJSON = this.fs.readFileSync(_path.default.resolve(packageJSONDir, "package.json"), "utf8");
+ } catch (_error) {
+ // Nothing
+ }
+ if (bufferOfPackageJSON) {
+ let pkg;
+ try {
+ pkg = JSON.parse(bufferOfPackageJSON);
+ } catch (_error) {
+ // Nothing
+ }
+ if (pkg) {
+ if (!pkg.dependencies.postcss && !pkg.devDependencies.postcss) {
+ this.emitWarning(new Error("Add postcss as project dependency. postcss is not a peer dependency for postcss-loader. " + "Use `npm install postcss` or `yarn add postcss`"));
+ } else {
+ hasExplicitDependencyOnPostCSS = true;
+ }
+ }
+ }
+ }
+ }
+ (0, _utils.reportError)(this, callback, error);
+ return;
+ }
+ for (const warning of result.warnings()) {
+ this.emitWarning((0, _utils.warningFactory)(warning));
+ }
+ for (const message of result.messages) {
+ // eslint-disable-next-line default-case
+ switch (message.type) {
+ case "dependency":
+ this.addDependency(message.file);
+ break;
+ case "build-dependency":
+ this.addBuildDependency(message.file);
+ break;
+ case "missing-dependency":
+ this.addMissingDependency(message.file);
+ break;
+ case "context-dependency":
+ this.addContextDependency(message.file);
+ break;
+ case "dir-dependency":
+ this.addContextDependency(message.dir);
+ break;
+ case "asset":
+ if (message.content && message.file) {
+ this.emitFile(message.file, message.content, message.sourceMap, message.info);
+ }
+ }
+ }
+
+ // eslint-disable-next-line no-undefined
+ let map = result.map ? result.map.toJSON() : undefined;
+ if (map && useSourceMap) {
+ map = (0, _utils.normalizeSourceMapAfterPostcss)(map, this.context);
+ }
+ let ast;
+ try {
+ ast = {
+ type: "postcss",
+ version: result.processor.version,
+ root: result.root
+ };
+ } catch (error) {
+ (0, _utils.reportError)(this, callback, error);
+ return;
+ }
+ callback(null, result.css, map, {
+ ast
+ });
+} \ No newline at end of file
diff --git a/node_modules/postcss-loader/dist/options.json b/node_modules/postcss-loader/dist/options.json
new file mode 100644
index 00000000..b85e5654
--- /dev/null
+++ b/node_modules/postcss-loader/dist/options.json
@@ -0,0 +1,58 @@
+{
+ "title": "PostCSS Loader options",
+ "type": "object",
+ "properties": {
+ "postcssOptions": {
+ "description": "Options to pass through to `Postcss`.",
+ "link": "https://github.com/webpack-contrib/postcss-loader#postcssOptions",
+ "anyOf": [
+ {
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "config": {
+ "description": "Allows to specify PostCSS config path.",
+ "link": "https://github.com/webpack-contrib/postcss-loader#config",
+ "anyOf": [
+ {
+ "description": "Allows to specify the path to the configuration file",
+ "type": "string"
+ },
+ {
+ "description": "Enables/Disables autoloading config",
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "instanceof": "Function"
+ }
+ ]
+ },
+ "execute": {
+ "description": "Enables/Disables PostCSS parser support in 'CSS-in-JS'.",
+ "link": "https://github.com/webpack-contrib/postcss-loader#execute",
+ "type": "boolean"
+ },
+ "sourceMap": {
+ "description": "Enables/Disables generation of source maps.",
+ "link": "https://github.com/webpack-contrib/postcss-loader#sourcemap",
+ "type": "boolean"
+ },
+ "implementation": {
+ "description": "The implementation of postcss to use, instead of the locally installed version",
+ "link": "https://github.com/webpack-contrib/postcss-loader#implementation",
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "instanceof": "Function"
+ }
+ ]
+ }
+ },
+ "additionalProperties": false
+}
diff --git a/node_modules/postcss-loader/dist/utils.js b/node_modules/postcss-loader/dist/utils.js
new file mode 100644
index 00000000..13aa1392
--- /dev/null
+++ b/node_modules/postcss-loader/dist/utils.js
@@ -0,0 +1,458 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.exec = exec;
+exports.findPackageJSONDir = findPackageJSONDir;
+exports.getPostcssImplementation = getPostcssImplementation;
+exports.getPostcssOptions = getPostcssOptions;
+exports.loadConfig = loadConfig;
+exports.normalizeSourceMap = normalizeSourceMap;
+exports.normalizeSourceMapAfterPostcss = normalizeSourceMapAfterPostcss;
+exports.reportError = reportError;
+exports.warningFactory = warningFactory;
+var _path = _interopRequireDefault(require("path"));
+var _url = _interopRequireDefault(require("url"));
+var _module = _interopRequireDefault(require("module"));
+var _cosmiconfig = require("cosmiconfig");
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+const parentModule = module;
+const stat = (inputFileSystem, filePath) => new Promise((resolve, reject) => {
+ inputFileSystem.stat(filePath, (err, stats) => {
+ if (err) {
+ reject(err);
+ }
+ resolve(stats);
+ });
+});
+function exec(code, loaderContext) {
+ const {
+ resource,
+ context
+ } = loaderContext;
+ const module = new _module.default(resource, parentModule);
+
+ // eslint-disable-next-line no-underscore-dangle
+ module.paths = _module.default._nodeModulePaths(context);
+ module.filename = resource;
+
+ // eslint-disable-next-line no-underscore-dangle
+ module._compile(code, resource);
+ return module.exports;
+}
+let tsLoader;
+async function loadConfig(loaderContext, config, postcssOptions) {
+ const searchPath = typeof config === "string" ? _path.default.resolve(config) : _path.default.dirname(loaderContext.resourcePath);
+ let stats;
+ try {
+ stats = await stat(loaderContext.fs, searchPath);
+ } catch (errorIgnore) {
+ throw new Error(`No PostCSS config found in: ${searchPath}`);
+ }
+ const moduleName = "postcss";
+ const searchPlaces = [
+ // Prefer popular format
+ "package.json", `${moduleName}.config.js`, `${moduleName}.config.mjs`, `${moduleName}.config.cjs`, `${moduleName}.config.ts`, `${moduleName}.config.mts`, `${moduleName}.config.cts`, `.${moduleName}rc`, `.${moduleName}rc.json`, `.${moduleName}rc.js`, `.${moduleName}rc.mjs`, `.${moduleName}rc.cjs`, `.${moduleName}rc.ts`, `.${moduleName}rc.mts`, `.${moduleName}rc.cts`, `.${moduleName}rc.yaml`, `.${moduleName}rc.yml`, `.config/${moduleName}rc`, `.config/${moduleName}rc.json`, `.config/${moduleName}rc.yaml`, `.config/${moduleName}rc.yml`, `.config/${moduleName}rc.js`, `.config/${moduleName}rc.mjs`, `.config/${moduleName}rc.cjs`, `.config/${moduleName}rc.ts`, `.config/${moduleName}rc.mts`, `.config/${moduleName}rc.cts`];
+ const loaders = {
+ ".js": async (...args) => {
+ let result;
+ try {
+ result = _cosmiconfig.defaultLoadersSync[".js"](...args);
+ } catch (error) {
+ let importESM;
+ try {
+ // eslint-disable-next-line no-new-func
+ importESM = new Function("id", "return import(id);");
+ } catch (e) {
+ importESM = null;
+ }
+ if (error.code === "ERR_REQUIRE_ESM" && _url.default.pathToFileURL && importESM) {
+ const urlForConfig = _url.default.pathToFileURL(args[0]);
+ result = await importESM(urlForConfig);
+ } else {
+ throw error;
+ }
+ }
+ return result;
+ },
+ ".cjs": _cosmiconfig.defaultLoadersSync[".cjs"],
+ ".mjs": async (...args) => {
+ let result;
+ let importESM;
+ try {
+ // eslint-disable-next-line no-new-func
+ importESM = new Function("id", "return import(id);");
+ } catch (e) {
+ importESM = null;
+ }
+ if (_url.default.pathToFileURL && importESM) {
+ const urlForConfig = _url.default.pathToFileURL(args[0]);
+ result = await importESM(urlForConfig);
+ } else {
+ throw new Error("ESM is not supported");
+ }
+ return result;
+ }
+ };
+ if (!tsLoader) {
+ const opts = {
+ interopDefault: true
+ };
+ // eslint-disable-next-line global-require, import/no-extraneous-dependencies
+ const jiti = require("jiti")(__filename, opts);
+ tsLoader = filepath => jiti(filepath);
+ }
+ loaders[".cts"] = tsLoader;
+ loaders[".mts"] = tsLoader;
+ loaders[".ts"] = tsLoader;
+ const explorer = (0, _cosmiconfig.cosmiconfig)(moduleName, {
+ searchPlaces,
+ loaders
+ });
+ let result;
+ try {
+ if (stats.isFile()) {
+ result = await explorer.load(searchPath);
+ } else {
+ result = await explorer.search(searchPath);
+ }
+ } catch (error) {
+ throw error;
+ }
+ if (!result) {
+ return {};
+ }
+ loaderContext.addBuildDependency(result.filepath);
+ loaderContext.addDependency(result.filepath);
+ if (result.isEmpty) {
+ return result;
+ }
+ if (typeof result.config === "function") {
+ const api = {
+ mode: loaderContext.mode,
+ file: loaderContext.resourcePath,
+ // For complex use
+ webpackLoaderContext: loaderContext,
+ // Partial compatibility with `postcss-cli`
+ env: loaderContext.mode,
+ options: postcssOptions || {}
+ };
+ return {
+ ...result,
+ config: result.config(api)
+ };
+ }
+ return result;
+}
+function loadPlugin(plugin, options, file) {
+ try {
+ // eslint-disable-next-line global-require, import/no-dynamic-require
+ let loadedPlugin = require(plugin);
+ if (loadedPlugin.default) {
+ loadedPlugin = loadedPlugin.default;
+ }
+ if (!options || Object.keys(options).length === 0) {
+ return loadedPlugin;
+ }
+ return loadedPlugin(options);
+ } catch (error) {
+ throw new Error(`Loading PostCSS "${plugin}" plugin failed: ${error.message}\n\n(@${file})`);
+ }
+}
+function pluginFactory() {
+ const listOfPlugins = new Map();
+ return plugins => {
+ if (typeof plugins === "undefined") {
+ return listOfPlugins;
+ }
+ if (Array.isArray(plugins)) {
+ for (const plugin of plugins) {
+ if (Array.isArray(plugin)) {
+ const [name, options] = plugin;
+ listOfPlugins.set(name, options);
+ } else if (plugin && typeof plugin === "function") {
+ listOfPlugins.set(plugin);
+ } else if (plugin && Object.keys(plugin).length === 1 && (typeof plugin[Object.keys(plugin)[0]] === "object" || typeof plugin[Object.keys(plugin)[0]] === "boolean") && plugin[Object.keys(plugin)[0]] !== null) {
+ const [name] = Object.keys(plugin);
+ const options = plugin[name];
+ if (options === false) {
+ listOfPlugins.delete(name);
+ } else {
+ listOfPlugins.set(name, options);
+ }
+ } else if (plugin) {
+ listOfPlugins.set(plugin);
+ }
+ }
+ } else {
+ const objectPlugins = Object.entries(plugins);
+ for (const [name, options] of objectPlugins) {
+ if (options === false) {
+ listOfPlugins.delete(name);
+ } else {
+ listOfPlugins.set(name, options);
+ }
+ }
+ }
+ return listOfPlugins;
+ };
+}
+async function tryRequireThenImport(module) {
+ let exports;
+ try {
+ // eslint-disable-next-line import/no-dynamic-require, global-require
+ exports = require(module);
+ return exports;
+ } catch (requireError) {
+ let importESM;
+ try {
+ // eslint-disable-next-line no-new-func
+ importESM = new Function("id", "return import(id);");
+ } catch (e) {
+ importESM = null;
+ }
+ if (requireError.code === "ERR_REQUIRE_ESM" && importESM) {
+ exports = await importESM(module);
+ return exports.default;
+ }
+ throw requireError;
+ }
+}
+async function getPostcssOptions(loaderContext, loadedConfig = {}, postcssOptions = {}) {
+ const file = loaderContext.resourcePath;
+ let normalizedPostcssOptions = postcssOptions;
+ if (typeof normalizedPostcssOptions === "function") {
+ normalizedPostcssOptions = normalizedPostcssOptions(loaderContext);
+ }
+ let plugins = [];
+ try {
+ const factory = pluginFactory();
+ if (loadedConfig.config && loadedConfig.config.plugins) {
+ factory(loadedConfig.config.plugins);
+ }
+ factory(normalizedPostcssOptions.plugins);
+ plugins = [...factory()].map(item => {
+ const [plugin, options] = item;
+ if (typeof plugin === "string") {
+ return loadPlugin(plugin, options, file);
+ }
+ return plugin;
+ });
+ } catch (error) {
+ loaderContext.emitError(error);
+ }
+ const processOptionsFromConfig = {
+ ...loadedConfig.config
+ } || {};
+ if (processOptionsFromConfig.from) {
+ processOptionsFromConfig.from = _path.default.resolve(_path.default.dirname(loadedConfig.filepath), processOptionsFromConfig.from);
+ }
+ if (processOptionsFromConfig.to) {
+ processOptionsFromConfig.to = _path.default.resolve(_path.default.dirname(loadedConfig.filepath), processOptionsFromConfig.to);
+ }
+ const processOptionsFromOptions = {
+ ...normalizedPostcssOptions
+ };
+ if (processOptionsFromOptions.from) {
+ processOptionsFromOptions.from = _path.default.resolve(loaderContext.rootContext, processOptionsFromOptions.from);
+ }
+ if (processOptionsFromOptions.to) {
+ processOptionsFromOptions.to = _path.default.resolve(loaderContext.rootContext, processOptionsFromOptions.to);
+ }
+
+ // No need `plugins` and `config` for processOptions
+ const {
+ plugins: __plugins,
+ ...optionsFromConfig
+ } = processOptionsFromConfig;
+ const {
+ config: _config,
+ plugins: _plugins,
+ ...optionsFromOptions
+ } = processOptionsFromOptions;
+ const processOptions = {
+ from: file,
+ to: file,
+ map: false,
+ ...optionsFromConfig,
+ ...optionsFromOptions
+ };
+ if (typeof processOptions.parser === "string") {
+ try {
+ processOptions.parser = await tryRequireThenImport(processOptions.parser);
+ } catch (error) {
+ loaderContext.emitError(new Error(`Loading PostCSS "${processOptions.parser}" parser failed: ${error.message}\n\n(@${file})`));
+ }
+ }
+ if (typeof processOptions.stringifier === "string") {
+ try {
+ processOptions.stringifier = await tryRequireThenImport(processOptions.stringifier);
+ } catch (error) {
+ loaderContext.emitError(new Error(`Loading PostCSS "${processOptions.stringifier}" stringifier failed: ${error.message}\n\n(@${file})`));
+ }
+ }
+ if (typeof processOptions.syntax === "string") {
+ try {
+ processOptions.syntax = await tryRequireThenImport(processOptions.syntax);
+ } catch (error) {
+ loaderContext.emitError(new Error(`Loading PostCSS "${processOptions.syntax}" syntax failed: ${error.message}\n\n(@${file})`));
+ }
+ }
+ if (processOptions.map === true) {
+ // https://github.com/postcss/postcss/blob/master/docs/source-maps.md
+ processOptions.map = {
+ inline: true
+ };
+ }
+ return {
+ plugins,
+ processOptions
+ };
+}
+const IS_NATIVE_WIN32_PATH = /^[a-z]:[/\\]|^\\\\/i;
+const ABSOLUTE_SCHEME = /^[a-z0-9+\-.]+:/i;
+function getURLType(source) {
+ if (source[0] === "/") {
+ if (source[1] === "/") {
+ return "scheme-relative";
+ }
+ return "path-absolute";
+ }
+ if (IS_NATIVE_WIN32_PATH.test(source)) {
+ return "path-absolute";
+ }
+ return ABSOLUTE_SCHEME.test(source) ? "absolute" : "path-relative";
+}
+function normalizeSourceMap(map, resourceContext) {
+ let newMap = map;
+
+ // Some loader emit source map as string
+ // Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification), and then parse the string as JSON.
+ if (typeof newMap === "string") {
+ newMap = JSON.parse(newMap);
+ }
+ delete newMap.file;
+ const {
+ sourceRoot
+ } = newMap;
+ delete newMap.sourceRoot;
+ if (newMap.sources) {
+ newMap.sources = newMap.sources.map(source => {
+ const sourceType = getURLType(source);
+
+ // Do no touch `scheme-relative` and `absolute` URLs
+ if (sourceType === "path-relative" || sourceType === "path-absolute") {
+ const absoluteSource = sourceType === "path-relative" && sourceRoot ? _path.default.resolve(sourceRoot, _path.default.normalize(source)) : _path.default.normalize(source);
+ return _path.default.relative(resourceContext, absoluteSource);
+ }
+ return source;
+ });
+ }
+ return newMap;
+}
+function normalizeSourceMapAfterPostcss(map, resourceContext) {
+ const newMap = map;
+
+ // result.map.file is an optional property that provides the output filename.
+ // Since we don't know the final filename in the webpack build chain yet, it makes no sense to have it.
+ // eslint-disable-next-line no-param-reassign
+ delete newMap.file;
+
+ // eslint-disable-next-line no-param-reassign
+ newMap.sourceRoot = "";
+
+ // eslint-disable-next-line no-param-reassign
+ newMap.sources = newMap.sources.map(source => {
+ if (source.indexOf("<") === 0) {
+ return source;
+ }
+ const sourceType = getURLType(source);
+
+ // Do no touch `scheme-relative`, `path-absolute` and `absolute` types
+ if (sourceType === "path-relative") {
+ return _path.default.resolve(resourceContext, source);
+ }
+ return source;
+ });
+ return newMap;
+}
+function findPackageJSONDir(cwd, statSync) {
+ let dir = cwd;
+ for (;;) {
+ try {
+ if (statSync(_path.default.join(dir, "package.json")).isFile()) {
+ break;
+ }
+ } catch (error) {
+ // Nothing
+ }
+ const parent = _path.default.dirname(dir);
+ if (dir === parent) {
+ dir = null;
+ break;
+ }
+ dir = parent;
+ }
+ return dir;
+}
+function getPostcssImplementation(loaderContext, implementation) {
+ let resolvedImplementation = implementation;
+ if (!implementation || typeof implementation === "string") {
+ const postcssImplPkg = implementation || "postcss";
+
+ // eslint-disable-next-line import/no-dynamic-require, global-require
+ resolvedImplementation = require(postcssImplPkg);
+ }
+
+ // eslint-disable-next-line consistent-return
+ return resolvedImplementation;
+}
+function reportError(loaderContext, callback, error) {
+ if (error.file) {
+ loaderContext.addDependency(error.file);
+ }
+ if (error.name === "CssSyntaxError") {
+ callback(syntaxErrorFactory(error));
+ } else {
+ callback(error);
+ }
+}
+function warningFactory(warning) {
+ let message = "";
+ if (typeof warning.line !== "undefined") {
+ message += `(${warning.line}:${warning.column}) `;
+ }
+ if (typeof warning.plugin !== "undefined") {
+ message += `from "${warning.plugin}" plugin: `;
+ }
+ message += warning.text;
+ if (warning.node) {
+ message += `\n\nCode:\n ${warning.node.toString()}\n`;
+ }
+ const obj = new Error(message, {
+ cause: warning
+ });
+ obj.stack = null;
+ return obj;
+}
+function syntaxErrorFactory(error) {
+ let message = "\nSyntaxError\n\n";
+ if (typeof error.line !== "undefined") {
+ message += `(${error.line}:${error.column}) `;
+ }
+ if (typeof error.plugin !== "undefined") {
+ message += `from "${error.plugin}" plugin: `;
+ }
+ message += error.file ? `${error.file} ` : "<css input> ";
+ message += `${error.reason}`;
+ const code = error.showSourceCode();
+ if (code) {
+ message += `\n\n${code}\n`;
+ }
+ const obj = new Error(message, {
+ cause: error
+ });
+ obj.stack = null;
+ return obj;
+} \ No newline at end of file
diff --git a/node_modules/postcss-loader/node_modules/.bin/jiti b/node_modules/postcss-loader/node_modules/.bin/jiti
new file mode 120000
index 00000000..33b39640
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/.bin/jiti
@@ -0,0 +1 @@
+../../../jiti/bin/jiti.js \ No newline at end of file
diff --git a/node_modules/postcss-loader/node_modules/.bin/semver b/node_modules/postcss-loader/node_modules/.bin/semver
new file mode 120000
index 00000000..5aaadf42
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/.bin/semver
@@ -0,0 +1 @@
+../semver/bin/semver.js \ No newline at end of file
diff --git a/node_modules/postcss-loader/node_modules/lru-cache/LICENSE b/node_modules/postcss-loader/node_modules/lru-cache/LICENSE
new file mode 100644
index 00000000..19129e31
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/lru-cache/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/postcss-loader/node_modules/lru-cache/README.md b/node_modules/postcss-loader/node_modules/lru-cache/README.md
new file mode 100644
index 00000000..435dfebb
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/lru-cache/README.md
@@ -0,0 +1,166 @@
+# lru cache
+
+A cache object that deletes the least-recently-used items.
+
+[![Build Status](https://travis-ci.org/isaacs/node-lru-cache.svg?branch=master)](https://travis-ci.org/isaacs/node-lru-cache) [![Coverage Status](https://coveralls.io/repos/isaacs/node-lru-cache/badge.svg?service=github)](https://coveralls.io/github/isaacs/node-lru-cache)
+
+## Installation:
+
+```javascript
+npm install lru-cache --save
+```
+
+## Usage:
+
+```javascript
+var LRU = require("lru-cache")
+ , options = { max: 500
+ , length: function (n, key) { return n * 2 + key.length }
+ , dispose: function (key, n) { n.close() }
+ , maxAge: 1000 * 60 * 60 }
+ , cache = new LRU(options)
+ , otherCache = new LRU(50) // sets just the max size
+
+cache.set("key", "value")
+cache.get("key") // "value"
+
+// non-string keys ARE fully supported
+// but note that it must be THE SAME object, not
+// just a JSON-equivalent object.
+var someObject = { a: 1 }
+cache.set(someObject, 'a value')
+// Object keys are not toString()-ed
+cache.set('[object Object]', 'a different value')
+assert.equal(cache.get(someObject), 'a value')
+// A similar object with same keys/values won't work,
+// because it's a different object identity
+assert.equal(cache.get({ a: 1 }), undefined)
+
+cache.reset() // empty the cache
+```
+
+If you put more stuff in it, then items will fall out.
+
+If you try to put an oversized thing in it, then it'll fall out right
+away.
+
+## Options
+
+* `max` The maximum size of the cache, checked by applying the length
+ function to all values in the cache. Not setting this is kind of
+ silly, since that's the whole purpose of this lib, but it defaults
+ to `Infinity`. Setting it to a non-number or negative number will
+ throw a `TypeError`. Setting it to 0 makes it be `Infinity`.
+* `maxAge` Maximum age in ms. Items are not pro-actively pruned out
+ as they age, but if you try to get an item that is too old, it'll
+ drop it and return undefined instead of giving it to you.
+ Setting this to a negative value will make everything seem old!
+ Setting it to a non-number will throw a `TypeError`.
+* `length` Function that is used to calculate the length of stored
+ items. If you're storing strings or buffers, then you probably want
+ to do something like `function(n, key){return n.length}`. The default is
+ `function(){return 1}`, which is fine if you want to store `max`
+ like-sized things. The item is passed as the first argument, and
+ the key is passed as the second argumnet.
+* `dispose` Function that is called on items when they are dropped
+ from the cache. This can be handy if you want to close file
+ descriptors or do other cleanup tasks when items are no longer
+ accessible. Called with `key, value`. It's called *before*
+ actually removing the item from the internal cache, so if you want
+ to immediately put it back in, you'll have to do that in a
+ `nextTick` or `setTimeout` callback or it won't do anything.
+* `stale` By default, if you set a `maxAge`, it'll only actually pull
+ stale items out of the cache when you `get(key)`. (That is, it's
+ not pre-emptively doing a `setTimeout` or anything.) If you set
+ `stale:true`, it'll return the stale value before deleting it. If
+ you don't set this, then it'll return `undefined` when you try to
+ get a stale entry, as if it had already been deleted.
+* `noDisposeOnSet` By default, if you set a `dispose()` method, then
+ it'll be called whenever a `set()` operation overwrites an existing
+ key. If you set this option, `dispose()` will only be called when a
+ key falls out of the cache, not when it is overwritten.
+* `updateAgeOnGet` When using time-expiring entries with `maxAge`,
+ setting this to `true` will make each item's effective time update
+ to the current time whenever it is retrieved from cache, causing it
+ to not expire. (It can still fall out of cache based on recency of
+ use, of course.)
+
+## API
+
+* `set(key, value, maxAge)`
+* `get(key) => value`
+
+ Both of these will update the "recently used"-ness of the key.
+ They do what you think. `maxAge` is optional and overrides the
+ cache `maxAge` option if provided.
+
+ If the key is not found, `get()` will return `undefined`.
+
+ The key and val can be any value.
+
+* `peek(key)`
+
+ Returns the key value (or `undefined` if not found) without
+ updating the "recently used"-ness of the key.
+
+ (If you find yourself using this a lot, you *might* be using the
+ wrong sort of data structure, but there are some use cases where
+ it's handy.)
+
+* `del(key)`
+
+ Deletes a key out of the cache.
+
+* `reset()`
+
+ Clear the cache entirely, throwing away all values.
+
+* `has(key)`
+
+ Check if a key is in the cache, without updating the recent-ness
+ or deleting it for being stale.
+
+* `forEach(function(value,key,cache), [thisp])`
+
+ Just like `Array.prototype.forEach`. Iterates over all the keys
+ in the cache, in order of recent-ness. (Ie, more recently used
+ items are iterated over first.)
+
+* `rforEach(function(value,key,cache), [thisp])`
+
+ The same as `cache.forEach(...)` but items are iterated over in
+ reverse order. (ie, less recently used items are iterated over
+ first.)
+
+* `keys()`
+
+ Return an array of the keys in the cache.
+
+* `values()`
+
+ Return an array of the values in the cache.
+
+* `length`
+
+ Return total length of objects in cache taking into account
+ `length` options function.
+
+* `itemCount`
+
+ Return total quantity of objects currently in cache. Note, that
+ `stale` (see options) items are returned as part of this item
+ count.
+
+* `dump()`
+
+ Return an array of the cache entries ready for serialization and usage
+ with 'destinationCache.load(arr)`.
+
+* `load(cacheEntriesArray)`
+
+ Loads another cache entries array, obtained with `sourceCache.dump()`,
+ into the cache. The destination cache is reset before loading new entries
+
+* `prune()`
+
+ Manually iterates over the entire cache proactively pruning old entries
diff --git a/node_modules/postcss-loader/node_modules/lru-cache/index.js b/node_modules/postcss-loader/node_modules/lru-cache/index.js
new file mode 100644
index 00000000..573b6b85
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/lru-cache/index.js
@@ -0,0 +1,334 @@
+'use strict'
+
+// A linked list to keep track of recently-used-ness
+const Yallist = require('yallist')
+
+const MAX = Symbol('max')
+const LENGTH = Symbol('length')
+const LENGTH_CALCULATOR = Symbol('lengthCalculator')
+const ALLOW_STALE = Symbol('allowStale')
+const MAX_AGE = Symbol('maxAge')
+const DISPOSE = Symbol('dispose')
+const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')
+const LRU_LIST = Symbol('lruList')
+const CACHE = Symbol('cache')
+const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')
+
+const naiveLength = () => 1
+
+// lruList is a yallist where the head is the youngest
+// item, and the tail is the oldest. the list contains the Hit
+// objects as the entries.
+// Each Hit object has a reference to its Yallist.Node. This
+// never changes.
+//
+// cache is a Map (or PseudoMap) that matches the keys to
+// the Yallist.Node object.
+class LRUCache {
+ constructor (options) {
+ if (typeof options === 'number')
+ options = { max: options }
+
+ if (!options)
+ options = {}
+
+ if (options.max && (typeof options.max !== 'number' || options.max < 0))
+ throw new TypeError('max must be a non-negative number')
+ // Kind of weird to have a default max of Infinity, but oh well.
+ const max = this[MAX] = options.max || Infinity
+
+ const lc = options.length || naiveLength
+ this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc
+ this[ALLOW_STALE] = options.stale || false
+ if (options.maxAge && typeof options.maxAge !== 'number')
+ throw new TypeError('maxAge must be a number')
+ this[MAX_AGE] = options.maxAge || 0
+ this[DISPOSE] = options.dispose
+ this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
+ this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false
+ this.reset()
+ }
+
+ // resize the cache when the max changes.
+ set max (mL) {
+ if (typeof mL !== 'number' || mL < 0)
+ throw new TypeError('max must be a non-negative number')
+
+ this[MAX] = mL || Infinity
+ trim(this)
+ }
+ get max () {
+ return this[MAX]
+ }
+
+ set allowStale (allowStale) {
+ this[ALLOW_STALE] = !!allowStale
+ }
+ get allowStale () {
+ return this[ALLOW_STALE]
+ }
+
+ set maxAge (mA) {
+ if (typeof mA !== 'number')
+ throw new TypeError('maxAge must be a non-negative number')
+
+ this[MAX_AGE] = mA
+ trim(this)
+ }
+ get maxAge () {
+ return this[MAX_AGE]
+ }
+
+ // resize the cache when the lengthCalculator changes.
+ set lengthCalculator (lC) {
+ if (typeof lC !== 'function')
+ lC = naiveLength
+
+ if (lC !== this[LENGTH_CALCULATOR]) {
+ this[LENGTH_CALCULATOR] = lC
+ this[LENGTH] = 0
+ this[LRU_LIST].forEach(hit => {
+ hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
+ this[LENGTH] += hit.length
+ })
+ }
+ trim(this)
+ }
+ get lengthCalculator () { return this[LENGTH_CALCULATOR] }
+
+ get length () { return this[LENGTH] }
+ get itemCount () { return this[LRU_LIST].length }
+
+ rforEach (fn, thisp) {
+ thisp = thisp || this
+ for (let walker = this[LRU_LIST].tail; walker !== null;) {
+ const prev = walker.prev
+ forEachStep(this, fn, walker, thisp)
+ walker = prev
+ }
+ }
+
+ forEach (fn, thisp) {
+ thisp = thisp || this
+ for (let walker = this[LRU_LIST].head; walker !== null;) {
+ const next = walker.next
+ forEachStep(this, fn, walker, thisp)
+ walker = next
+ }
+ }
+
+ keys () {
+ return this[LRU_LIST].toArray().map(k => k.key)
+ }
+
+ values () {
+ return this[LRU_LIST].toArray().map(k => k.value)
+ }
+
+ reset () {
+ if (this[DISPOSE] &&
+ this[LRU_LIST] &&
+ this[LRU_LIST].length) {
+ this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))
+ }
+
+ this[CACHE] = new Map() // hash of items by key
+ this[LRU_LIST] = new Yallist() // list of items in order of use recency
+ this[LENGTH] = 0 // length of items in the list
+ }
+
+ dump () {
+ return this[LRU_LIST].map(hit =>
+ isStale(this, hit) ? false : {
+ k: hit.key,
+ v: hit.value,
+ e: hit.now + (hit.maxAge || 0)
+ }).toArray().filter(h => h)
+ }
+
+ dumpLru () {
+ return this[LRU_LIST]
+ }
+
+ set (key, value, maxAge) {
+ maxAge = maxAge || this[MAX_AGE]
+
+ if (maxAge && typeof maxAge !== 'number')
+ throw new TypeError('maxAge must be a number')
+
+ const now = maxAge ? Date.now() : 0
+ const len = this[LENGTH_CALCULATOR](value, key)
+
+ if (this[CACHE].has(key)) {
+ if (len > this[MAX]) {
+ del(this, this[CACHE].get(key))
+ return false
+ }
+
+ const node = this[CACHE].get(key)
+ const item = node.value
+
+ // dispose of the old one before overwriting
+ // split out into 2 ifs for better coverage tracking
+ if (this[DISPOSE]) {
+ if (!this[NO_DISPOSE_ON_SET])
+ this[DISPOSE](key, item.value)
+ }
+
+ item.now = now
+ item.maxAge = maxAge
+ item.value = value
+ this[LENGTH] += len - item.length
+ item.length = len
+ this.get(key)
+ trim(this)
+ return true
+ }
+
+ const hit = new Entry(key, value, len, now, maxAge)
+
+ // oversized objects fall out of cache automatically.
+ if (hit.length > this[MAX]) {
+ if (this[DISPOSE])
+ this[DISPOSE](key, value)
+
+ return false
+ }
+
+ this[LENGTH] += hit.length
+ this[LRU_LIST].unshift(hit)
+ this[CACHE].set(key, this[LRU_LIST].head)
+ trim(this)
+ return true
+ }
+
+ has (key) {
+ if (!this[CACHE].has(key)) return false
+ const hit = this[CACHE].get(key).value
+ return !isStale(this, hit)
+ }
+
+ get (key) {
+ return get(this, key, true)
+ }
+
+ peek (key) {
+ return get(this, key, false)
+ }
+
+ pop () {
+ const node = this[LRU_LIST].tail
+ if (!node)
+ return null
+
+ del(this, node)
+ return node.value
+ }
+
+ del (key) {
+ del(this, this[CACHE].get(key))
+ }
+
+ load (arr) {
+ // reset the cache
+ this.reset()
+
+ const now = Date.now()
+ // A previous serialized cache has the most recent items first
+ for (let l = arr.length - 1; l >= 0; l--) {
+ const hit = arr[l]
+ const expiresAt = hit.e || 0
+ if (expiresAt === 0)
+ // the item was created without expiration in a non aged cache
+ this.set(hit.k, hit.v)
+ else {
+ const maxAge = expiresAt - now
+ // dont add already expired items
+ if (maxAge > 0) {
+ this.set(hit.k, hit.v, maxAge)
+ }
+ }
+ }
+ }
+
+ prune () {
+ this[CACHE].forEach((value, key) => get(this, key, false))
+ }
+}
+
+const get = (self, key, doUse) => {
+ const node = self[CACHE].get(key)
+ if (node) {
+ const hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!self[ALLOW_STALE])
+ return undefined
+ } else {
+ if (doUse) {
+ if (self[UPDATE_AGE_ON_GET])
+ node.value.now = Date.now()
+ self[LRU_LIST].unshiftNode(node)
+ }
+ }
+ return hit.value
+ }
+}
+
+const isStale = (self, hit) => {
+ if (!hit || (!hit.maxAge && !self[MAX_AGE]))
+ return false
+
+ const diff = Date.now() - hit.now
+ return hit.maxAge ? diff > hit.maxAge
+ : self[MAX_AGE] && (diff > self[MAX_AGE])
+}
+
+const trim = self => {
+ if (self[LENGTH] > self[MAX]) {
+ for (let walker = self[LRU_LIST].tail;
+ self[LENGTH] > self[MAX] && walker !== null;) {
+ // We know that we're about to delete this one, and also
+ // what the next least recently used key will be, so just
+ // go ahead and set it now.
+ const prev = walker.prev
+ del(self, walker)
+ walker = prev
+ }
+ }
+}
+
+const del = (self, node) => {
+ if (node) {
+ const hit = node.value
+ if (self[DISPOSE])
+ self[DISPOSE](hit.key, hit.value)
+
+ self[LENGTH] -= hit.length
+ self[CACHE].delete(hit.key)
+ self[LRU_LIST].removeNode(node)
+ }
+}
+
+class Entry {
+ constructor (key, value, length, now, maxAge) {
+ this.key = key
+ this.value = value
+ this.length = length
+ this.now = now
+ this.maxAge = maxAge || 0
+ }
+}
+
+const forEachStep = (self, fn, node, thisp) => {
+ let hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!self[ALLOW_STALE])
+ hit = undefined
+ }
+ if (hit)
+ fn.call(thisp, hit.value, hit.key, self)
+}
+
+module.exports = LRUCache
diff --git a/node_modules/postcss-loader/node_modules/lru-cache/package.json b/node_modules/postcss-loader/node_modules/lru-cache/package.json
new file mode 100644
index 00000000..43b7502c
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/lru-cache/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "lru-cache",
+ "description": "A cache object that deletes the least-recently-used items.",
+ "version": "6.0.0",
+ "author": "Isaac Z. Schlueter <i@izs.me>",
+ "keywords": [
+ "mru",
+ "lru",
+ "cache"
+ ],
+ "scripts": {
+ "test": "tap",
+ "snap": "tap",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "prepublishOnly": "git push origin --follow-tags"
+ },
+ "main": "index.js",
+ "repository": "git://github.com/isaacs/node-lru-cache.git",
+ "devDependencies": {
+ "benchmark": "^2.1.4",
+ "tap": "^14.10.7"
+ },
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+}
diff --git a/node_modules/postcss-loader/node_modules/semver/LICENSE b/node_modules/postcss-loader/node_modules/semver/LICENSE
new file mode 100644
index 00000000..19129e31
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/postcss-loader/node_modules/semver/README.md b/node_modules/postcss-loader/node_modules/semver/README.md
new file mode 100644
index 00000000..53ea9b52
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/README.md
@@ -0,0 +1,637 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean(' =v1.2.3 ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+You can also just load the module for the function that you care about, if
+you'd like to minimize your footprint.
+
+```js
+// load the whole API at once in a single object
+const semver = require('semver')
+
+// or just load the bits you need
+// all of them listed here, just pick and choose what you want
+
+// classes
+const SemVer = require('semver/classes/semver')
+const Comparator = require('semver/classes/comparator')
+const Range = require('semver/classes/range')
+
+// functions for working with versions
+const semverParse = require('semver/functions/parse')
+const semverValid = require('semver/functions/valid')
+const semverClean = require('semver/functions/clean')
+const semverInc = require('semver/functions/inc')
+const semverDiff = require('semver/functions/diff')
+const semverMajor = require('semver/functions/major')
+const semverMinor = require('semver/functions/minor')
+const semverPatch = require('semver/functions/patch')
+const semverPrerelease = require('semver/functions/prerelease')
+const semverCompare = require('semver/functions/compare')
+const semverRcompare = require('semver/functions/rcompare')
+const semverCompareLoose = require('semver/functions/compare-loose')
+const semverCompareBuild = require('semver/functions/compare-build')
+const semverSort = require('semver/functions/sort')
+const semverRsort = require('semver/functions/rsort')
+
+// low-level comparators between versions
+const semverGt = require('semver/functions/gt')
+const semverLt = require('semver/functions/lt')
+const semverEq = require('semver/functions/eq')
+const semverNeq = require('semver/functions/neq')
+const semverGte = require('semver/functions/gte')
+const semverLte = require('semver/functions/lte')
+const semverCmp = require('semver/functions/cmp')
+const semverCoerce = require('semver/functions/coerce')
+
+// working with ranges
+const semverSatisfies = require('semver/functions/satisfies')
+const semverMaxSatisfying = require('semver/ranges/max-satisfying')
+const semverMinSatisfying = require('semver/ranges/min-satisfying')
+const semverToComparators = require('semver/ranges/to-comparators')
+const semverMinVersion = require('semver/ranges/min-version')
+const semverValidRange = require('semver/ranges/valid')
+const semverOutside = require('semver/ranges/outside')
+const semverGtr = require('semver/ranges/gtr')
+const semverLtr = require('semver/ranges/ltr')
+const semverIntersects = require('semver/ranges/intersects')
+const simplifyRange = require('semver/ranges/simplify')
+const rangeSubset = require('semver/ranges/subset')
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+ Print versions that match the specified range.
+
+-i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-n <0|1>
+ This is the base to be used for the prerelease identifier.
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+--rtl
+ Coerce version strings right to left
+
+--ltr
+ Coerce version strings left to right (default)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`. The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal. If no operator is specified, then equality is assumed,
+ so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`. The comparator `>1` is equivalent to `>=2.0.0` and
+would match the versions `2.0.0` and `3.1.0`, but not the versions
+`1.0.1` or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`. A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
+range only accepts prerelease tags on the `1.2.3` version. The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold. First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions. By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk. However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+#### Prerelease Identifier Base
+
+The method `.inc` takes an optional parameter 'identifierBase' string
+that will let you let your prerelease number as zero-based or one-based.
+Set to `false` to omit the prerelease number altogether.
+If you do not specify this parameter, it will default to zero-based.
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta', '1')
+// '1.2.4-beta.1'
+```
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta', false)
+// '1.2.4-beta'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta -n 1
+1.2.4-beta.1
+```
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta -n false
+1.2.4-beta
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0-0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0-0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless
+ `includePrerelease` is specified, in which case any version at all
+ satisfies)
+* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0-0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0-0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator. Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0-0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0-0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0-0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0-0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0-0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0-0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0-0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero element in the
+`[major, minor, patch]` tuple. In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0-0`
+* `^0.2.3` := `>=0.2.3 <0.3.0-0`
+* `^0.0.3` := `>=0.0.3 <0.0.4-0`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0-0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4-0` Note that prereleases in the
+ `0.0.3` version *only* will be allowed, if they are greater than or
+ equal to `beta`. So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0-0`
+* `^0.0.x` := `>=0.0.0 <0.1.0-0`
+* `^0.0` := `>=0.0.0 <0.1.0-0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0-0`
+* `^0.x` := `>=0.0.0 <1.0.0-0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument. All
+options in this object are `false` by default. The options supported
+are:
+
+- `loose` Be more forgiving about not-quite-valid semver strings.
+ (Any resulting output will always be 100% strict compliant, of
+ course.) For backwards compatibility reasons, if the `options`
+ argument is a boolean value instead of an object, it is interpreted
+ to be the `loose` param.
+- `includePrerelease` Set to suppress the [default
+ behavior](https://github.com/npm/node-semver#prerelease-tags) of
+ excluding prerelease tagged versions from ranges unless they are
+ explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+ type (`major`, `premajor`, `minor`, `preminor`, `patch`,
+ `prepatch`, or `prerelease`), or null if it's not valid
+ * `premajor` in one call will bump the version up to the next major
+ version and down to a prerelease of that major version.
+ `preminor`, and `prepatch` work the same way.
+ * If called from a non-prerelease version, the `prerelease` will work the
+ same as `prepatch`. It increments the patch version, then makes a
+ prerelease. If the input version is already a prerelease it simply
+ increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+ if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+ or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+ a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+ even if they're not the exact same string. You already know how to
+ compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+ the corresponding function above. `"==="` and `"!=="` do simple
+ string comparison, but are included for completeness. Throws if an
+ invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
+ in descending order when passed to `Array.sort()`.
+* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
+ are equal. Sorts in ascending order if passed to `Array.sort()`.
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+ (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+ or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+ range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+ the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+ versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+ versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+ the bounds of the range in either the high or low direction. The
+ `hilo` argument must be either the string `'>'` or `'<'`. (This is
+ the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+* `simplifyRange(versions, range)`: Return a "simplified" range that
+ matches the same items in `versions` list as the range specified. Note
+ that it does *not* guarantee that it would match the same versions in all
+ cases, only for the set of versions provided. This is useful when
+ generating ranges by joining together multiple versions with `||`
+ programmatically, to provide the user with something a bit more
+ ergonomic. If the provided range is shorter in string-length than the
+ generated range, then that is returned.
+* `subset(subRange, superRange)`: Return `true` if the `subRange` range is
+ entirely contained by the `superRange` range.
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range! For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version, options)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`). Only text which lacks digits will fail coercion (`version one`
+is not valid). The maximum length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
+semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
+
+If the `options.rtl` flag is set, then `coerce` will return the right-most
+coercible tuple that does not share an ending index with a longer coercible
+tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
+`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
+any other overlapping SemVer tuple.
+
+### Clean
+
+* `clean(version)`: Clean a string to be a valid semver if possible
+
+This will return a cleaned and trimmed semver version. If the provided
+version is not valid a null will be returned. This does not work for
+ranges.
+
+ex.
+* `s.clean(' = v 2.1.5foo')`: `null`
+* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean(' = v 2.1.5-foo')`: `null`
+* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean('=v2.1.5')`: `'2.1.5'`
+* `s.clean(' =v2.1.5')`: `2.1.5`
+* `s.clean(' 2.1.5 ')`: `'2.1.5'`
+* `s.clean('~1.0.0')`: `null`
+
+## Constants
+
+As a convenience, helper constants are exported to provide information about what `node-semver` supports:
+
+### `RELEASE_TYPES`
+
+- major
+- premajor
+- minor
+- preminor
+- patch
+- prepatch
+- prerelease
+
+```
+const semver = require('semver');
+
+if (semver.RELEASE_TYPES.includes(arbitraryUserInput)) {
+ console.log('This is a valid release type!');
+} else {
+ console.warn('This is NOT a valid release type!');
+}
+```
+
+### `SEMVER_SPEC_VERSION`
+
+2.0.0
+
+```
+const semver = require('semver');
+
+console.log('We are currently using the semver specification version:', semver.SEMVER_SPEC_VERSION);
+```
+
+## Exported Modules
+
+<!--
+TODO: Make sure that all of these items are documented (classes aren't,
+eg), and then pull the module name into the documentation for that specific
+thing.
+-->
+
+You may pull in just the part of this semver utility that you need, if you
+are sensitive to packing and tree-shaking concerns. The main
+`require('semver')` export uses getter functions to lazily load the parts
+of the API that are used.
+
+The following modules are available:
+
+* `require('semver')`
+* `require('semver/classes')`
+* `require('semver/classes/comparator')`
+* `require('semver/classes/range')`
+* `require('semver/classes/semver')`
+* `require('semver/functions/clean')`
+* `require('semver/functions/cmp')`
+* `require('semver/functions/coerce')`
+* `require('semver/functions/compare')`
+* `require('semver/functions/compare-build')`
+* `require('semver/functions/compare-loose')`
+* `require('semver/functions/diff')`
+* `require('semver/functions/eq')`
+* `require('semver/functions/gt')`
+* `require('semver/functions/gte')`
+* `require('semver/functions/inc')`
+* `require('semver/functions/lt')`
+* `require('semver/functions/lte')`
+* `require('semver/functions/major')`
+* `require('semver/functions/minor')`
+* `require('semver/functions/neq')`
+* `require('semver/functions/parse')`
+* `require('semver/functions/patch')`
+* `require('semver/functions/prerelease')`
+* `require('semver/functions/rcompare')`
+* `require('semver/functions/rsort')`
+* `require('semver/functions/satisfies')`
+* `require('semver/functions/sort')`
+* `require('semver/functions/valid')`
+* `require('semver/ranges/gtr')`
+* `require('semver/ranges/intersects')`
+* `require('semver/ranges/ltr')`
+* `require('semver/ranges/max-satisfying')`
+* `require('semver/ranges/min-satisfying')`
+* `require('semver/ranges/min-version')`
+* `require('semver/ranges/outside')`
+* `require('semver/ranges/to-comparators')`
+* `require('semver/ranges/valid')`
+
diff --git a/node_modules/postcss-loader/node_modules/semver/bin/semver.js b/node_modules/postcss-loader/node_modules/semver/bin/semver.js
new file mode 100755
index 00000000..242b7ade
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/bin/semver.js
@@ -0,0 +1,197 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+const argv = process.argv.slice(2)
+
+let versions = []
+
+const range = []
+
+let inc = null
+
+const version = require('../package.json').version
+
+let loose = false
+
+let includePrerelease = false
+
+let coerce = false
+
+let rtl = false
+
+let identifier
+
+let identifierBase
+
+const semver = require('../')
+const parseOptions = require('../internal/parse-options')
+
+let reverse = false
+
+let options = {}
+
+const main = () => {
+ if (!argv.length) {
+ return help()
+ }
+ while (argv.length) {
+ let a = argv.shift()
+ const indexOfEqualSign = a.indexOf('=')
+ if (indexOfEqualSign !== -1) {
+ const value = a.slice(indexOfEqualSign + 1)
+ a = a.slice(0, indexOfEqualSign)
+ argv.unshift(value)
+ }
+ switch (a) {
+ case '-rv': case '-rev': case '--rev': case '--reverse':
+ reverse = true
+ break
+ case '-l': case '--loose':
+ loose = true
+ break
+ case '-p': case '--include-prerelease':
+ includePrerelease = true
+ break
+ case '-v': case '--version':
+ versions.push(argv.shift())
+ break
+ case '-i': case '--inc': case '--increment':
+ switch (argv[0]) {
+ case 'major': case 'minor': case 'patch': case 'prerelease':
+ case 'premajor': case 'preminor': case 'prepatch':
+ inc = argv.shift()
+ break
+ default:
+ inc = 'patch'
+ break
+ }
+ break
+ case '--preid':
+ identifier = argv.shift()
+ break
+ case '-r': case '--range':
+ range.push(argv.shift())
+ break
+ case '-n':
+ identifierBase = argv.shift()
+ if (identifierBase === 'false') {
+ identifierBase = false
+ }
+ break
+ case '-c': case '--coerce':
+ coerce = true
+ break
+ case '--rtl':
+ rtl = true
+ break
+ case '--ltr':
+ rtl = false
+ break
+ case '-h': case '--help': case '-?':
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ options = parseOptions({ loose, includePrerelease, rtl })
+
+ versions = versions.map((v) => {
+ return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+ }).filter((v) => {
+ return semver.valid(v)
+ })
+ if (!versions.length) {
+ return fail()
+ }
+ if (inc && (versions.length !== 1 || range.length)) {
+ return failInc()
+ }
+
+ for (let i = 0, l = range.length; i < l; i++) {
+ versions = versions.filter((v) => {
+ return semver.satisfies(v, range[i], options)
+ })
+ if (!versions.length) {
+ return fail()
+ }
+ }
+ return success(versions)
+}
+
+const failInc = () => {
+ console.error('--inc can only be used on a single version with no range')
+ fail()
+}
+
+const fail = () => process.exit(1)
+
+const success = () => {
+ const compare = reverse ? 'rcompare' : 'compare'
+ versions.sort((a, b) => {
+ return semver[compare](a, b, options)
+ }).map((v) => {
+ return semver.clean(v, options)
+ }).map((v) => {
+ return inc ? semver.inc(v, inc, options, identifier, identifierBase) : v
+ }).forEach((v, i, _) => {
+ console.log(v)
+ })
+}
+
+const help = () => console.log(
+`SemVer ${version}
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+ Print versions that match the specified range.
+
+-i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+--rtl
+ Coerce version strings right to left
+
+--ltr
+ Coerce version strings left to right (default)
+
+-n <base>
+ Base number to be used for the prerelease identifier.
+ Can be either 0 or 1, or false to omit the number altogether.
+ Defaults to 0.
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.`)
+
+main()
diff --git a/node_modules/postcss-loader/node_modules/semver/classes/comparator.js b/node_modules/postcss-loader/node_modules/semver/classes/comparator.js
new file mode 100644
index 00000000..3d39c0ee
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/classes/comparator.js
@@ -0,0 +1,141 @@
+const ANY = Symbol('SemVer ANY')
+// hoisted class for cyclic dependency
+class Comparator {
+ static get ANY () {
+ return ANY
+ }
+
+ constructor (comp, options) {
+ options = parseOptions(options)
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
+
+ comp = comp.trim().split(/\s+/).join(' ')
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
+
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
+
+ debug('comp', this)
+ }
+
+ parse (comp) {
+ const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ const m = comp.match(r)
+
+ if (!m) {
+ throw new TypeError(`Invalid comparator: ${comp}`)
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : ''
+ if (this.operator === '=') {
+ this.operator = ''
+ }
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
+ }
+ }
+
+ toString () {
+ return this.value
+ }
+
+ test (version) {
+ debug('Comparator.test', version, this.options.loose)
+
+ if (this.semver === ANY || version === ANY) {
+ return true
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options)
+ }
+
+ intersects (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true
+ }
+ return new Range(comp.value, options).test(this.value)
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true
+ }
+ return new Range(this.value, options).test(comp.semver)
+ }
+
+ options = parseOptions(options)
+
+ // Special cases where nothing can possibly be lower
+ if (options.includePrerelease &&
+ (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {
+ return false
+ }
+ if (!options.includePrerelease &&
+ (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {
+ return false
+ }
+
+ // Same direction increasing (> or >=)
+ if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {
+ return true
+ }
+ // Same direction decreasing (< or <=)
+ if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {
+ return true
+ }
+ // same SemVer and both sides are inclusive (<= or >=)
+ if (
+ (this.semver.version === comp.semver.version) &&
+ this.operator.includes('=') && comp.operator.includes('=')) {
+ return true
+ }
+ // opposite directions less than
+ if (cmp(this.semver, '<', comp.semver, options) &&
+ this.operator.startsWith('>') && comp.operator.startsWith('<')) {
+ return true
+ }
+ // opposite directions greater than
+ if (cmp(this.semver, '>', comp.semver, options) &&
+ this.operator.startsWith('<') && comp.operator.startsWith('>')) {
+ return true
+ }
+ return false
+ }
+}
+
+module.exports = Comparator
+
+const parseOptions = require('../internal/parse-options')
+const { safeRe: re, t } = require('../internal/re')
+const cmp = require('../functions/cmp')
+const debug = require('../internal/debug')
+const SemVer = require('./semver')
+const Range = require('./range')
diff --git a/node_modules/postcss-loader/node_modules/semver/classes/index.js b/node_modules/postcss-loader/node_modules/semver/classes/index.js
new file mode 100644
index 00000000..5e3f5c9b
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/classes/index.js
@@ -0,0 +1,5 @@
+module.exports = {
+ SemVer: require('./semver.js'),
+ Range: require('./range.js'),
+ Comparator: require('./comparator.js'),
+}
diff --git a/node_modules/postcss-loader/node_modules/semver/classes/range.js b/node_modules/postcss-loader/node_modules/semver/classes/range.js
new file mode 100644
index 00000000..7e7c4141
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/classes/range.js
@@ -0,0 +1,539 @@
+// hoisted class for cyclic dependency
+class Range {
+ constructor (range, options) {
+ options = parseOptions(options)
+
+ if (range instanceof Range) {
+ if (
+ range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease
+ ) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
+
+ if (range instanceof Comparator) {
+ // just put it in the set and return
+ this.raw = range.value
+ this.set = [[range]]
+ this.format()
+ return this
+ }
+
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
+
+ // First reduce all whitespace as much as possible so we do not have to rely
+ // on potentially slow regexes like \s*. This is then stored and used for
+ // future error messages as well.
+ this.raw = range
+ .trim()
+ .split(/\s+/)
+ .join(' ')
+
+ // First, split on ||
+ this.set = this.raw
+ .split('||')
+ // map the range to a 2d array of comparators
+ .map(r => this.parseRange(r.trim()))
+ // throw out any comparator lists that are empty
+ // this generally means that it was not a valid range, which is allowed
+ // in loose mode, but will still throw if the WHOLE range is invalid.
+ .filter(c => c.length)
+
+ if (!this.set.length) {
+ throw new TypeError(`Invalid SemVer Range: ${this.raw}`)
+ }
+
+ // if we have any that are not the null set, throw out null sets.
+ if (this.set.length > 1) {
+ // keep the first one, in case they're all null sets
+ const first = this.set[0]
+ this.set = this.set.filter(c => !isNullSet(c[0]))
+ if (this.set.length === 0) {
+ this.set = [first]
+ } else if (this.set.length > 1) {
+ // if we have any that are *, then the range is just *
+ for (const c of this.set) {
+ if (c.length === 1 && isAny(c[0])) {
+ this.set = [c]
+ break
+ }
+ }
+ }
+ }
+
+ this.format()
+ }
+
+ format () {
+ this.range = this.set
+ .map((comps) => comps.join(' ').trim())
+ .join('||')
+ .trim()
+ return this.range
+ }
+
+ toString () {
+ return this.range
+ }
+
+ parseRange (range) {
+ // memoize range parsing for performance.
+ // this is a very hot path, and fully deterministic.
+ const memoOpts =
+ (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |
+ (this.options.loose && FLAG_LOOSE)
+ const memoKey = memoOpts + ':' + range
+ const cached = cache.get(memoKey)
+ if (cached) {
+ return cached
+ }
+
+ const loose = this.options.loose
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
+ debug('hyphen replace', range)
+
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range)
+
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
+ debug('tilde trim', range)
+
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace)
+ debug('caret trim', range)
+
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ let rangeList = range
+ .split(' ')
+ .map(comp => parseComparator(comp, this.options))
+ .join(' ')
+ .split(/\s+/)
+ // >=0.0.0 is equivalent to *
+ .map(comp => replaceGTE0(comp, this.options))
+
+ if (loose) {
+ // in loose mode, throw out any that are not valid comparators
+ rangeList = rangeList.filter(comp => {
+ debug('loose invalid filter', comp, this.options)
+ return !!comp.match(re[t.COMPARATORLOOSE])
+ })
+ }
+ debug('range list', rangeList)
+
+ // if any comparators are the null set, then replace with JUST null set
+ // if more than one comparator, remove any * comparators
+ // also, don't include the same comparator more than once
+ const rangeMap = new Map()
+ const comparators = rangeList.map(comp => new Comparator(comp, this.options))
+ for (const comp of comparators) {
+ if (isNullSet(comp)) {
+ return [comp]
+ }
+ rangeMap.set(comp.value, comp)
+ }
+ if (rangeMap.size > 1 && rangeMap.has('')) {
+ rangeMap.delete('')
+ }
+
+ const result = [...rangeMap.values()]
+ cache.set(memoKey, result)
+ return result
+ }
+
+ intersects (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
+
+ return this.set.some((thisComparators) => {
+ return (
+ isSatisfiable(thisComparators, options) &&
+ range.set.some((rangeComparators) => {
+ return (
+ isSatisfiable(rangeComparators, options) &&
+ thisComparators.every((thisComparator) => {
+ return rangeComparators.every((rangeComparator) => {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ )
+ })
+ )
+ })
+ }
+
+ // if ANY of the sets match ALL of its comparators, then pass
+ test (version) {
+ if (!version) {
+ return false
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ for (let i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+ }
+}
+
+module.exports = Range
+
+const LRU = require('lru-cache')
+const cache = new LRU({ max: 1000 })
+
+const parseOptions = require('../internal/parse-options')
+const Comparator = require('./comparator')
+const debug = require('../internal/debug')
+const SemVer = require('./semver')
+const {
+ safeRe: re,
+ t,
+ comparatorTrimReplace,
+ tildeTrimReplace,
+ caretTrimReplace,
+} = require('../internal/re')
+const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')
+
+const isNullSet = c => c.value === '<0.0.0-0'
+const isAny = c => c.value === ''
+
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+const isSatisfiable = (comparators, options) => {
+ let result = true
+ const remainingComparators = comparators.slice()
+ let testComparator = remainingComparators.pop()
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every((otherComparator) => {
+ return testComparator.intersects(otherComparator, options)
+ })
+
+ testComparator = remainingComparators.pop()
+ }
+
+ return result
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+const parseComparator = (comp, options) => {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
+
+const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
+// ~0.0.1 --> >=0.0.1 <0.1.0-0
+const replaceTildes = (comp, options) => {
+ return comp
+ .trim()
+ .split(/\s+/)
+ .map((c) => replaceTilde(c, options))
+ .join(' ')
+}
+
+const replaceTilde = (comp, options) => {
+ const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug('tilde', comp, _, M, m, p, pr)
+ let ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0 <${+M + 1}.0.0-0`
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0-0
+ ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${+m + 1}.0-0`
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0-0
+ ret = `>=${M}.${m}.${p
+ } <${M}.${+m + 1}.0-0`
+ }
+
+ debug('tilde return', ret)
+ return ret
+ })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0
+// ^1.2.3 --> >=1.2.3 <2.0.0-0
+// ^1.2.0 --> >=1.2.0 <2.0.0-0
+// ^0.0.1 --> >=0.0.1 <0.0.2-0
+// ^0.1.0 --> >=0.1.0 <0.2.0-0
+const replaceCarets = (comp, options) => {
+ return comp
+ .trim()
+ .split(/\s+/)
+ .map((c) => replaceCaret(c, options))
+ .join(' ')
+}
+
+const replaceCaret = (comp, options) => {
+ debug('caret', comp, options)
+ const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
+ const z = options.includePrerelease ? '-0' : ''
+ return comp.replace(r, (_, M, m, p, pr) => {
+ debug('caret', comp, _, M, m, p, pr)
+ let ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`
+ } else {
+ ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${m}.${+p + 1}-0`
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${M}.${+m + 1}.0-0`
+ }
+ } else {
+ ret = `>=${M}.${m}.${p}-${pr
+ } <${+M + 1}.0.0-0`
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = `>=${M}.${m}.${p
+ }${z} <${M}.${m}.${+p + 1}-0`
+ } else {
+ ret = `>=${M}.${m}.${p
+ }${z} <${M}.${+m + 1}.0-0`
+ }
+ } else {
+ ret = `>=${M}.${m}.${p
+ } <${+M + 1}.0.0-0`
+ }
+ }
+
+ debug('caret return', ret)
+ return ret
+ })
+}
+
+const replaceXRanges = (comp, options) => {
+ debug('replaceXRanges', comp, options)
+ return comp
+ .split(/\s+/)
+ .map((c) => replaceXRange(c, options))
+ .join(' ')
+}
+
+const replaceXRange = (comp, options) => {
+ comp = comp.trim()
+ const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
+ return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ const xM = isX(M)
+ const xm = xM || isX(m)
+ const xp = xm || isX(p)
+ const anyX = xp
+
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
+
+ // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+ pr = options.includePrerelease ? '-0' : ''
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
+
+ if (gtlt === '<') {
+ pr = '-0'
+ }
+
+ ret = `${gtlt + M}.${m}.${p}${pr}`
+ } else if (xm) {
+ ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`
+ } else if (xp) {
+ ret = `>=${M}.${m}.0${pr
+ } <${M}.${+m + 1}.0-0`
+ }
+
+ debug('xRange return', ret)
+
+ return ret
+ })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+const replaceStars = (comp, options) => {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp
+ .trim()
+ .replace(re[t.STAR], '')
+}
+
+const replaceGTE0 = (comp, options) => {
+ debug('replaceGTE0', comp, options)
+ return comp
+ .trim()
+ .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')
+}
+
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0-0
+const hyphenReplace = incPr => ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) => {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = `>=${fM}.0.0${incPr ? '-0' : ''}`
+ } else if (isX(fp)) {
+ from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`
+ } else if (fpr) {
+ from = `>=${from}`
+ } else {
+ from = `>=${from}${incPr ? '-0' : ''}`
+ }
+
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = `<${+tM + 1}.0.0-0`
+ } else if (isX(tp)) {
+ to = `<${tM}.${+tm + 1}.0-0`
+ } else if (tpr) {
+ to = `<=${tM}.${tm}.${tp}-${tpr}`
+ } else if (incPr) {
+ to = `<${tM}.${tm}.${+tp + 1}-0`
+ } else {
+ to = `<=${to}`
+ }
+
+ return `${from} ${to}`.trim()
+}
+
+const testSet = (set, version, options) => {
+ for (let i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (let i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === Comparator.ANY) {
+ continue
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ const allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
+
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
+
+ return true
+}
diff --git a/node_modules/postcss-loader/node_modules/semver/classes/semver.js b/node_modules/postcss-loader/node_modules/semver/classes/semver.js
new file mode 100644
index 00000000..84e84590
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/classes/semver.js
@@ -0,0 +1,302 @@
+const debug = require('../internal/debug')
+const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')
+const { safeRe: re, t } = require('../internal/re')
+
+const parseOptions = require('../internal/parse-options')
+const { compareIdentifiers } = require('../internal/identifiers')
+class SemVer {
+ constructor (version, options) {
+ options = parseOptions(options)
+
+ if (version instanceof SemVer) {
+ if (version.loose === !!options.loose &&
+ version.includePrerelease === !!options.includePrerelease) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError(
+ `version is longer than ${MAX_LENGTH} characters`
+ )
+ }
+
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+ // this isn't actually relevant for versions, but keep it so that we
+ // don't run into trouble passing this.options around.
+ this.includePrerelease = !!options.includePrerelease
+
+ const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+
+ if (!m) {
+ throw new TypeError(`Invalid Version: ${version}`)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map((id) => {
+ if (/^[0-9]+$/.test(id)) {
+ const num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+ }
+
+ format () {
+ this.version = `${this.major}.${this.minor}.${this.patch}`
+ if (this.prerelease.length) {
+ this.version += `-${this.prerelease.join('.')}`
+ }
+ return this.version
+ }
+
+ toString () {
+ return this.version
+ }
+
+ compare (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ if (typeof other === 'string' && other === this.version) {
+ return 0
+ }
+ other = new SemVer(other, this.options)
+ }
+
+ if (other.version === this.version) {
+ return 0
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+ }
+
+ compareMain (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return (
+ compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+ )
+ }
+
+ comparePre (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+
+ let i = 0
+ do {
+ const a = this.prerelease[i]
+ const b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+ }
+
+ compareBuild (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ let i = 0
+ do {
+ const a = this.build[i]
+ const b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+ }
+
+ // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+ inc (release, identifier, identifierBase) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier, identifierBase)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier, identifierBase)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier, identifierBase)
+ this.inc('pre', identifier, identifierBase)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier, identifierBase)
+ }
+ this.inc('pre', identifier, identifierBase)
+ break
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (
+ this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0
+ ) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
+ case 'pre': {
+ const base = Number(identifierBase) ? 1 : 0
+
+ if (!identifier && identifierBase === false) {
+ throw new Error('invalid increment argument: identifier is empty')
+ }
+
+ if (this.prerelease.length === 0) {
+ this.prerelease = [base]
+ } else {
+ let i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ if (identifier === this.prerelease.join('.') && identifierBase === false) {
+ throw new Error('invalid increment argument: identifier already exists')
+ }
+ this.prerelease.push(base)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ let prerelease = [identifier, base]
+ if (identifierBase === false) {
+ prerelease = [identifier]
+ }
+ if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = prerelease
+ }
+ } else {
+ this.prerelease = prerelease
+ }
+ }
+ break
+ }
+ default:
+ throw new Error(`invalid increment argument: ${release}`)
+ }
+ this.raw = this.format()
+ if (this.build.length) {
+ this.raw += `+${this.build.join('.')}`
+ }
+ return this
+ }
+}
+
+module.exports = SemVer
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/clean.js b/node_modules/postcss-loader/node_modules/semver/functions/clean.js
new file mode 100644
index 00000000..811fe6b8
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/clean.js
@@ -0,0 +1,6 @@
+const parse = require('./parse')
+const clean = (version, options) => {
+ const s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
+module.exports = clean
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/cmp.js b/node_modules/postcss-loader/node_modules/semver/functions/cmp.js
new file mode 100644
index 00000000..40119094
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/cmp.js
@@ -0,0 +1,52 @@
+const eq = require('./eq')
+const neq = require('./neq')
+const gt = require('./gt')
+const gte = require('./gte')
+const lt = require('./lt')
+const lte = require('./lte')
+
+const cmp = (a, op, b, loose) => {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') {
+ a = a.version
+ }
+ if (typeof b === 'object') {
+ b = b.version
+ }
+ return a === b
+
+ case '!==':
+ if (typeof a === 'object') {
+ a = a.version
+ }
+ if (typeof b === 'object') {
+ b = b.version
+ }
+ return a !== b
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
+
+ case '!=':
+ return neq(a, b, loose)
+
+ case '>':
+ return gt(a, b, loose)
+
+ case '>=':
+ return gte(a, b, loose)
+
+ case '<':
+ return lt(a, b, loose)
+
+ case '<=':
+ return lte(a, b, loose)
+
+ default:
+ throw new TypeError(`Invalid operator: ${op}`)
+ }
+}
+module.exports = cmp
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/coerce.js b/node_modules/postcss-loader/node_modules/semver/functions/coerce.js
new file mode 100644
index 00000000..febbff9c
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/coerce.js
@@ -0,0 +1,52 @@
+const SemVer = require('../classes/semver')
+const parse = require('./parse')
+const { safeRe: re, t } = require('../internal/re')
+
+const coerce = (version, options) => {
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version === 'number') {
+ version = String(version)
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ options = options || {}
+
+ let match = null
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE])
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ let next
+ while ((next = re[t.COERCERTL].exec(version)) &&
+ (!match || match.index + match[0].length !== version.length)
+ ) {
+ if (!match ||
+ next.index + next[0].length !== match.index + match[0].length) {
+ match = next
+ }
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+ }
+ // leave it in a clean state
+ re[t.COERCERTL].lastIndex = -1
+ }
+
+ if (match === null) {
+ return null
+ }
+
+ return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
+}
+module.exports = coerce
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/compare-build.js b/node_modules/postcss-loader/node_modules/semver/functions/compare-build.js
new file mode 100644
index 00000000..9eb881be
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/compare-build.js
@@ -0,0 +1,7 @@
+const SemVer = require('../classes/semver')
+const compareBuild = (a, b, loose) => {
+ const versionA = new SemVer(a, loose)
+ const versionB = new SemVer(b, loose)
+ return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+module.exports = compareBuild
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/compare-loose.js b/node_modules/postcss-loader/node_modules/semver/functions/compare-loose.js
new file mode 100644
index 00000000..4881fbe0
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/compare-loose.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const compareLoose = (a, b) => compare(a, b, true)
+module.exports = compareLoose
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/compare.js b/node_modules/postcss-loader/node_modules/semver/functions/compare.js
new file mode 100644
index 00000000..748b7afa
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/compare.js
@@ -0,0 +1,5 @@
+const SemVer = require('../classes/semver')
+const compare = (a, b, loose) =>
+ new SemVer(a, loose).compare(new SemVer(b, loose))
+
+module.exports = compare
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/diff.js b/node_modules/postcss-loader/node_modules/semver/functions/diff.js
new file mode 100644
index 00000000..fc224e30
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/diff.js
@@ -0,0 +1,65 @@
+const parse = require('./parse.js')
+
+const diff = (version1, version2) => {
+ const v1 = parse(version1, null, true)
+ const v2 = parse(version2, null, true)
+ const comparison = v1.compare(v2)
+
+ if (comparison === 0) {
+ return null
+ }
+
+ const v1Higher = comparison > 0
+ const highVersion = v1Higher ? v1 : v2
+ const lowVersion = v1Higher ? v2 : v1
+ const highHasPre = !!highVersion.prerelease.length
+ const lowHasPre = !!lowVersion.prerelease.length
+
+ if (lowHasPre && !highHasPre) {
+ // Going from prerelease -> no prerelease requires some special casing
+
+ // If the low version has only a major, then it will always be a major
+ // Some examples:
+ // 1.0.0-1 -> 1.0.0
+ // 1.0.0-1 -> 1.1.1
+ // 1.0.0-1 -> 2.0.0
+ if (!lowVersion.patch && !lowVersion.minor) {
+ return 'major'
+ }
+
+ // Otherwise it can be determined by checking the high version
+
+ if (highVersion.patch) {
+ // anything higher than a patch bump would result in the wrong version
+ return 'patch'
+ }
+
+ if (highVersion.minor) {
+ // anything higher than a minor bump would result in the wrong version
+ return 'minor'
+ }
+
+ // bumping major/minor/patch all have same result
+ return 'major'
+ }
+
+ // add the `pre` prefix if we are going to a prerelease version
+ const prefix = highHasPre ? 'pre' : ''
+
+ if (v1.major !== v2.major) {
+ return prefix + 'major'
+ }
+
+ if (v1.minor !== v2.minor) {
+ return prefix + 'minor'
+ }
+
+ if (v1.patch !== v2.patch) {
+ return prefix + 'patch'
+ }
+
+ // high and low are preleases
+ return 'prerelease'
+}
+
+module.exports = diff
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/eq.js b/node_modules/postcss-loader/node_modules/semver/functions/eq.js
new file mode 100644
index 00000000..271fed97
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/eq.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const eq = (a, b, loose) => compare(a, b, loose) === 0
+module.exports = eq
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/gt.js b/node_modules/postcss-loader/node_modules/semver/functions/gt.js
new file mode 100644
index 00000000..d9b2156d
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/gt.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const gt = (a, b, loose) => compare(a, b, loose) > 0
+module.exports = gt
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/gte.js b/node_modules/postcss-loader/node_modules/semver/functions/gte.js
new file mode 100644
index 00000000..5aeaa634
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/gte.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const gte = (a, b, loose) => compare(a, b, loose) >= 0
+module.exports = gte
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/inc.js b/node_modules/postcss-loader/node_modules/semver/functions/inc.js
new file mode 100644
index 00000000..7670b1be
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/inc.js
@@ -0,0 +1,19 @@
+const SemVer = require('../classes/semver')
+
+const inc = (version, release, options, identifier, identifierBase) => {
+ if (typeof (options) === 'string') {
+ identifierBase = identifier
+ identifier = options
+ options = undefined
+ }
+
+ try {
+ return new SemVer(
+ version instanceof SemVer ? version.version : version,
+ options
+ ).inc(release, identifier, identifierBase).version
+ } catch (er) {
+ return null
+ }
+}
+module.exports = inc
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/lt.js b/node_modules/postcss-loader/node_modules/semver/functions/lt.js
new file mode 100644
index 00000000..b440ab7d
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/lt.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const lt = (a, b, loose) => compare(a, b, loose) < 0
+module.exports = lt
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/lte.js b/node_modules/postcss-loader/node_modules/semver/functions/lte.js
new file mode 100644
index 00000000..6dcc9565
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/lte.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const lte = (a, b, loose) => compare(a, b, loose) <= 0
+module.exports = lte
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/major.js b/node_modules/postcss-loader/node_modules/semver/functions/major.js
new file mode 100644
index 00000000..4283165e
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/major.js
@@ -0,0 +1,3 @@
+const SemVer = require('../classes/semver')
+const major = (a, loose) => new SemVer(a, loose).major
+module.exports = major
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/minor.js b/node_modules/postcss-loader/node_modules/semver/functions/minor.js
new file mode 100644
index 00000000..57b3455f
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/minor.js
@@ -0,0 +1,3 @@
+const SemVer = require('../classes/semver')
+const minor = (a, loose) => new SemVer(a, loose).minor
+module.exports = minor
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/neq.js b/node_modules/postcss-loader/node_modules/semver/functions/neq.js
new file mode 100644
index 00000000..f944c015
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/neq.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const neq = (a, b, loose) => compare(a, b, loose) !== 0
+module.exports = neq
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/parse.js b/node_modules/postcss-loader/node_modules/semver/functions/parse.js
new file mode 100644
index 00000000..459b3b17
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/parse.js
@@ -0,0 +1,16 @@
+const SemVer = require('../classes/semver')
+const parse = (version, options, throwErrors = false) => {
+ if (version instanceof SemVer) {
+ return version
+ }
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ if (!throwErrors) {
+ return null
+ }
+ throw er
+ }
+}
+
+module.exports = parse
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/patch.js b/node_modules/postcss-loader/node_modules/semver/functions/patch.js
new file mode 100644
index 00000000..63afca25
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/patch.js
@@ -0,0 +1,3 @@
+const SemVer = require('../classes/semver')
+const patch = (a, loose) => new SemVer(a, loose).patch
+module.exports = patch
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/prerelease.js b/node_modules/postcss-loader/node_modules/semver/functions/prerelease.js
new file mode 100644
index 00000000..06aa1324
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/prerelease.js
@@ -0,0 +1,6 @@
+const parse = require('./parse')
+const prerelease = (version, options) => {
+ const parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+module.exports = prerelease
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/rcompare.js b/node_modules/postcss-loader/node_modules/semver/functions/rcompare.js
new file mode 100644
index 00000000..0ac509e7
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/rcompare.js
@@ -0,0 +1,3 @@
+const compare = require('./compare')
+const rcompare = (a, b, loose) => compare(b, a, loose)
+module.exports = rcompare
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/rsort.js b/node_modules/postcss-loader/node_modules/semver/functions/rsort.js
new file mode 100644
index 00000000..82404c5c
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/rsort.js
@@ -0,0 +1,3 @@
+const compareBuild = require('./compare-build')
+const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))
+module.exports = rsort
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/satisfies.js b/node_modules/postcss-loader/node_modules/semver/functions/satisfies.js
new file mode 100644
index 00000000..50af1c19
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/satisfies.js
@@ -0,0 +1,10 @@
+const Range = require('../classes/range')
+const satisfies = (version, range, options) => {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
+ }
+ return range.test(version)
+}
+module.exports = satisfies
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/sort.js b/node_modules/postcss-loader/node_modules/semver/functions/sort.js
new file mode 100644
index 00000000..4d10917a
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/sort.js
@@ -0,0 +1,3 @@
+const compareBuild = require('./compare-build')
+const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))
+module.exports = sort
diff --git a/node_modules/postcss-loader/node_modules/semver/functions/valid.js b/node_modules/postcss-loader/node_modules/semver/functions/valid.js
new file mode 100644
index 00000000..f27bae10
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/functions/valid.js
@@ -0,0 +1,6 @@
+const parse = require('./parse')
+const valid = (version, options) => {
+ const v = parse(version, options)
+ return v ? v.version : null
+}
+module.exports = valid
diff --git a/node_modules/postcss-loader/node_modules/semver/index.js b/node_modules/postcss-loader/node_modules/semver/index.js
new file mode 100644
index 00000000..86d42ac1
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/index.js
@@ -0,0 +1,89 @@
+// just pre-load all the stuff that index.js lazily exports
+const internalRe = require('./internal/re')
+const constants = require('./internal/constants')
+const SemVer = require('./classes/semver')
+const identifiers = require('./internal/identifiers')
+const parse = require('./functions/parse')
+const valid = require('./functions/valid')
+const clean = require('./functions/clean')
+const inc = require('./functions/inc')
+const diff = require('./functions/diff')
+const major = require('./functions/major')
+const minor = require('./functions/minor')
+const patch = require('./functions/patch')
+const prerelease = require('./functions/prerelease')
+const compare = require('./functions/compare')
+const rcompare = require('./functions/rcompare')
+const compareLoose = require('./functions/compare-loose')
+const compareBuild = require('./functions/compare-build')
+const sort = require('./functions/sort')
+const rsort = require('./functions/rsort')
+const gt = require('./functions/gt')
+const lt = require('./functions/lt')
+const eq = require('./functions/eq')
+const neq = require('./functions/neq')
+const gte = require('./functions/gte')
+const lte = require('./functions/lte')
+const cmp = require('./functions/cmp')
+const coerce = require('./functions/coerce')
+const Comparator = require('./classes/comparator')
+const Range = require('./classes/range')
+const satisfies = require('./functions/satisfies')
+const toComparators = require('./ranges/to-comparators')
+const maxSatisfying = require('./ranges/max-satisfying')
+const minSatisfying = require('./ranges/min-satisfying')
+const minVersion = require('./ranges/min-version')
+const validRange = require('./ranges/valid')
+const outside = require('./ranges/outside')
+const gtr = require('./ranges/gtr')
+const ltr = require('./ranges/ltr')
+const intersects = require('./ranges/intersects')
+const simplifyRange = require('./ranges/simplify')
+const subset = require('./ranges/subset')
+module.exports = {
+ parse,
+ valid,
+ clean,
+ inc,
+ diff,
+ major,
+ minor,
+ patch,
+ prerelease,
+ compare,
+ rcompare,
+ compareLoose,
+ compareBuild,
+ sort,
+ rsort,
+ gt,
+ lt,
+ eq,
+ neq,
+ gte,
+ lte,
+ cmp,
+ coerce,
+ Comparator,
+ Range,
+ satisfies,
+ toComparators,
+ maxSatisfying,
+ minSatisfying,
+ minVersion,
+ validRange,
+ outside,
+ gtr,
+ ltr,
+ intersects,
+ simplifyRange,
+ subset,
+ SemVer,
+ re: internalRe.re,
+ src: internalRe.src,
+ tokens: internalRe.t,
+ SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
+ RELEASE_TYPES: constants.RELEASE_TYPES,
+ compareIdentifiers: identifiers.compareIdentifiers,
+ rcompareIdentifiers: identifiers.rcompareIdentifiers,
+}
diff --git a/node_modules/postcss-loader/node_modules/semver/internal/constants.js b/node_modules/postcss-loader/node_modules/semver/internal/constants.js
new file mode 100644
index 00000000..94be1c57
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/internal/constants.js
@@ -0,0 +1,35 @@
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+const SEMVER_SPEC_VERSION = '2.0.0'
+
+const MAX_LENGTH = 256
+const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+/* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+const MAX_SAFE_COMPONENT_LENGTH = 16
+
+// Max safe length for a build identifier. The max length minus 6 characters for
+// the shortest version with a build 0.0.0+BUILD.
+const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
+
+const RELEASE_TYPES = [
+ 'major',
+ 'premajor',
+ 'minor',
+ 'preminor',
+ 'patch',
+ 'prepatch',
+ 'prerelease',
+]
+
+module.exports = {
+ MAX_LENGTH,
+ MAX_SAFE_COMPONENT_LENGTH,
+ MAX_SAFE_BUILD_LENGTH,
+ MAX_SAFE_INTEGER,
+ RELEASE_TYPES,
+ SEMVER_SPEC_VERSION,
+ FLAG_INCLUDE_PRERELEASE: 0b001,
+ FLAG_LOOSE: 0b010,
+}
diff --git a/node_modules/postcss-loader/node_modules/semver/internal/debug.js b/node_modules/postcss-loader/node_modules/semver/internal/debug.js
new file mode 100644
index 00000000..1c00e136
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/internal/debug.js
@@ -0,0 +1,9 @@
+const debug = (
+ typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)
+) ? (...args) => console.error('SEMVER', ...args)
+ : () => {}
+
+module.exports = debug
diff --git a/node_modules/postcss-loader/node_modules/semver/internal/identifiers.js b/node_modules/postcss-loader/node_modules/semver/internal/identifiers.js
new file mode 100644
index 00000000..e612d0a3
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/internal/identifiers.js
@@ -0,0 +1,23 @@
+const numeric = /^[0-9]+$/
+const compareIdentifiers = (a, b) => {
+ const anum = numeric.test(a)
+ const bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
+
+const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
+
+module.exports = {
+ compareIdentifiers,
+ rcompareIdentifiers,
+}
diff --git a/node_modules/postcss-loader/node_modules/semver/internal/parse-options.js b/node_modules/postcss-loader/node_modules/semver/internal/parse-options.js
new file mode 100644
index 00000000..10d64ce0
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/internal/parse-options.js
@@ -0,0 +1,15 @@
+// parse out just the options we care about
+const looseOption = Object.freeze({ loose: true })
+const emptyOpts = Object.freeze({ })
+const parseOptions = options => {
+ if (!options) {
+ return emptyOpts
+ }
+
+ if (typeof options !== 'object') {
+ return looseOption
+ }
+
+ return options
+}
+module.exports = parseOptions
diff --git a/node_modules/postcss-loader/node_modules/semver/internal/re.js b/node_modules/postcss-loader/node_modules/semver/internal/re.js
new file mode 100644
index 00000000..21150b3e
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/internal/re.js
@@ -0,0 +1,212 @@
+const {
+ MAX_SAFE_COMPONENT_LENGTH,
+ MAX_SAFE_BUILD_LENGTH,
+ MAX_LENGTH,
+} = require('./constants')
+const debug = require('./debug')
+exports = module.exports = {}
+
+// The actual regexps go on exports.re
+const re = exports.re = []
+const safeRe = exports.safeRe = []
+const src = exports.src = []
+const t = exports.t = {}
+let R = 0
+
+const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
+
+// Replace some greedy regex tokens to prevent regex dos issues. These regex are
+// used internally via the safeRe object since all inputs in this library get
+// normalized first to trim and collapse all extra whitespace. The original
+// regexes are exported for userland consumption and lower level usage. A
+// future breaking change could export the safer regex only with a note that
+// all input should have extra whitespace removed.
+const safeRegexReplacements = [
+ ['\\s', 1],
+ ['\\d', MAX_LENGTH],
+ [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
+]
+
+const makeSafeRegex = (value) => {
+ for (const [token, max] of safeRegexReplacements) {
+ value = value
+ .split(`${token}*`).join(`${token}{0,${max}}`)
+ .split(`${token}+`).join(`${token}{1,${max}}`)
+ }
+ return value
+}
+
+const createToken = (name, value, isGlobal) => {
+ const safe = makeSafeRegex(value)
+ const index = R++
+ debug(name, index, value)
+ t[name] = index
+ src[index] = value
+ re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
+ safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
+createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
+ `(${src[t.NUMERICIDENTIFIER]})\\.` +
+ `(${src[t.NUMERICIDENTIFIER]})`)
+
+createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
+ `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
+ `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
+}|${src[t.NONNUMERICIDENTIFIER]})`)
+
+createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
+}|${src[t.NONNUMERICIDENTIFIER]})`)
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
+}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
+
+createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
+}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
+}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
+}${src[t.PRERELEASE]}?${
+ src[t.BUILD]}?`)
+
+createToken('FULL', `^${src[t.FULLPLAIN]}$`)
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
+}${src[t.PRERELEASELOOSE]}?${
+ src[t.BUILD]}?`)
+
+createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
+
+createToken('GTLT', '((?:<|>)?=?)')
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
+createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
+
+createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:${src[t.PRERELEASE]})?${
+ src[t.BUILD]}?` +
+ `)?)?`)
+
+createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:${src[t.PRERELEASELOOSE]})?${
+ src[t.BUILD]}?` +
+ `)?)?`)
+
+createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
+createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+createToken('COERCE', `${'(^|[^\\d])' +
+ '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
+ `(?:$|[^\\d])`)
+createToken('COERCERTL', src[t.COERCE], true)
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+createToken('LONETILDE', '(?:~>?)')
+
+createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
+exports.tildeTrimReplace = '$1~'
+
+createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
+createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+createToken('LONECARET', '(?:\\^)')
+
+createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
+exports.caretTrimReplace = '$1^'
+
+createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
+createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
+createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
+}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
+exports.comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
+ `\\s+-\\s+` +
+ `(${src[t.XRANGEPLAIN]})` +
+ `\\s*$`)
+
+createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
+ `\\s+-\\s+` +
+ `(${src[t.XRANGEPLAINLOOSE]})` +
+ `\\s*$`)
+
+// Star ranges basically just allow anything at all.
+createToken('STAR', '(<|>)?=?\\s*\\*')
+// >=0.0.0 is like a star
+createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
+createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
diff --git a/node_modules/postcss-loader/node_modules/semver/package.json b/node_modules/postcss-loader/node_modules/semver/package.json
new file mode 100644
index 00000000..c145eca2
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/package.json
@@ -0,0 +1,87 @@
+{
+ "name": "semver",
+ "version": "7.5.4",
+ "description": "The semantic version parser used by npm.",
+ "main": "index.js",
+ "scripts": {
+ "test": "tap",
+ "snap": "tap",
+ "lint": "eslint \"**/*.js\"",
+ "postlint": "template-oss-check",
+ "lintfix": "npm run lint -- --fix",
+ "posttest": "npm run lint",
+ "template-oss-apply": "template-oss-apply --force"
+ },
+ "devDependencies": {
+ "@npmcli/eslint-config": "^4.0.0",
+ "@npmcli/template-oss": "4.17.0",
+ "tap": "^16.0.0"
+ },
+ "license": "ISC",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/npm/node-semver.git"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "files": [
+ "bin/",
+ "lib/",
+ "classes/",
+ "functions/",
+ "internal/",
+ "ranges/",
+ "index.js",
+ "preload.js",
+ "range.bnf"
+ ],
+ "tap": {
+ "timeout": 30,
+ "coverage-map": "map.js",
+ "nyc-arg": [
+ "--exclude",
+ "tap-snapshots/**"
+ ]
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "author": "GitHub Inc.",
+ "templateOSS": {
+ "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
+ "version": "4.17.0",
+ "engines": ">=10",
+ "ciVersions": [
+ "10.0.0",
+ "10.x",
+ "12.x",
+ "14.x",
+ "16.x",
+ "18.x"
+ ],
+ "npmSpec": "8",
+ "distPaths": [
+ "classes/",
+ "functions/",
+ "internal/",
+ "ranges/",
+ "index.js",
+ "preload.js",
+ "range.bnf"
+ ],
+ "allowPaths": [
+ "/classes/",
+ "/functions/",
+ "/internal/",
+ "/ranges/",
+ "/index.js",
+ "/preload.js",
+ "/range.bnf"
+ ],
+ "publish": "true"
+ }
+}
diff --git a/node_modules/postcss-loader/node_modules/semver/preload.js b/node_modules/postcss-loader/node_modules/semver/preload.js
new file mode 100644
index 00000000..947cd4f7
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/preload.js
@@ -0,0 +1,2 @@
+// XXX remove in v8 or beyond
+module.exports = require('./index.js')
diff --git a/node_modules/postcss-loader/node_modules/semver/range.bnf b/node_modules/postcss-loader/node_modules/semver/range.bnf
new file mode 100644
index 00000000..d4c6ae0d
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | [1-9] ( [0-9] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/gtr.js b/node_modules/postcss-loader/node_modules/semver/ranges/gtr.js
new file mode 100644
index 00000000..db7e3559
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/gtr.js
@@ -0,0 +1,4 @@
+// Determine if version is greater than all the versions possible in the range.
+const outside = require('./outside')
+const gtr = (version, range, options) => outside(version, range, '>', options)
+module.exports = gtr
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/intersects.js b/node_modules/postcss-loader/node_modules/semver/ranges/intersects.js
new file mode 100644
index 00000000..e0e9b7ce
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/intersects.js
@@ -0,0 +1,7 @@
+const Range = require('../classes/range')
+const intersects = (r1, r2, options) => {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2, options)
+}
+module.exports = intersects
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/ltr.js b/node_modules/postcss-loader/node_modules/semver/ranges/ltr.js
new file mode 100644
index 00000000..528a885e
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/ltr.js
@@ -0,0 +1,4 @@
+const outside = require('./outside')
+// Determine if version is less than all the versions possible in the range
+const ltr = (version, range, options) => outside(version, range, '<', options)
+module.exports = ltr
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/max-satisfying.js b/node_modules/postcss-loader/node_modules/semver/ranges/max-satisfying.js
new file mode 100644
index 00000000..6e3d993c
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/max-satisfying.js
@@ -0,0 +1,25 @@
+const SemVer = require('../classes/semver')
+const Range = require('../classes/range')
+
+const maxSatisfying = (versions, range, options) => {
+ let max = null
+ let maxSV = null
+ let rangeObj = null
+ try {
+ rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach((v) => {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v
+ maxSV = new SemVer(max, options)
+ }
+ }
+ })
+ return max
+}
+module.exports = maxSatisfying
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/min-satisfying.js b/node_modules/postcss-loader/node_modules/semver/ranges/min-satisfying.js
new file mode 100644
index 00000000..9b60974e
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/min-satisfying.js
@@ -0,0 +1,24 @@
+const SemVer = require('../classes/semver')
+const Range = require('../classes/range')
+const minSatisfying = (versions, range, options) => {
+ let min = null
+ let minSV = null
+ let rangeObj = null
+ try {
+ rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach((v) => {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v
+ minSV = new SemVer(min, options)
+ }
+ }
+ })
+ return min
+}
+module.exports = minSatisfying
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/min-version.js b/node_modules/postcss-loader/node_modules/semver/ranges/min-version.js
new file mode 100644
index 00000000..350e1f78
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/min-version.js
@@ -0,0 +1,61 @@
+const SemVer = require('../classes/semver')
+const Range = require('../classes/range')
+const gt = require('../functions/gt')
+
+const minVersion = (range, loose) => {
+ range = new Range(range, loose)
+
+ let minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = null
+ for (let i = 0; i < range.set.length; ++i) {
+ const comparators = range.set[i]
+
+ let setMin = null
+ comparators.forEach((comparator) => {
+ // Clone to avoid manipulating the comparator's semver object.
+ const compver = new SemVer(comparator.semver.version)
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++
+ } else {
+ compver.prerelease.push(0)
+ }
+ compver.raw = compver.format()
+ /* fallthrough */
+ case '':
+ case '>=':
+ if (!setMin || gt(compver, setMin)) {
+ setMin = compver
+ }
+ break
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break
+ /* istanbul ignore next */
+ default:
+ throw new Error(`Unexpected operation: ${comparator.operator}`)
+ }
+ })
+ if (setMin && (!minver || gt(minver, setMin))) {
+ minver = setMin
+ }
+ }
+
+ if (minver && range.test(minver)) {
+ return minver
+ }
+
+ return null
+}
+module.exports = minVersion
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/outside.js b/node_modules/postcss-loader/node_modules/semver/ranges/outside.js
new file mode 100644
index 00000000..ae99b10a
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/outside.js
@@ -0,0 +1,80 @@
+const SemVer = require('../classes/semver')
+const Comparator = require('../classes/comparator')
+const { ANY } = Comparator
+const Range = require('../classes/range')
+const satisfies = require('../functions/satisfies')
+const gt = require('../functions/gt')
+const lt = require('../functions/lt')
+const lte = require('../functions/lte')
+const gte = require('../functions/gte')
+
+const outside = (version, range, hilo, options) => {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
+
+ let gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
+ }
+
+ // If it satisfies the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (let i = 0; i < range.set.length; ++i) {
+ const comparators = range.set[i]
+
+ let high = null
+ let low = null
+
+ comparators.forEach((comparator) => {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
+
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
+ }
+ return true
+}
+
+module.exports = outside
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/simplify.js b/node_modules/postcss-loader/node_modules/semver/ranges/simplify.js
new file mode 100644
index 00000000..618d5b62
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/simplify.js
@@ -0,0 +1,47 @@
+// given a set of versions and a range, create a "simplified" range
+// that includes the same versions that the original range does
+// If the original range is shorter than the simplified one, return that.
+const satisfies = require('../functions/satisfies.js')
+const compare = require('../functions/compare.js')
+module.exports = (versions, range, options) => {
+ const set = []
+ let first = null
+ let prev = null
+ const v = versions.sort((a, b) => compare(a, b, options))
+ for (const version of v) {
+ const included = satisfies(version, range, options)
+ if (included) {
+ prev = version
+ if (!first) {
+ first = version
+ }
+ } else {
+ if (prev) {
+ set.push([first, prev])
+ }
+ prev = null
+ first = null
+ }
+ }
+ if (first) {
+ set.push([first, null])
+ }
+
+ const ranges = []
+ for (const [min, max] of set) {
+ if (min === max) {
+ ranges.push(min)
+ } else if (!max && min === v[0]) {
+ ranges.push('*')
+ } else if (!max) {
+ ranges.push(`>=${min}`)
+ } else if (min === v[0]) {
+ ranges.push(`<=${max}`)
+ } else {
+ ranges.push(`${min} - ${max}`)
+ }
+ }
+ const simplified = ranges.join(' || ')
+ const original = typeof range.raw === 'string' ? range.raw : String(range)
+ return simplified.length < original.length ? simplified : range
+}
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/subset.js b/node_modules/postcss-loader/node_modules/semver/ranges/subset.js
new file mode 100644
index 00000000..1e5c2683
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/subset.js
@@ -0,0 +1,247 @@
+const Range = require('../classes/range.js')
+const Comparator = require('../classes/comparator.js')
+const { ANY } = Comparator
+const satisfies = require('../functions/satisfies.js')
+const compare = require('../functions/compare.js')
+
+// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:
+// - Every simple range `r1, r2, ...` is a null set, OR
+// - Every simple range `r1, r2, ...` which is not a null set is a subset of
+// some `R1, R2, ...`
+//
+// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:
+// - If c is only the ANY comparator
+// - If C is only the ANY comparator, return true
+// - Else if in prerelease mode, return false
+// - else replace c with `[>=0.0.0]`
+// - If C is only the ANY comparator
+// - if in prerelease mode, return true
+// - else replace C with `[>=0.0.0]`
+// - Let EQ be the set of = comparators in c
+// - If EQ is more than one, return true (null set)
+// - Let GT be the highest > or >= comparator in c
+// - Let LT be the lowest < or <= comparator in c
+// - If GT and LT, and GT.semver > LT.semver, return true (null set)
+// - If any C is a = range, and GT or LT are set, return false
+// - If EQ
+// - If GT, and EQ does not satisfy GT, return true (null set)
+// - If LT, and EQ does not satisfy LT, return true (null set)
+// - If EQ satisfies every C, return true
+// - Else return false
+// - If GT
+// - If GT.semver is lower than any > or >= comp in C, return false
+// - If GT is >=, and GT.semver does not satisfy every C, return false
+// - If GT.semver has a prerelease, and not in prerelease mode
+// - If no C has a prerelease and the GT.semver tuple, return false
+// - If LT
+// - If LT.semver is greater than any < or <= comp in C, return false
+// - If LT is <=, and LT.semver does not satisfy every C, return false
+// - If GT.semver has a prerelease, and not in prerelease mode
+// - If no C has a prerelease and the LT.semver tuple, return false
+// - Else return true
+
+const subset = (sub, dom, options = {}) => {
+ if (sub === dom) {
+ return true
+ }
+
+ sub = new Range(sub, options)
+ dom = new Range(dom, options)
+ let sawNonNull = false
+
+ OUTER: for (const simpleSub of sub.set) {
+ for (const simpleDom of dom.set) {
+ const isSub = simpleSubset(simpleSub, simpleDom, options)
+ sawNonNull = sawNonNull || isSub !== null
+ if (isSub) {
+ continue OUTER
+ }
+ }
+ // the null set is a subset of everything, but null simple ranges in
+ // a complex range should be ignored. so if we saw a non-null range,
+ // then we know this isn't a subset, but if EVERY simple range was null,
+ // then it is a subset.
+ if (sawNonNull) {
+ return false
+ }
+ }
+ return true
+}
+
+const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]
+const minimumVersion = [new Comparator('>=0.0.0')]
+
+const simpleSubset = (sub, dom, options) => {
+ if (sub === dom) {
+ return true
+ }
+
+ if (sub.length === 1 && sub[0].semver === ANY) {
+ if (dom.length === 1 && dom[0].semver === ANY) {
+ return true
+ } else if (options.includePrerelease) {
+ sub = minimumVersionWithPreRelease
+ } else {
+ sub = minimumVersion
+ }
+ }
+
+ if (dom.length === 1 && dom[0].semver === ANY) {
+ if (options.includePrerelease) {
+ return true
+ } else {
+ dom = minimumVersion
+ }
+ }
+
+ const eqSet = new Set()
+ let gt, lt
+ for (const c of sub) {
+ if (c.operator === '>' || c.operator === '>=') {
+ gt = higherGT(gt, c, options)
+ } else if (c.operator === '<' || c.operator === '<=') {
+ lt = lowerLT(lt, c, options)
+ } else {
+ eqSet.add(c.semver)
+ }
+ }
+
+ if (eqSet.size > 1) {
+ return null
+ }
+
+ let gtltComp
+ if (gt && lt) {
+ gtltComp = compare(gt.semver, lt.semver, options)
+ if (gtltComp > 0) {
+ return null
+ } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {
+ return null
+ }
+ }
+
+ // will iterate one or zero times
+ for (const eq of eqSet) {
+ if (gt && !satisfies(eq, String(gt), options)) {
+ return null
+ }
+
+ if (lt && !satisfies(eq, String(lt), options)) {
+ return null
+ }
+
+ for (const c of dom) {
+ if (!satisfies(eq, String(c), options)) {
+ return false
+ }
+ }
+
+ return true
+ }
+
+ let higher, lower
+ let hasDomLT, hasDomGT
+ // if the subset has a prerelease, we need a comparator in the superset
+ // with the same tuple and a prerelease, or it's not a subset
+ let needDomLTPre = lt &&
+ !options.includePrerelease &&
+ lt.semver.prerelease.length ? lt.semver : false
+ let needDomGTPre = gt &&
+ !options.includePrerelease &&
+ gt.semver.prerelease.length ? gt.semver : false
+ // exception: <1.2.3-0 is the same as <1.2.3
+ if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&
+ lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {
+ needDomLTPre = false
+ }
+
+ for (const c of dom) {
+ hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='
+ hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='
+ if (gt) {
+ if (needDomGTPre) {
+ if (c.semver.prerelease && c.semver.prerelease.length &&
+ c.semver.major === needDomGTPre.major &&
+ c.semver.minor === needDomGTPre.minor &&
+ c.semver.patch === needDomGTPre.patch) {
+ needDomGTPre = false
+ }
+ }
+ if (c.operator === '>' || c.operator === '>=') {
+ higher = higherGT(gt, c, options)
+ if (higher === c && higher !== gt) {
+ return false
+ }
+ } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {
+ return false
+ }
+ }
+ if (lt) {
+ if (needDomLTPre) {
+ if (c.semver.prerelease && c.semver.prerelease.length &&
+ c.semver.major === needDomLTPre.major &&
+ c.semver.minor === needDomLTPre.minor &&
+ c.semver.patch === needDomLTPre.patch) {
+ needDomLTPre = false
+ }
+ }
+ if (c.operator === '<' || c.operator === '<=') {
+ lower = lowerLT(lt, c, options)
+ if (lower === c && lower !== lt) {
+ return false
+ }
+ } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {
+ return false
+ }
+ }
+ if (!c.operator && (lt || gt) && gtltComp !== 0) {
+ return false
+ }
+ }
+
+ // if there was a < or >, and nothing in the dom, then must be false
+ // UNLESS it was limited by another range in the other direction.
+ // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
+ if (gt && hasDomLT && !lt && gtltComp !== 0) {
+ return false
+ }
+
+ if (lt && hasDomGT && !gt && gtltComp !== 0) {
+ return false
+ }
+
+ // we needed a prerelease range in a specific tuple, but didn't get one
+ // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,
+ // because it includes prereleases in the 1.2.3 tuple
+ if (needDomGTPre || needDomLTPre) {
+ return false
+ }
+
+ return true
+}
+
+// >=1.2.3 is lower than >1.2.3
+const higherGT = (a, b, options) => {
+ if (!a) {
+ return b
+ }
+ const comp = compare(a.semver, b.semver, options)
+ return comp > 0 ? a
+ : comp < 0 ? b
+ : b.operator === '>' && a.operator === '>=' ? b
+ : a
+}
+
+// <=1.2.3 is higher than <1.2.3
+const lowerLT = (a, b, options) => {
+ if (!a) {
+ return b
+ }
+ const comp = compare(a.semver, b.semver, options)
+ return comp < 0 ? a
+ : comp > 0 ? b
+ : b.operator === '<' && a.operator === '<=' ? b
+ : a
+}
+
+module.exports = subset
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/to-comparators.js b/node_modules/postcss-loader/node_modules/semver/ranges/to-comparators.js
new file mode 100644
index 00000000..6c8bc7e6
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/to-comparators.js
@@ -0,0 +1,8 @@
+const Range = require('../classes/range')
+
+// Mostly just for testing and legacy API reasons
+const toComparators = (range, options) =>
+ new Range(range, options).set
+ .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))
+
+module.exports = toComparators
diff --git a/node_modules/postcss-loader/node_modules/semver/ranges/valid.js b/node_modules/postcss-loader/node_modules/semver/ranges/valid.js
new file mode 100644
index 00000000..365f3568
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/semver/ranges/valid.js
@@ -0,0 +1,11 @@
+const Range = require('../classes/range')
+const validRange = (range, options) => {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
+ return null
+ }
+}
+module.exports = validRange
diff --git a/node_modules/postcss-loader/node_modules/yallist/LICENSE b/node_modules/postcss-loader/node_modules/yallist/LICENSE
new file mode 100644
index 00000000..19129e31
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/yallist/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/postcss-loader/node_modules/yallist/README.md b/node_modules/postcss-loader/node_modules/yallist/README.md
new file mode 100644
index 00000000..f5861018
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/yallist/README.md
@@ -0,0 +1,204 @@
+# yallist
+
+Yet Another Linked List
+
+There are many doubly-linked list implementations like it, but this
+one is mine.
+
+For when an array would be too big, and a Map can't be iterated in
+reverse order.
+
+
+[![Build Status](https://travis-ci.org/isaacs/yallist.svg?branch=master)](https://travis-ci.org/isaacs/yallist) [![Coverage Status](https://coveralls.io/repos/isaacs/yallist/badge.svg?service=github)](https://coveralls.io/github/isaacs/yallist)
+
+## basic usage
+
+```javascript
+var yallist = require('yallist')
+var myList = yallist.create([1, 2, 3])
+myList.push('foo')
+myList.unshift('bar')
+// of course pop() and shift() are there, too
+console.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo']
+myList.forEach(function (k) {
+ // walk the list head to tail
+})
+myList.forEachReverse(function (k, index, list) {
+ // walk the list tail to head
+})
+var myDoubledList = myList.map(function (k) {
+ return k + k
+})
+// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo']
+// mapReverse is also a thing
+var myDoubledListReverse = myList.mapReverse(function (k) {
+ return k + k
+}) // ['foofoo', 6, 4, 2, 'barbar']
+
+var reduced = myList.reduce(function (set, entry) {
+ set += entry
+ return set
+}, 'start')
+console.log(reduced) // 'startfoo123bar'
+```
+
+## api
+
+The whole API is considered "public".
+
+Functions with the same name as an Array method work more or less the
+same way.
+
+There's reverse versions of most things because that's the point.
+
+### Yallist
+
+Default export, the class that holds and manages a list.
+
+Call it with either a forEach-able (like an array) or a set of
+arguments, to initialize the list.
+
+The Array-ish methods all act like you'd expect. No magic length,
+though, so if you change that it won't automatically prune or add
+empty spots.
+
+### Yallist.create(..)
+
+Alias for Yallist function. Some people like factories.
+
+#### yallist.head
+
+The first node in the list
+
+#### yallist.tail
+
+The last node in the list
+
+#### yallist.length
+
+The number of nodes in the list. (Change this at your peril. It is
+not magic like Array length.)
+
+#### yallist.toArray()
+
+Convert the list to an array.
+
+#### yallist.forEach(fn, [thisp])
+
+Call a function on each item in the list.
+
+#### yallist.forEachReverse(fn, [thisp])
+
+Call a function on each item in the list, in reverse order.
+
+#### yallist.get(n)
+
+Get the data at position `n` in the list. If you use this a lot,
+probably better off just using an Array.
+
+#### yallist.getReverse(n)
+
+Get the data at position `n`, counting from the tail.
+
+#### yallist.map(fn, thisp)
+
+Create a new Yallist with the result of calling the function on each
+item.
+
+#### yallist.mapReverse(fn, thisp)
+
+Same as `map`, but in reverse.
+
+#### yallist.pop()
+
+Get the data from the list tail, and remove the tail from the list.
+
+#### yallist.push(item, ...)
+
+Insert one or more items to the tail of the list.
+
+#### yallist.reduce(fn, initialValue)
+
+Like Array.reduce.
+
+#### yallist.reduceReverse
+
+Like Array.reduce, but in reverse.
+
+#### yallist.reverse
+
+Reverse the list in place.
+
+#### yallist.shift()
+
+Get the data from the list head, and remove the head from the list.
+
+#### yallist.slice([from], [to])
+
+Just like Array.slice, but returns a new Yallist.
+
+#### yallist.sliceReverse([from], [to])
+
+Just like yallist.slice, but the result is returned in reverse.
+
+#### yallist.toArray()
+
+Create an array representation of the list.
+
+#### yallist.toArrayReverse()
+
+Create a reversed array representation of the list.
+
+#### yallist.unshift(item, ...)
+
+Insert one or more items to the head of the list.
+
+#### yallist.unshiftNode(node)
+
+Move a Node object to the front of the list. (That is, pull it out of
+wherever it lives, and make it the new head.)
+
+If the node belongs to a different list, then that list will remove it
+first.
+
+#### yallist.pushNode(node)
+
+Move a Node object to the end of the list. (That is, pull it out of
+wherever it lives, and make it the new tail.)
+
+If the node belongs to a list already, then that list will remove it
+first.
+
+#### yallist.removeNode(node)
+
+Remove a node from the list, preserving referential integrity of head
+and tail and other nodes.
+
+Will throw an error if you try to have a list remove a node that
+doesn't belong to it.
+
+### Yallist.Node
+
+The class that holds the data and is actually the list.
+
+Call with `var n = new Node(value, previousNode, nextNode)`
+
+Note that if you do direct operations on Nodes themselves, it's very
+easy to get into weird states where the list is broken. Be careful :)
+
+#### node.next
+
+The next node in the list.
+
+#### node.prev
+
+The previous node in the list.
+
+#### node.value
+
+The data the node contains.
+
+#### node.list
+
+The list to which this node belongs. (Null if it does not belong to
+any list.)
diff --git a/node_modules/postcss-loader/node_modules/yallist/iterator.js b/node_modules/postcss-loader/node_modules/yallist/iterator.js
new file mode 100644
index 00000000..d41c97a1
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/yallist/iterator.js
@@ -0,0 +1,8 @@
+'use strict'
+module.exports = function (Yallist) {
+ Yallist.prototype[Symbol.iterator] = function* () {
+ for (let walker = this.head; walker; walker = walker.next) {
+ yield walker.value
+ }
+ }
+}
diff --git a/node_modules/postcss-loader/node_modules/yallist/package.json b/node_modules/postcss-loader/node_modules/yallist/package.json
new file mode 100644
index 00000000..8a083867
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/yallist/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "yallist",
+ "version": "4.0.0",
+ "description": "Yet Another Linked List",
+ "main": "yallist.js",
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "yallist.js",
+ "iterator.js"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "tap": "^12.1.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js --100",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --all; git push origin --tags"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/yallist.git"
+ },
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "license": "ISC"
+}
diff --git a/node_modules/postcss-loader/node_modules/yallist/yallist.js b/node_modules/postcss-loader/node_modules/yallist/yallist.js
new file mode 100644
index 00000000..4e83ab1c
--- /dev/null
+++ b/node_modules/postcss-loader/node_modules/yallist/yallist.js
@@ -0,0 +1,426 @@
+'use strict'
+module.exports = Yallist
+
+Yallist.Node = Node
+Yallist.create = Yallist
+
+function Yallist (list) {
+ var self = this
+ if (!(self instanceof Yallist)) {
+ self = new Yallist()
+ }
+
+ self.tail = null
+ self.head = null
+ self.length = 0
+
+ if (list && typeof list.forEach === 'function') {
+ list.forEach(function (item) {
+ self.push(item)
+ })
+ } else if (arguments.length > 0) {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ self.push(arguments[i])
+ }
+ }
+
+ return self
+}
+
+Yallist.prototype.removeNode = function (node) {
+ if (node.list !== this) {
+ throw new Error('removing node which does not belong to this list')
+ }
+
+ var next = node.next
+ var prev = node.prev
+
+ if (next) {
+ next.prev = prev
+ }
+
+ if (prev) {
+ prev.next = next
+ }
+
+ if (node === this.head) {
+ this.head = next
+ }
+ if (node === this.tail) {
+ this.tail = prev
+ }
+
+ node.list.length--
+ node.next = null
+ node.prev = null
+ node.list = null
+
+ return next
+}
+
+Yallist.prototype.unshiftNode = function (node) {
+ if (node === this.head) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var head = this.head
+ node.list = this
+ node.next = head
+ if (head) {
+ head.prev = node
+ }
+
+ this.head = node
+ if (!this.tail) {
+ this.tail = node
+ }
+ this.length++
+}
+
+Yallist.prototype.pushNode = function (node) {
+ if (node === this.tail) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var tail = this.tail
+ node.list = this
+ node.prev = tail
+ if (tail) {
+ tail.next = node
+ }
+
+ this.tail = node
+ if (!this.head) {
+ this.head = node
+ }
+ this.length++
+}
+
+Yallist.prototype.push = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ push(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.unshift = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ unshift(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.pop = function () {
+ if (!this.tail) {
+ return undefined
+ }
+
+ var res = this.tail.value
+ this.tail = this.tail.prev
+ if (this.tail) {
+ this.tail.next = null
+ } else {
+ this.head = null
+ }
+ this.length--
+ return res
+}
+
+Yallist.prototype.shift = function () {
+ if (!this.head) {
+ return undefined
+ }
+
+ var res = this.head.value
+ this.head = this.head.next
+ if (this.head) {
+ this.head.prev = null
+ } else {
+ this.tail = null
+ }
+ this.length--
+ return res
+}
+
+Yallist.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.head, i = 0; walker !== null; i++) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.next
+ }
+}
+
+Yallist.prototype.forEachReverse = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.prev
+ }
+}
+
+Yallist.prototype.get = function (n) {
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.next
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.getReverse = function (n) {
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.prev
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.map = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.head; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.next
+ }
+ return res
+}
+
+Yallist.prototype.mapReverse = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.tail; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.prev
+ }
+ return res
+}
+
+Yallist.prototype.reduce = function (fn, initial) {
+ var acc
+ var walker = this.head
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.head) {
+ walker = this.head.next
+ acc = this.head.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = 0; walker !== null; i++) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.next
+ }
+
+ return acc
+}
+
+Yallist.prototype.reduceReverse = function (fn, initial) {
+ var acc
+ var walker = this.tail
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.tail) {
+ walker = this.tail.prev
+ acc = this.tail.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = this.length - 1; walker !== null; i--) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.prev
+ }
+
+ return acc
+}
+
+Yallist.prototype.toArray = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.head; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.next
+ }
+ return arr
+}
+
+Yallist.prototype.toArrayReverse = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.prev
+ }
+ return arr
+}
+
+Yallist.prototype.slice = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+ walker = walker.next
+ }
+ for (; walker !== null && i < to; i++, walker = walker.next) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.sliceReverse = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+ walker = walker.prev
+ }
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
+ if (start > this.length) {
+ start = this.length - 1
+ }
+ if (start < 0) {
+ start = this.length + start;
+ }
+
+ for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
+ walker = walker.next
+ }
+
+ var ret = []
+ for (var i = 0; walker && i < deleteCount; i++) {
+ ret.push(walker.value)
+ walker = this.removeNode(walker)
+ }
+ if (walker === null) {
+ walker = this.tail
+ }
+
+ if (walker !== this.head && walker !== this.tail) {
+ walker = walker.prev
+ }
+
+ for (var i = 0; i < nodes.length; i++) {
+ walker = insert(this, walker, nodes[i])
+ }
+ return ret;
+}
+
+Yallist.prototype.reverse = function () {
+ var head = this.head
+ var tail = this.tail
+ for (var walker = head; walker !== null; walker = walker.prev) {
+ var p = walker.prev
+ walker.prev = walker.next
+ walker.next = p
+ }
+ this.head = tail
+ this.tail = head
+ return this
+}
+
+function insert (self, node, value) {
+ var inserted = node === self.head ?
+ new Node(value, null, node, self) :
+ new Node(value, node, node.next, self)
+
+ if (inserted.next === null) {
+ self.tail = inserted
+ }
+ if (inserted.prev === null) {
+ self.head = inserted
+ }
+
+ self.length++
+
+ return inserted
+}
+
+function push (self, item) {
+ self.tail = new Node(item, self.tail, null, self)
+ if (!self.head) {
+ self.head = self.tail
+ }
+ self.length++
+}
+
+function unshift (self, item) {
+ self.head = new Node(item, null, self.head, self)
+ if (!self.tail) {
+ self.tail = self.head
+ }
+ self.length++
+}
+
+function Node (value, prev, next, list) {
+ if (!(this instanceof Node)) {
+ return new Node(value, prev, next, list)
+ }
+
+ this.list = list
+ this.value = value
+
+ if (prev) {
+ prev.next = this
+ this.prev = prev
+ } else {
+ this.prev = null
+ }
+
+ if (next) {
+ next.prev = this
+ this.next = next
+ } else {
+ this.next = null
+ }
+}
+
+try {
+ // add if support for Symbol.iterator is present
+ require('./iterator.js')(Yallist)
+} catch (er) {}
diff --git a/node_modules/postcss-loader/package.json b/node_modules/postcss-loader/package.json
new file mode 100644
index 00000000..3f52fcea
--- /dev/null
+++ b/node_modules/postcss-loader/package.json
@@ -0,0 +1,100 @@
+{
+ "name": "postcss-loader",
+ "version": "7.3.3",
+ "description": "PostCSS loader for webpack",
+ "license": "MIT",
+ "repository": "webpack-contrib/postcss-loader",
+ "author": "Andrey Sitnik <andrey@sitnik.ru>",
+ "homepage": "https://github.com/webpack-contrib/postcss-loader",
+ "bugs": "https://github.com/webpack-contrib/postcss-loader/issues",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "main": "dist/cjs.js",
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "scripts": {
+ "start": "npm run build -- -w",
+ "clean": "del-cli dist",
+ "prebuild": "npm run clean",
+ "build": "cross-env NODE_ENV=production babel src -d dist --copy-files",
+ "commitlint": "commitlint --from=master",
+ "security": "npm audit --production",
+ "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
+ "lint:js": "eslint --cache .",
+ "lint:spelling": "cspell \"**/*.*\"",
+ "lint": "npm-run-all -l -p \"lint:**\"",
+ "fix:js": "npm run lint:js -- --fix",
+ "fix:prettier": "npm run lint:prettier -- --write",
+ "fix": "npm-run-all -l fix:js fix:prettier",
+ "test:only": "cross-env NODE_ENV=test jest",
+ "test:watch": "npm run test:only -- --watch",
+ "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage",
+ "pretest": "npm run lint",
+ "test": "npm run test:coverage",
+ "prepare": "husky install && npm run build",
+ "release": "standard-version"
+ },
+ "files": [
+ "dist"
+ ],
+ "peerDependencies": {
+ "postcss": "^7.0.0 || ^8.0.1",
+ "webpack": "^5.0.0"
+ },
+ "dependencies": {
+ "cosmiconfig": "^8.2.0",
+ "jiti": "^1.18.2",
+ "semver": "^7.3.8"
+ },
+ "devDependencies": {
+ "@babel/cli": "^7.21.0",
+ "@babel/core": "^7.21.4",
+ "@babel/preset-env": "^7.21.4",
+ "@commitlint/cli": "^17.5.1",
+ "@commitlint/config-conventional": "^17.4.4",
+ "@webpack-contrib/eslint-config-webpack": "^3.0.0",
+ "babel-jest": "^29.4.3",
+ "cross-env": "^7.0.3",
+ "cspell": "^6.31.1",
+ "cssnano": "^6.0.0",
+ "del": "^6.1.1",
+ "del-cli": "^5.0.0",
+ "eslint": "^8.37.0",
+ "eslint-config-prettier": "^8.8.0",
+ "eslint-plugin-import": "^2.27.5",
+ "husky": "^8.0.3",
+ "jest": "^29.4.3",
+ "less": "^4.1.3",
+ "less-loader": "^11.1.0",
+ "lint-staged": "^13.2.0",
+ "memfs": "^3.4.13",
+ "midas": "^2.0.3",
+ "npm-run-all": "^4.1.5",
+ "postcss": "^8.4.21",
+ "postcss-dark-theme-class": "^0.7.3",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-short": "^5.0.0",
+ "prettier": "^2.8.7",
+ "sass": "^1.60.0",
+ "sass-loader": "^13.2.2",
+ "standard-version": "^9.3.2",
+ "strip-ansi": "^6.0.0",
+ "sugarss": "^4.0.1",
+ "ts-jest": "^29.1.0",
+ "ts-node": "^10.9.1",
+ "webpack": "^5.77.0"
+ },
+ "keywords": [
+ "css",
+ "postcss",
+ "postcss-runner",
+ "webpack",
+ "webpack-loader"
+ ]
+}