diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..9f89f364
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,13 @@
+# editorconfig.org
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+insert_final_newline = true
+trim_trailing_whitespace = false
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 00000000..c52afd16
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,4 @@
+/coverage
+/dist
+/node_modules
+/test/fixtures
\ No newline at end of file
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 5f707d23..00000000
--- a/.eslintrc
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "env": {
- "node": true
- },
- "rules": {
- "strict": 0,
- "curly": 0,
- "quotes": 0
- }
-}
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..095ce2a5
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ root: true,
+ extends: ['@webpack-contrib/eslint-config-webpack', 'prettier'],
+};
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..6fcfa732
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,4 @@
+* text=auto
+bin/* eol=lf
+yarn.lock -diff
+package-lock.json -diff
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 00000000..f3206485
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,6 @@
+# These are the default owners for everything in
+# webpack-contrib
+@webpack-contrib/org-maintainers
+
+# Add repository specific users / groups
+# below here for libs that are not maintained by the org.
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 00000000..d77bab43
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,160 @@
+# Contributing in @webpack-contrib
+
+We'd always love contributions to further improve the webpack / webpack-contrib ecosystem!
+Here are the guidelines we'd like you to follow:
+
+- [Questions and Problems](#question)
+- [Issues and Bugs](#issue)
+- [Feature Requests](#feature)
+- [Pull Request Submission Guidelines](#submit-pr)
+- [Commit Message Conventions](#commit)
+
+## Got a Question or Problem?
+
+Please submit support requests and questions to StackOverflow using the tag [[webpack]](http://stackoverflow.com/tags/webpack).
+StackOverflow is better suited for this kind of support though you may also inquire in [Webpack Gitter](https://gitter.im/webpack/webpack).
+The issue tracker is for bug reports and feature discussions.
+
+## Found an Issue or Bug?
+
+Before you submit an issue, please search the issue tracker, maybe an issue for your problem already exists and the discussion might inform you of workarounds readily available.
+
+We want to fix all the issues as soon as possible, but before fixing a bug we need to reproduce and confirm it. In order to reproduce bugs, we ask that you to provide a minimal reproduction scenario (github repo or failing test case). Having a live, reproducible scenario gives us a wealth of important information without going back & forth to you with additional questions like:
+
+- version of Webpack used
+- version of the loader / plugin you are creating a bug report for
+- the use-case that fails
+
+A minimal reproduce scenario allows us to quickly confirm a bug (or point out config problems) as well as confirm that we are fixing the right problem.
+
+We will be insisting on a minimal reproduce scenario in order to save maintainers time and ultimately be able to fix more bugs. We understand that sometimes it might be hard to extract essentials bits of code from a larger code-base but we really need to isolate the problem before we can fix it.
+
+Unfortunately, we are not able to investigate / fix bugs without a minimal reproduction, so if we don't hear back from you we are going to close an issue that doesn't have enough info to be reproduced.
+
+## Feature Requests?
+
+You can _request_ a new feature by creating an issue on Github.
+
+If you would like to _implement_ a new feature, please submit an issue with a proposal for your work `first`, to be sure that particular makes sense for the project.
+
+## Pull Request Submission Guidelines
+
+Before you submit your Pull Request (PR) consider the following guidelines:
+
+- Search Github for an open or closed PR that relates to your submission. You don't want to duplicate effort.
+- Commit your changes using a descriptive commit message that follows our [commit message conventions](#commit). Adherence to these conventions is necessary because release notes are automatically generated from these messages.
+- Fill out our `Pull Request Template`. Your pull request will not be considered if it is ignored.
+- Please sign the `Contributor License Agreement (CLA)` when a pull request is opened. We cannot accept your pull request without this. Make sure you sign with the primary email address associated with your local / github account.
+
+## Webpack Contrib Commit Conventions
+
+Each commit message consists of a **header**, a **body** and a **footer**. The header has a special
+format that includes a **type**, a **scope** and a **subject**:
+
+```
+():
+
+
+
+
+```
+
+The **header** is mandatory and the **scope** of the header is optional.
+
+Any line of the commit message cannot be longer 100 characters! This allows the message to be easier
+to read on GitHub as well as in various git tools.
+
+The footer should contain a [closing reference to an issue](https://help.github.com/articles/closing-issues-via-commit-messages/) if any.
+
+Examples:
+
+```
+docs(readme): update install instructions
+```
+
+```
+fix: refer to the `entrypoint` instead of the first `module`
+```
+
+### Revert
+
+If the commit reverts a previous commit, it should begin with `revert:`, followed by the header of the reverted commit.
+In the body it should say: `This reverts commit .`, where the hash is the SHA of the commit being reverted.
+
+### Type
+
+Must be one of the following:
+
+- **build**: Changes that affect the build system or external dependencies (example scopes: babel, npm)
+- **chore**: Changes that fall outside of build / docs that do not effect source code (example scopes: package, defaults)
+- **ci**: Changes to our CI configuration files and scripts (example scopes: circleci, travis)
+- **docs**: Documentation only changes (example scopes: readme, changelog)
+- **feat**: A new feature
+- **fix**: A bug fix
+- **perf**: A code change that improves performance
+- **refactor**: A code change that neither fixes a bug nor adds a feature
+- **revert**: Used when reverting a committed change
+- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons)
+- **test**: Addition of or updates to Jest tests
+
+### Scope
+
+The scope is subjective & depends on the `type` see above. A good example would be a change to a particular class / module.
+
+### Subject
+
+The subject contains a succinct description of the change:
+
+- use the imperative, present tense: "change" not "changed" nor "changes"
+- don't capitalize the first letter
+- no dot (.) at the end
+
+### Body
+
+Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
+The body should include the motivation for the change and contrast this with previous behavior.
+
+### Footer
+
+The footer should contain any information about **Breaking Changes** and is also the place to
+reference GitHub issues that this commit **Closes**.
+
+**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.
+
+Example
+
+```
+BREAKING CHANGE: Updates to `Chunk.mapModules`.
+
+This release is not backwards compatible with `Webpack 2.x` due to breaking changes in webpack/webpack#4764
+Migration: see webpack/webpack#5225
+
+```
+
+## Testing Your Pull Request
+
+You may have the need to test your changes in a real-world project or dependent
+module. Thankfully, Github provides a means to do this. Add a dependency to the
+`package.json` for such a project as follows:
+
+```json
+{
+ "devDependencies": {
+ "css-loader": "webpack-contrib/css-loader#{id}/head"
+ }
+}
+```
+
+Where `{id}` is the # ID of your Pull Request.
+
+## Contributor License Agreement
+
+When submitting your contribution, a CLA (Contributor License Agreement) bot will come by to verify that you signed the [CLA](https://cla.js.foundation/webpack-contrib/css-loader).
+If it is your first time, it will link you to the right place to sign it.
+However, if you have committed your contributions using an email that is not the same as your email used on GitHub, the CLA bot can't accept your contribution.
+
+Run `git config user.email` to see your Git email, and verify it with [your GitHub email](https://github.com/settings/emails).
+
+## Thanks
+
+For your interest, time, understanding, and for following this simple guide.
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 00000000..5e7c7b6d
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+open_collective: webpack
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 061fb83f..f68cbd3e 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,15 +1,16 @@
-
+
+ Hey there!
-**What is the current behavior?**
+ You arrived at this template because you felt none of the other options
+ matched the kind of issue you'd like to report. Please use this opportunity to
+ tell us about your particular type of issue so we can try to accomodate
+ similar issues in the future.
-**If the current behavior is a bug, please provide the steps to reproduce.**
-
-
-**What is the expected behavior?**
-
-**If this is a feature request, what is motivation or use case for changing the behavior?**
-
-**Please mention other relevant information such as your webpack version, Node.js version and Operating System.**
+ PLEASE do note, if you're using this to report an issue already covered by the
+ existing template types, your issue may be closed as invalid. Our issue
+ templates contain fields that help us help you, and without that important
+ info, we might as well be ice-skating uphill, carrying a wooly mammoth.
+-->
diff --git a/.github/ISSUE_TEMPLATE/BUG.md b/.github/ISSUE_TEMPLATE/BUG.md
new file mode 100644
index 00000000..ebc47be4
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/BUG.md
@@ -0,0 +1,50 @@
+---
+name: 🐛 Bug Report
+about: Something went awry and you'd like to tell us about it.
+---
+
+
+
+- Operating System:
+- Node Version:
+- NPM Version:
+- webpack Version:
+- css-loader Version:
+
+### Expected Behavior
+
+
+
+### Actual Behavior
+
+
+
+### Code
+
+```js
+// webpack.config.js
+// If your code blocks are over 20 lines, please paste a link to a gist
+// (https://gist.github.com).
+```
+
+```js
+// additional code, HEY YO remove this block if you don't need it
+```
+
+### How Do We Reproduce?
+
+
diff --git a/.github/ISSUE_TEMPLATE/DOCS.md b/.github/ISSUE_TEMPLATE/DOCS.md
new file mode 100644
index 00000000..88d05ddd
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/DOCS.md
@@ -0,0 +1,28 @@
+---
+name: 📚 Documentation
+about: Are the docs lacking or missing something? Do they need some new 🔥 hotness? Tell us here.
+---
+
+
+
+Documentation Is:
+
+
+
+- [ ] Missing
+- [ ] Needed
+- [ ] Confusing
+- [ ] Not Sure?
+
+### Please Explain in Detail...
+
+### Your Proposal for Changes
diff --git a/.github/ISSUE_TEMPLATE/FEATURE.md b/.github/ISSUE_TEMPLATE/FEATURE.md
new file mode 100644
index 00000000..84d4adeb
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/FEATURE.md
@@ -0,0 +1,25 @@
+---
+name: ✨ Feature Request
+about: Suggest an idea for this project
+---
+
+
+
+- Operating System:
+- Node Version:
+- NPM Version:
+- webpack Version:
+- css-loader Version:
+
+### Feature Proposal
+
+### Feature Use Case
diff --git a/.github/ISSUE_TEMPLATE/MODIFICATION.md b/.github/ISSUE_TEMPLATE/MODIFICATION.md
new file mode 100644
index 00000000..bd64d529
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/MODIFICATION.md
@@ -0,0 +1,27 @@
+---
+name: 🔧 Modification Request
+about: Would you like something work differently? Have an alternative approach? This is the template for you.
+---
+
+
+
+- Operating System:
+- Node Version:
+- NPM Version:
+- webpack Version:
+- css-loader Version:
+
+### Expected Behavior / Situation
+
+### Actual Behavior / Situation
+
+### Modification Proposal
diff --git a/.github/ISSUE_TEMPLATE/SUPPORT.md b/.github/ISSUE_TEMPLATE/SUPPORT.md
new file mode 100644
index 00000000..558934ac
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/SUPPORT.md
@@ -0,0 +1,8 @@
+---
+name: 🆘 Support, Help, and Advice
+about: 👉🏽 Need support, help, or advice? Don't open an issue! Head to StackOverflow or https://gitter.im/webpack/webpack.
+---
+
+Hey there! If you need support, help, or advice then this is not the place to ask.
+Please visit [StackOverflow](https://stackoverflow.com/questions/tagged/webpack)
+or [the Webpack Gitter](https://gitter.im/webpack/webpack) instead.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 77e68356..550abc2c 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,18 +1,35 @@
-
+
+ If you remove or skip this template, you'll make the 🐼 sad and the mighty god
+ of Github will appear and pile-drive the close button from a great height
+ while making animal noises.
-**Did you add tests for your changes?**
+ Please place an x (no spaces!) in all [ ] that apply
+-->
-**If relevant, did you update the README?**
+This PR contains a:
-**Summary**
+- [ ] **bugfix**
+- [ ] new **feature**
+- [ ] **code refactor**
+- [ ] **test update**
+- [ ] **typo fix**
+- [ ] **metadata update**
-
-
+### Motivation / Use-Case
-**Does this PR introduce a breaking change?**
-
+
-**Other information**
+### Breaking Changes
+
+
+
+### Additional Info
diff --git a/.gitignore b/.gitignore
index 3091757a..d81a67f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,18 @@
-node_modules
-coverage
\ No newline at end of file
+logs
+*.log
+npm-debug.log*
+.eslintcache
+
+/coverage
+/dist
+/local
+/reports
+/node_modules
+
+.DS_Store
+Thumbs.db
+.idea
+*.iml
+.vscode
+*.sublime-project
+*.sublime-workspace
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..f8f1e312
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,5 @@
+/coverage
+/dist
+/node_modules
+/test/fixtures
+CHANGELOG.md
\ No newline at end of file
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 00000000..1934550a
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ singleQuote: true,
+ trailingComma: 'es5',
+ arrowParens: 'always',
+};
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 6bcd11f5..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-sudo: false
-language: node_js
-node_js:
- - "0.12"
- - "node"
- - "iojs"
-script: npm run travis
-
-after_success:
- - cat ./coverage/lcov.info | node_modules/.bin/coveralls --verbose
- - cat ./coverage/coverage.json | node_modules/codecov.io/bin/codecov.io.js
- - rm -rf ./coverage
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..8b23e349
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,335 @@
+# 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.
+
+## [3.2.0](https://github.com/webpack-contrib/css-loader/compare/v3.1.0...v3.2.0) (2019-08-06)
+
+
+### Bug Fixes
+
+* replace `.` characters in localIndent to `-` character (regression) ([#982](https://github.com/webpack-contrib/css-loader/issues/982)) ([967fb66](https://github.com/webpack-contrib/css-loader/commit/967fb66))
+
+
+### Features
+
+* support es modules for assets loader ([#984](https://github.com/webpack-contrib/css-loader/issues/984)) ([9c5126c](https://github.com/webpack-contrib/css-loader/commit/9c5126c))
+
+## [3.1.0](https://github.com/webpack-contrib/css-loader/compare/v3.0.0...v3.1.0) (2019-07-18)
+
+
+### Bug Fixes
+
+* converting all (including reserved and control) filesystem characters to `-` (it was regression in `3.0.0` version) ([#972](https://github.com/webpack-contrib/css-loader/issues/972)) ([f51859b](https://github.com/webpack-contrib/css-loader/commit/f51859b))
+* default context should be undefined instead of null ([#965](https://github.com/webpack-contrib/css-loader/issues/965)) ([9c32885](https://github.com/webpack-contrib/css-loader/commit/9c32885))
+
+
+### Features
+
+* allow `modules.getLocalIdent` to return a falsy value ([#963](https://github.com/webpack-contrib/css-loader/issues/963)) ([9c3571c](https://github.com/webpack-contrib/css-loader/commit/9c3571c))
+* improved validation error messages ([65e4fc0](https://github.com/webpack-contrib/css-loader/commit/65e4fc0))
+
+
+
+## [3.0.0](https://github.com/webpack-contrib/css-loader/compare/v2.1.1...v3.0.0) (2019-06-11)
+
+
+### Bug Fixes
+
+* avoid the "from" argument must be of type string error ([#908](https://github.com/webpack-contrib/css-loader/issues/908)) ([e5dfd23](https://github.com/webpack-contrib/css-loader/commit/e5dfd23))
+* invert `Function` behavior for `url` and `import` options ([#939](https://github.com/webpack-contrib/css-loader/issues/939)) ([e9eb5ad](https://github.com/webpack-contrib/css-loader/commit/e9eb5ad))
+* properly export locals with escaped characters ([#917](https://github.com/webpack-contrib/css-loader/issues/917)) ([a0efcda](https://github.com/webpack-contrib/css-loader/commit/a0efcda))
+* property handle non css characters in localIdentName ([#920](https://github.com/webpack-contrib/css-loader/issues/920)) ([d3a0a3c](https://github.com/webpack-contrib/css-loader/commit/d3a0a3c))
+
+
+### Features
+
+* modules options now accepts object config ([#937](https://github.com/webpack-contrib/css-loader/issues/937)) ([1d7a464](https://github.com/webpack-contrib/css-loader/commit/1d7a464))
+* support `@value` at-rule in selectors ([#941](https://github.com/webpack-contrib/css-loader/issues/941)) ([05a42e2](https://github.com/webpack-contrib/css-loader/commit/05a42e2))
+
+
+### BREAKING CHANGES
+
+* minimum required nodejs version is 8.9.0
+* `@value` at rules now support in `selector`, recommends checking all `@values` at-rule usage (hint: you can add prefix to all `@value` at-rules, for example `@value v-foo: black;` or `@value m-foo: screen and (max-width: 12450px)`, and then do upgrade)
+* invert `{Function}` behavior for `url` and `import` options (need return `true` when you want handle `url`/`@import` and return `false` if not)
+* `camelCase` option was remove in favor `localsConvention` option, also it is accept only `{String}` value (use `camelCase` value if you previously value was `true` and `asIs` if you previously value was `false`)
+* `exportOnlyLocals` option was remove in favor `onlyLocals` option
+* `modules` option now can be `{Object}` and allow to setup `CSS Modules` options:
+ * `localIdentName` option was removed in favor `modules.localIdentName` option
+ * `context` option was remove in favor `modules.context` option
+ * `hashPrefix` option was removed in favor `modules.hashPrefix` option
+ * `getLocalIdent` option was removed in favor `modules.getLocalIdent` option
+ * `localIdentRegExp` option was removed in favor `modules.localIdentRegExp` option
+
+
+
+
+## [2.1.1](https://github.com/webpack-contrib/css-loader/compare/v2.1.0...v2.1.1) (2019-03-07)
+
+
+### Bug Fixes
+
+* do not break selector with escaping ([#896](https://github.com/webpack-contrib/css-loader/issues/896)) ([0ba8c66](https://github.com/webpack-contrib/css-loader/commit/0ba8c66))
+* source map generation when `sourceRoot` is present ([#901](https://github.com/webpack-contrib/css-loader/issues/901)) ([e9ce745](https://github.com/webpack-contrib/css-loader/commit/e9ce745))
+* sourcemap generating when previous loader pass sourcemap as string ([#905](https://github.com/webpack-contrib/css-loader/issues/905)) ([3797e4d](https://github.com/webpack-contrib/css-loader/commit/3797e4d))
+
+
+
+
+# [2.1.0](https://github.com/webpack-contrib/css-loader/compare/v2.0.2...v2.1.0) (2018-12-25)
+
+
+### Features
+
+* support `image-set` without `url` ([#879](https://github.com/webpack-contrib/css-loader/issues/879)) ([21884e2](https://github.com/webpack-contrib/css-loader/commit/21884e2))
+
+
+
+
+## [2.0.2](https://github.com/webpack-contrib/css-loader/compare/v2.0.1...v2.0.2) (2018-12-21)
+
+
+### Bug Fixes
+
+* inappropriate modification of animation keywords ([#876](https://github.com/webpack-contrib/css-loader/issues/876)) ([dfb2f8e](https://github.com/webpack-contrib/css-loader/commit/dfb2f8e))
+
+
+
+
+# [2.0.1](https://github.com/webpack-contrib/css-loader/compare/v2.0.0...v2.0.1) (2018-12-14)
+
+
+### Bug Fixes
+
+* safe checking if params are present for at rule ([#871](https://github.com/webpack-contrib/css-loader/issues/871)) ([a88fed1](https://github.com/webpack-contrib/css-loader/commit/a88fed1))
+* `getLocalIdent` now accepts `false` value ([#865](https://github.com/webpack-contrib/css-loader/issues/865)) ([1825e8a](https://github.com/webpack-contrib/css-loader/commit/1825e8a))
+
+
+
+
+# [2.0.0](https://github.com/webpack-contrib/css-loader/compare/v1.0.1...v2.0.0) (2018-12-07)
+
+
+### Bug Fixes
+
+* broken unucode characters ([#850](https://github.com/webpack-contrib/css-loader/issues/850)) ([f599c70](https://github.com/webpack-contrib/css-loader/commit/f599c70))
+* correctly processing `urls()` with `?#hash` ([#803](https://github.com/webpack-contrib/css-loader/issues/803)) ([417d105](https://github.com/webpack-contrib/css-loader/commit/417d105))
+* don't break loader on invalid or not exists url or import token ([#827](https://github.com/webpack-contrib/css-loader/issues/827)) ([9e52d26](https://github.com/webpack-contrib/css-loader/commit/9e52d26))
+* don't duplicate import with same media in different case ([#819](https://github.com/webpack-contrib/css-loader/issues/819)) ([9f66e33](https://github.com/webpack-contrib/css-loader/commit/9f66e33))
+* emit warnings on broken `import` at-rules ([#806](https://github.com/webpack-contrib/css-loader/issues/806)) ([4bdf08b](https://github.com/webpack-contrib/css-loader/commit/4bdf08b))
+* handle uppercase `URL` in `import` at-rules ([#818](https://github.com/webpack-contrib/css-loader/issues/818)) ([3ebdcd5](https://github.com/webpack-contrib/css-loader/commit/3ebdcd5))
+* inconsistent generate class names for css modules on difference os ([#812](https://github.com/webpack-contrib/css-loader/issues/812)) ([0bdf9b7](https://github.com/webpack-contrib/css-loader/commit/0bdf9b7))
+* reduce number of `require` for `urls()` ([#854](https://github.com/webpack-contrib/css-loader/issues/854)) ([3338656](https://github.com/webpack-contrib/css-loader/commit/3338656))
+* support deduplication of string module ids (optimization.namedModules) ([#789](https://github.com/webpack-contrib/css-loader/issues/789)) ([e3bb83a](https://github.com/webpack-contrib/css-loader/commit/e3bb83a))
+* support module resolution in `composes` ([#845](https://github.com/webpack-contrib/css-loader/issues/845)) ([453248f](https://github.com/webpack-contrib/css-loader/commit/453248f))
+* same `urls()` resolving logic for `modules` (`local` and `global`) and without modules ([#843](https://github.com/webpack-contrib/css-loader/issues/843)) ([fdcf687](https://github.com/webpack-contrib/css-loader/commit/fdcf687))
+
+### Features
+
+* allow to disable css modules and **disable their by default** ([#842](https://github.com/webpack-contrib/css-loader/issues/842)) ([889dc7f](https://github.com/webpack-contrib/css-loader/commit/889dc7f))
+* disable `import` option doesn't affect on `composes` ([#822](https://github.com/webpack-contrib/css-loader/issues/822)) ([f9aa73c](https://github.com/webpack-contrib/css-loader/commit/f9aa73c))
+* allow to filter `urls` ([#856](https://github.com/webpack-contrib/css-loader/issues/856)) ([5e702e7](https://github.com/webpack-contrib/css-loader/commit/5e702e7))
+* allow to filter `import` at-rules ([#857](https://github.com/webpack-contrib/css-loader/issues/857)) ([5e6034c](https://github.com/webpack-contrib/css-loader/commit/5e6034c))
+* emit warning on invalid `urls()` ([#832](https://github.com/webpack-contrib/css-loader/issues/832)) ([da95db8](https://github.com/webpack-contrib/css-loader/commit/da95db8))
+* added `exportOnlyLocals` option ([#824](https://github.com/webpack-contrib/css-loader/issues/824)) ([e9327c0](https://github.com/webpack-contrib/css-loader/commit/e9327c0))
+* reuse `postcss` ast from other loaders (i.e `postcss-loader`) ([#840](https://github.com/webpack-contrib/css-loader/issues/840)) ([1dad1fb](https://github.com/webpack-contrib/css-loader/commit/1dad1fb))
+* schema options ([b97d997](https://github.com/webpack-contrib/css-loader/commit/b97d997))
+
+
+### BREAKING CHANGES
+
+* resolving logic for `url()` and `import` at-rules works the same everywhere, it does not matter whether css modules are enabled (with `global` and `local` module) or not. Examples - `url('image.png')` as `require('./image.png')`, `url('./image.png')` as `require('./image.png')`, `url('~module/image.png')` as `require('module/image.png')`.
+* by default css modules are disabled (now `modules: false` disable all css modules features), you can return old behaviour change this on `modules: 'global'`
+* `css-loader/locals` was dropped in favor `exportOnlyLocals` option
+* `import` option only affect on `import` at-rules and doesn't affect on `composes` declarations
+* invalid `@import` at rules now emit warnings
+* use `postcss@7`
+
+
+
+
+## [1.0.1](https://github.com/webpack-contrib/css-loader/compare/v1.0.0...v1.0.1) (2018-10-29)
+
+
+### Bug Fixes
+
+* **loader:** trim unquoted import urls ([#783](https://github.com/webpack-contrib/css-loader/issues/783)) ([21fcddf](https://github.com/webpack-contrib/css-loader/commit/21fcddf))
+
+
+
+
+# [1.0.0](https://github.com/webpack-contrib/css-loader/compare/v0.28.11...v1.0.0) (2018-07-06)
+
+
+### BREAKING CHANGES
+
+* remove `minimize` option, use [`postcss-loader`](https://github.com/postcss/postcss-loader) with [`cssnano`](https://github.com/cssnano/cssnano) or use [`optimize-cssnano-plugin`](https://github.com/intervolga/optimize-cssnano-plugin) plugin
+* remove `module` option, use `modules` option instead
+* remove `camelcase` option, use `camelCase` option instead
+* remove `root` option, use [`postcss-loader`](https://github.com/postcss/postcss-loader) with [`postcss-url`](https://github.com/postcss/postcss-url) plugin
+* remove `alias` option, use [`resolve.alias`](https://webpack.js.org/configuration/resolve/) feature or use [`postcss-loader`](https://github.com/postcss/postcss-loader) with [`postcss-url`](https://github.com/postcss/postcss-url) plugin
+* update `postcss` to `6` version
+* minimum require `nodejs` version is `6.9`
+* minimum require `webpack` version is `4`
+
+
+
+
+## [0.28.11](https://github.com/webpack-contrib/css-loader/compare/v0.28.10...v0.28.11) (2018-03-16)
+
+
+### Bug Fixes
+
+* **lib/processCss:** don't check `mode` for `url` handling (`options.modules`) ([#698](https://github.com/webpack-contrib/css-loader/issues/698)) ([c788450](https://github.com/webpack-contrib/css-loader/commit/c788450))
+
+
+
+
+## [0.28.10](https://github.com/webpack-contrib/css-loader/compare/v0.28.9...v0.28.10) (2018-02-22)
+
+
+### Bug Fixes
+
+* **getLocalIdent:** add `rootContext` support (`webpack >= v4.0.0`) ([#681](https://github.com/webpack-contrib/css-loader/issues/681)) ([9f876d2](https://github.com/webpack-contrib/css-loader/commit/9f876d2))
+
+
+
+
+## [0.28.9](https://github.com/webpack-contrib/css-loader/compare/v0.28.8...v0.28.9) (2018-01-17)
+
+
+### Bug Fixes
+
+* ignore invalid URLs (`url()`) ([#663](https://github.com/webpack-contrib/css-loader/issues/663)) ([d1d8221](https://github.com/webpack-contrib/css-loader/commit/d1d8221))
+
+
+
+
+## [0.28.8](https://github.com/webpack-contrib/css-loader/compare/v0.28.7...v0.28.8) (2018-01-05)
+
+
+### Bug Fixes
+
+* **loader:** correctly check if source map is `undefined` ([#641](https://github.com/webpack-contrib/css-loader/issues/641)) ([0dccfa9](https://github.com/webpack-contrib/css-loader/commit/0dccfa9))
+* proper URL escaping and wrapping (`url()`) ([#627](https://github.com/webpack-contrib/css-loader/issues/627)) ([8897d44](https://github.com/webpack-contrib/css-loader/commit/8897d44))
+
+
+
+
+## [0.28.7](https://github.com/webpack/css-loader/compare/v0.28.6...v0.28.7) (2017-08-30)
+
+
+### Bug Fixes
+
+* pass resolver to `localsLoader` (`options.alias`) ([#601](https://github.com/webpack/css-loader/issues/601)) ([8f1b57c](https://github.com/webpack/css-loader/commit/8f1b57c))
+
+
+
+
+## [0.28.6](https://github.com/webpack/css-loader/compare/v0.28.5...v0.28.6) (2017-08-30)
+
+
+### Bug Fixes
+
+* add support for aliases starting with `/` (`options.alias`) ([#597](https://github.com/webpack/css-loader/issues/597)) ([63567f2](https://github.com/webpack/css-loader/commit/63567f2))
+
+
+
+
+## [0.28.5](https://github.com/webpack/css-loader/compare/v0.28.4...v0.28.5) (2017-08-17)
+
+
+### Bug Fixes
+
+* match mutliple dashes (`options.camelCase`) ([#556](https://github.com/webpack/css-loader/issues/556)) ([1fee601](https://github.com/webpack/css-loader/commit/1fee601))
+* stricter `[@import](https://github.com/import)` tolerance ([#593](https://github.com/webpack/css-loader/issues/593)) ([2e4ec09](https://github.com/webpack/css-loader/commit/2e4ec09))
+
+
+
+
+## [0.28.4](https://github.com/webpack/css-loader/compare/v0.28.3...v0.28.4) (2017-05-30)
+
+
+### Bug Fixes
+
+* preserve leading underscore in class names ([#543](https://github.com/webpack/css-loader/issues/543)) ([f6673c8](https://github.com/webpack/css-loader/commit/f6673c8))
+
+
+
+
+## [0.28.3](https://github.com/webpack/css-loader/compare/v0.28.2...v0.28.3) (2017-05-25)
+
+
+### Bug Fixes
+
+* correct plugin order for CSS Modules ([#534](https://github.com/webpack/css-loader/issues/534)) ([b90f492](https://github.com/webpack/css-loader/commit/b90f492))
+
+
+
+
+## [0.28.2](https://github.com/webpack/css-loader/compare/v0.28.1...v0.28.2) (2017-05-22)
+
+
+### Bug Fixes
+
+* source maps path on `windows` ([#532](https://github.com/webpack/css-loader/issues/532)) ([c3d0d91](https://github.com/webpack/css-loader/commit/c3d0d91))
+
+
+
+
+## [0.28.1](https://github.com/webpack/css-loader/compare/v0.28.0...v0.28.1) (2017-05-02)
+
+
+### Bug Fixes
+
+* allow to specify a full hostname as a root URL ([#521](https://github.com/webpack/css-loader/issues/521)) ([06d27a1](https://github.com/webpack/css-loader/commit/06d27a1))
+* case insensitivity of [@import](https://github.com/import) ([#514](https://github.com/webpack/css-loader/issues/514)) ([de4356b](https://github.com/webpack/css-loader/commit/de4356b))
+* don't handle empty [@import](https://github.com/import) and url() ([#513](https://github.com/webpack/css-loader/issues/513)) ([868fc94](https://github.com/webpack/css-loader/commit/868fc94))
+* imported variables are replaced in exports if followed by a comma ([#504](https://github.com/webpack/css-loader/issues/504)) ([956bad7](https://github.com/webpack/css-loader/commit/956bad7))
+* loader now correctly handles `url` with space(s) ([#495](https://github.com/webpack/css-loader/issues/495)) ([534ea55](https://github.com/webpack/css-loader/commit/534ea55))
+* url with a trailing space is now handled correctly ([#494](https://github.com/webpack/css-loader/issues/494)) ([e1ec4f2](https://github.com/webpack/css-loader/commit/e1ec4f2))
+* use `btoa` instead `Buffer` ([#501](https://github.com/webpack/css-loader/issues/501)) ([fbb0714](https://github.com/webpack/css-loader/commit/fbb0714))
+
+
+### Performance Improvements
+
+* generate source maps only when explicitly set ([#478](https://github.com/webpack/css-loader/issues/478)) ([b8f5c8f](https://github.com/webpack/css-loader/commit/b8f5c8f))
+
+
+
+
+# [0.28.0](https://github.com/webpack/css-loader/compare/v0.27.3...v0.28.0) (2017-03-30)
+
+
+### Features
+
+* add alias feature to rewrite URLs ([#274](https://github.com/webpack/css-loader/issues/274)) ([c8db489](https://github.com/webpack/css-loader/commit/c8db489))
+
+
+
+
+## [0.27.3](https://github.com/webpack/css-loader/compare/v0.27.2...v0.27.3) (2017-03-13)
+
+
+
+
+# [0.27.2](https://github.com/webpack/css-loader/compare/v0.27.1...v0.27.2) (2017-03-12)
+
+
+# [0.27.1](https://github.com/webpack/css-loader/compare/v0.27.0...v0.27.1) (2017-03-10)
+
+
+# [0.27.0](https://github.com/webpack/css-loader/compare/v0.26.2...v0.27.0) (2017-03-10)
+
+
+### Bug Fixes
+
+* **sourcemaps:** use abs paths & remove sourceRoot ([c769ac3](https://github.com/webpack/css-loader/commit/c769ac3))
+* `minimizeOptions` should be `query.minimize`! ([16c0858](https://github.com/webpack/css-loader/commit/16c0858))
+* do not export duplicate keys ([#420](https://github.com/webpack/css-loader/issues/420)) ([a2b85d7](https://github.com/webpack/css-loader/commit/a2b85d7))
+
+
+### Features
+
+* allow removal of original class name ([#445](https://github.com/webpack/css-loader/issues/445)) ([3f78361](https://github.com/webpack/css-loader/commit/3f78361))
+* Include the sourceMappingURL & sourceURL when toString() ([6da7e90](https://github.com/webpack/css-loader/commit/6da7e90))
diff --git a/README.md b/README.md
index 55674fc6..466a8729 100644
--- a/README.md
+++ b/README.md
@@ -1,280 +1,959 @@
-# css loader for webpack
-
-## installation
-
-`npm install css-loader --save-dev`
-
-## Usage
-
-[Documentation: Using loaders](http://webpack.github.io/docs/using-loaders.html)
-
-``` javascript
-var css = require("css-loader!./file.css");
-// => returns css code from file.css, resolves imports and url(...)
-```
-
-`@import` and `url(...)` are interpreted like `require()` and will be resolved by the css-loader.
-Good loaders for requiring your assets are the [file-loader](https://github.com/webpack/file-loader)
-and the [url-loader](https://github.com/webpack/url-loader) which you should specify in your config (see below).
-
-To be compatible with existing css files (if not in CSS Module mode):
-* `url(image.png)` => `require("./image.png")`
-* `url(~module/image.png)` => `require("module/image.png")`
-
-### Example config
-
-This webpack config can load css files, embed small png images as Data Urls and jpg images as files.
-
-``` javascript
-module.exports = {
- module: {
- loaders: [
- { test: /\.css$/, loader: "style-loader!css-loader" },
- { test: /\.png$/, loader: "url-loader?limit=100000" },
- { test: /\.jpg$/, loader: "file-loader" }
- ]
- }
-};
-```
-
-### 'Root-relative' urls
-
-For urls that start with a `/`, the default behavior is to not translate them:
-* `url(/image.png)` => `url(/image.png)`
-
-If a `root` query parameter is set, however, it will be prepended to the url
-and then translated:
-
-With a config like:
-
-``` javascript
- loaders: [
- { test: /\.css$/, loader: "style-loader!css-loader?root=." },
- ...
- ]
-```
-
-The result is:
-
-* `url(/image.png)` => `require("./image.png")`
-
-Using 'Root-relative' urls is not recommended. You should only use it for legacy CSS files.
-
-### Local scope
-
-By default CSS exports all class names into a global selector scope. Styles can be locally scoped to avoid globally scoping styles.
-
-The syntax `:local(.className)` can be used to declare `className` in the local scope. The local identifiers are exported by the module.
-
-With `:local` (without brackets) local mode can be switched on for this selector. `:global(.className)` can be used to declare an explicit global selector. With `:global` (without brackets) global mode can be switched on for this selector.
-
-The loader replaces local selectors with unique identifiers. The choosen unique identifiers are exported by the module.
-
-Example:
-
-``` css
-:local(.className) { background: red; }
-:local .className { color: green; }
-:local(.className .subClass) { color: green; }
-:local .className .subClass :global(.global-class-name) { color: blue; }
-```
-
-is transformed to
-
-``` css
-._23_aKvs-b8bW2Vg3fwHozO { background: red; }
-._23_aKvs-b8bW2Vg3fwHozO { color: green; }
-._23_aKvs-b8bW2Vg3fwHozO ._13LGdX8RMStbBE9w-t0gZ1 { color: green; }
-._23_aKvs-b8bW2Vg3fwHozO ._13LGdX8RMStbBE9w-t0gZ1 .global-class-name { color: blue; }
-```
-
-and the identifiers are exported:
-
-``` js
-exports.locals = {
- className: "_23_aKvs-b8bW2Vg3fwHozO",
- subClass: "_13LGdX8RMStbBE9w-t0gZ1"
-}
-```
-
-Camelcasing is recommended for local selectors. They are easier to use in the importing javascript module.
-
-`url(...)` URLs in block scoped (`:local .abc`) rules behave like requests in modules:
- * `./file.png` instead of `file.png`
- * `module/file.png` instead of `~module/file.png`
-
-
-You can use `:local(#someId)`, but this is not recommended. Use classes instead of ids.
-
-You can configure the generated ident with the `localIdentName` query parameter (default `[hash:base64]`). Example: `css-loader?localIdentName=[path][name]---[local]---[hash:base64:5]` for easier debugging.
-
-You can also specify the absolute path to your custom `getLocalIdent` function to generate classname based on a different schema. Note that this requires `webpack@2` since to be able to pass function in. For example:
-
-```js
-{
- test: /\.css$/,
- loaders: [
- {
- loader: 'css-loader',
- query: {
- modules: true,
- importLoaders: 1,
- getLocalIdent: function (loaderContext, localIdentName, localName, options) {
- return 'whatever_random_class_name'
- }
- }
- }
- ]
-},
-```
-
-
-Note: For prerendering with extract-text-webpack-plugin you should use `css-loader/locals` instead of `style-loader!css-loader` **in the prerendering bundle**. It doesn't embed CSS but only exports the identifier mappings.
-
-### CSS Modules
-
-See [CSS Modules](https://github.com/css-modules/css-modules).
-
-The query parameter `modules` enables the **CSS Modules** spec. (`css-loader?modules`)
-
-This enables Local scoped CSS by default. (You can switch it off with `:global(...)` or `:global` for selectors and/or rules.)
-
-### Composing CSS classes
-
-When declaring a local class name you can compose a local class from another local class name.
-
-``` css
-:local(.className) {
- background: red;
- color: yellow;
-}
-
-:local(.subClass) {
- composes: className;
- background: blue;
-}
-```
-
-This doesn't result in any change to the CSS itself but exports multiple class names:
-
-``` js
-exports.locals = {
- className: "_23_aKvs-b8bW2Vg3fwHozO",
- subClass: "_13LGdX8RMStbBE9w-t0gZ1 _23_aKvs-b8bW2Vg3fwHozO"
-}
-```
-
-and CSS is transformed to:
-
-``` css
-._23_aKvs-b8bW2Vg3fwHozO {
- background: red;
- color: yellow;
-}
-
-._13LGdX8RMStbBE9w-t0gZ1 {
- background: blue;
-}
-```
-
-### Importing local class names
-
-To import a local class name from another module:
-
-``` css
-:local(.continueButton) {
- composes: button from "library/button.css";
- background: red;
-}
-```
-
-``` css
-:local(.nameEdit) {
- composes: edit highlight from "./edit.css";
- background: red;
-}
-```
-
-To import from multiple modules use multiple `composes:` rules.
-
-``` css
-:local(.className) {
- composes: edit hightlight from "./edit.css";
- composes: button from "module/button.css";
- composes: classFromThisModule;
- background: red;
-}
-```
-
-### SourceMaps
-
-To include SourceMaps set the `sourceMap` query param.
-
-`require("css-loader?sourceMap!./file.css")`
-
-I. e. the extract-text-webpack-plugin can handle them.
-
-They are not enabled by default because they expose a runtime overhead and increase in bundle size (JS SourceMap do not). In addition to that relative paths are buggy and you need to use an absolute public path which include the server url.
-
-### importing and chained loaders
-
-The query parameter `importLoaders` allow to configure which loaders should be applied to `@import`ed resources.
-
-`importLoaders` (int): That many loaders after the css-loader are used to import resources.
-
-Examples:
-
-``` js
-require("style-loader!css-loader?importLoaders=1!postcss-loader!...")
-// => imported resources are handled this way:
-require("css-loader?importLoaders=1!postcss-loader!...")
-
-require("style-loader!css-loader!stylus-loader!...")
-// => imported resources are handled this way:
-require("css-loader!...")
-```
-
-This may change in the future, when the module system (i. e. webpack) supports loader matching by origin.
-
-### Minification
-
-By default the css-loader minimizes the css if specified by the module system.
-
-In some cases the minification is destructive to the css, so you can provide some options to it. cssnano is used for minification and you find a [list of options here](http://cssnano.co/options/). Just provide them as query parameter: i. e. `require("css-loader?-colormin")` to disable making color values as small as possible.
-
-You can also disable or enforce minification with the `minimize` query parameter.
-
-`require("css-loader?minimize!./file.css")` (enforced)
-
-`require("css-loader?-minimize!./file.css")` (disabled)
-
-### Disable behavior
-
-`css-loader?-url` disables `url(...)` handling.
-
-`css-loader?-import` disables `@import` handling.
-
-### Camel case
-
-By default, the exported JSON keys mirror the class names. If you want to camelize class names (useful in Javascript), pass the query parameter `camelCase` to the loader.
-
-Example:
-
-`css-loader?camelCase`
-
-Usage:
-```css
-/* file.css */
-
-.class-name { /* ... */ }
-```
-
-```js
-// javascript
-
-require('file.css').className
-```
-
-## License
-
-MIT (http://www.opensource.org/licenses/mit-license.php)
+
+
+[![npm][npm]][npm-url]
+[![node][node]][node-url]
+[![deps][deps]][deps-url]
+[![tests][tests]][tests-url]
+[![coverage][cover]][cover-url]
+[![chat][chat]][chat-url]
+[![size][size]][size-url]
+
+# css-loader
+
+The `css-loader` interprets `@import` and `url()` like `import/require()` and will resolve them.
+
+## Getting Started
+
+To begin, you'll need to install `css-loader`:
+
+```console
+npm install --save-dev css-loader
+```
+
+Then add the plugin to your `webpack` config. For example:
+
+**file.js**
+
+```js
+import css from 'file.css';
+```
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: ['style-loader', 'css-loader'],
+ },
+ ],
+ },
+};
+```
+
+Good loaders for requiring your assets are the [file-loader](https://github.com/webpack/file-loader) and the [url-loader](https://github.com/webpack/url-loader) which you should specify in your config (see [below](https://github.com/webpack-contrib/css-loader#assets)).
+
+And run `webpack` via your preferred method.
+
+### `toString`
+
+You can also use the css-loader results directly as a string, such as in Angular's component style.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: ['to-string-loader', 'css-loader'],
+ },
+ ],
+ },
+};
+```
+
+or
+
+```js
+const css = require('./test.css').toString();
+
+console.log(css); // {String}
+```
+
+If there are SourceMaps, they will also be included in the result string.
+
+If, for one reason or another, you need to extract CSS as a
+plain string resource (i.e. not wrapped in a JS module) you
+might want to check out the [extract-loader](https://github.com/peerigon/extract-loader).
+It's useful when you, for instance, need to post process the CSS as a string.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ 'handlebars-loader', // handlebars loader expects raw resource string
+ 'extract-loader',
+ 'css-loader',
+ ],
+ },
+ ],
+ },
+};
+```
+
+## Options
+
+| Name | Type | Default | Description |
+| :-----------------------------------------: | :-------------------------: | :-----: | :--------------------------------------------------------------------- |
+| **[`url`](#url)** | `{Boolean\|Function}` | `true` | Enables/Disables `url`/`image-set` functions handling |
+| **[`import`](#import)** | `{Boolean\|Function}` | `true` | Enables/Disables `@import` at-rules handling |
+| **[`modules`](#modules)** | `{Boolean\|String\|Object}` | `false` | Enables/Disables CSS Modules and their configuration |
+| **[`sourceMap`](#sourcemap)** | `{Boolean}` | `false` | Enables/Disables generation of source maps |
+| **[`importLoaders`](#importloaders)** | `{Number}` | `0` | Enables/Disables or setups number of loaders applied before CSS loader |
+| **[`localsConvention`](#localsconvention)** | `{String}` | `asIs` | Style of exported classnames |
+| **[`onlyLocals`](#onlylocals)** | `{Boolean}` | `false` | Export only locals |
+
+### `url`
+
+Type: `Boolean|Function`
+Default: `true`
+
+Enables/Disables `url`/`image-set` functions handling.
+Control `url()` resolving. Absolute URLs and root-relative URLs are not resolving.
+
+Examples resolutions:
+
+```
+url(image.png) => require('./image.png')
+url('image.png') => require('./image.png')
+url(./image.png) => require('./image.png')
+url('./image.png') => require('./image.png')
+url('http://dontwritehorriblecode.com/2112.png') => require('http://dontwritehorriblecode.com/2112.png')
+image-set(url('image2x.png') 1x, url('image1x.png') 2x) => require('./image1x.png') and require('./image2x.png')
+```
+
+To import assets from a `node_modules` path (include `resolve.modules`) and for `alias`, prefix it with a `~`:
+
+```
+url(~module/image.png) => require('module/image.png')
+url('~module/image.png') => require('module/image.png')
+url(~aliasDirectory/image.png) => require('otherDirectory/image.png')
+```
+
+#### `Boolean`
+
+Enable/disable `url()` resolving.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ url: true,
+ },
+ },
+ ],
+ },
+};
+```
+
+#### `Function`
+
+Allow to filter `url()`. All filtered `url()` will not be resolved (left in the code as they were written).
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ url: (url, resourcePath) => {
+ // resourcePath - path to css file
+
+ // Don't handle `img.png` urls
+ if (url.includes('img.png')) {
+ return false;
+ }
+
+ return true;
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+### `import`
+
+Type: `Boolean`
+Default: `true`
+
+Enables/Disables `@import` at-rules handling.
+Control `@import` resolving. Absolute urls in `@import` will be moved in runtime code.
+
+Examples resolutions:
+
+```
+@import 'style.css' => require('./style.css')
+@import url(style.css) => require('./style.css')
+@import url('style.css') => require('./style.css')
+@import './style.css' => require('./style.css')
+@import url(./style.css) => require('./style.css')
+@import url('./style.css') => require('./style.css')
+@import url('http://dontwritehorriblecode.com/style.css') => @import url('http://dontwritehorriblecode.com/style.css') in runtime
+```
+
+To import styles from a `node_modules` path (include `resolve.modules`) and for `alias`, prefix it with a `~`:
+
+```
+@import url(~module/style.css) => require('module/style.css')
+@import url('~module/style.css') => require('module/style.css')
+@import url(~aliasDirectory/style.css) => require('otherDirectory/style.css')
+```
+
+#### `Boolean`
+
+Enable/disable `@import` resolving.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ import: true,
+ },
+ },
+ ],
+ },
+};
+```
+
+#### `Function`
+
+Allow to filter `@import`. All filtered `@import` will not be resolved (left in the code as they were written).
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ import: (parsedImport, resourcePath) => {
+ // parsedImport.url - url of `@import`
+ // parsedImport.media - media query of `@import`
+ // resourcePath - path to css file
+
+ // Don't handle `style.css` import
+ if (parsedImport.url.includes('style.css')) {
+ return false;
+ }
+
+ return true;
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+### `modules`
+
+Type: `Boolean|String|Object`
+Default: `false`
+
+Enables/Disables CSS Modules and their configuration.
+
+The `modules` option enables/disables the **[CSS Modules](https://github.com/css-modules/css-modules)** specification and setup basic behaviour.
+
+Using `false` value increase performance because we avoid parsing **CSS Modules** features, it will be useful for developers who use vanilla css or use other technologies.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: true,
+ },
+ },
+ ],
+ },
+};
+```
+
+#### `Features`
+
+##### `Scope`
+
+Using `local` value requires you to specify `:global` classes.
+Using `global` value requires you to specify `:local` classes.
+
+You can find more information [here](https://github.com/css-modules/css-modules).
+
+Styles can be locally scoped to avoid globally scoping styles.
+
+The syntax `:local(.className)` can be used to declare `className` in the local scope. The local identifiers are exported by the module.
+
+With `:local` (without brackets) local mode can be switched on for this selector.
+The `:global(.className)` notation can be used to declare an explicit global selector.
+With `:global` (without brackets) global mode can be switched on for this selector.
+
+The loader replaces local selectors with unique identifiers. The chosen unique identifiers are exported by the module.
+
+```css
+:local(.className) {
+ background: red;
+}
+:local .className {
+ color: green;
+}
+:local(.className .subClass) {
+ color: green;
+}
+:local .className .subClass :global(.global-class-name) {
+ color: blue;
+}
+```
+
+```css
+._23_aKvs-b8bW2Vg3fwHozO {
+ background: red;
+}
+._23_aKvs-b8bW2Vg3fwHozO {
+ color: green;
+}
+._23_aKvs-b8bW2Vg3fwHozO ._13LGdX8RMStbBE9w-t0gZ1 {
+ color: green;
+}
+._23_aKvs-b8bW2Vg3fwHozO ._13LGdX8RMStbBE9w-t0gZ1 .global-class-name {
+ color: blue;
+}
+```
+
+> ℹ️ Identifiers are exported
+
+```js
+exports.locals = {
+ className: '_23_aKvs-b8bW2Vg3fwHozO',
+ subClass: '_13LGdX8RMStbBE9w-t0gZ1',
+};
+```
+
+CamelCase is recommended for local selectors. They are easier to use within the imported JS module.
+
+You can use `:local(#someId)`, but this is not recommended. Use classes instead of ids.
+
+##### `Composing`
+
+When declaring a local classname you can compose a local class from another local classname.
+
+```css
+:local(.className) {
+ background: red;
+ color: yellow;
+}
+
+:local(.subClass) {
+ composes: className;
+ background: blue;
+}
+```
+
+This doesn't result in any change to the CSS itself but exports multiple classnames.
+
+```js
+exports.locals = {
+ className: '_23_aKvs-b8bW2Vg3fwHozO',
+ subClass: '_13LGdX8RMStbBE9w-t0gZ1 _23_aKvs-b8bW2Vg3fwHozO',
+};
+```
+
+```css
+._23_aKvs-b8bW2Vg3fwHozO {
+ background: red;
+ color: yellow;
+}
+
+._13LGdX8RMStbBE9w-t0gZ1 {
+ background: blue;
+}
+```
+
+##### `Importing`
+
+To import a local classname from another module.
+
+```css
+:local(.continueButton) {
+ composes: button from 'library/button.css';
+ background: red;
+}
+```
+
+```css
+:local(.nameEdit) {
+ composes: edit highlight from './edit.css';
+ background: red;
+}
+```
+
+To import from multiple modules use multiple `composes:` rules.
+
+```css
+:local(.className) {
+ composes: edit hightlight from './edit.css';
+ composes: button from 'module/button.css';
+ composes: classFromThisModule;
+ background: red;
+}
+```
+
+##### `Values`
+
+You can use `@value` to specific values to be reused throughout a document.
+
+We recommend use prefix `v-` for values, `s-` for selectors and `m-` for media at-rules.
+
+```css
+@value v-primary: #BF4040;
+@value s-black: black-selector;
+@value m-large: (min-width: 960px);
+
+.header {
+ color: v-primary;
+ padding: 0 10px;
+}
+
+.s-black {
+ color: black;
+}
+
+@media m-large {
+ .header {
+ padding: 0 20px;
+ }
+}
+```
+
+#### `Boolean`
+
+Enable **CSS Modules** features.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: true,
+ },
+ },
+ ],
+ },
+};
+```
+
+#### `String`
+
+Enable **CSS Modules** features and setup `mode`.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ // Using `local` value has same effect like using `modules: true`
+ modules: 'global',
+ },
+ },
+ ],
+ },
+};
+```
+
+#### `Object`
+
+Enable **CSS Modules** features and setup options for them.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: {
+ mode: 'local',
+ localIdentName: '[path][name]__[local]--[hash:base64:5]',
+ context: path.resolve(__dirname, 'src'),
+ hashPrefix: 'my-custom-hash',
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+##### `mode`
+
+Type: `String`
+Default: `local`
+
+Setup `mode` option. You can omit the value when you want `local` mode.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: {
+ mode: 'global',
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+##### `localIdentName`
+
+Type: `String`
+Default: `[hash:base64]`
+
+You can configure the generated ident with the `localIdentName` query parameter.
+See [loader-utils's documentation](https://github.com/webpack/loader-utils#interpolatename) for more information on options.
+
+Recommendations:
+
+- use `[path][name]__[local]` for development
+- use `[hash:base64]` for production
+
+The `[local]` placeholder contains original class.
+
+**Note:** all reserved (`<>:"/\|?*`) and control filesystem characters (excluding characters in the `[local]` placeholder) will be converted to `-`.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: {
+ localIdentName: '[path][name]__[local]--[hash:base64:5]',
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+##### `context`
+
+Type: `String`
+Default: `undefined`
+
+Allow to redefine basic loader context for local ident name.
+By default we use `rootContext` of loader.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: {
+ context: path.resolve(__dirname, 'context'),
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+##### `hashPrefix`
+
+Type: `String`
+Default: `undefined`
+
+Allow to add custom hash to generate more unique classes.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: {
+ hashPrefix: 'hash',
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+##### `getLocalIdent`
+
+Type: `Function`
+Default: `undefined`
+
+You can also specify the absolute path to your custom `getLocalIdent` function to generate classname based on a different schema.
+By default we use built-in function to generate a classname.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: {
+ getLocalIdent: (context, localIdentName, localName, options) => {
+ return 'whatever_random_class_name';
+ },
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+##### `localIdentRegExp`
+
+Type: `String|RegExp`
+Default: `undefined`
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ modules: {
+ localIdentRegExp: /page-(.*)\.css/i,
+ },
+ },
+ },
+ ],
+ },
+};
+```
+
+### `sourceMap`
+
+Type: `Boolean`
+Default: `false`
+
+Enables/Disables generation of source maps.
+
+To include source maps set the `sourceMap` option.
+
+They are not enabled by default because they expose a runtime overhead and increase in bundle size (JS source maps do not).
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ sourceMap: true,
+ },
+ },
+ ],
+ },
+};
+```
+
+### `importLoaders`
+
+Type: `Number`
+Default: `0`
+
+Enables/Disables or setups number of loaders applied before CSS loader.
+
+The option `importLoaders` allows you to configure how many loaders before `css-loader` should be applied to `@import`ed resources.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: [
+ 'style-loader',
+ {
+ loader: 'css-loader',
+ options: {
+ importLoaders: 2,
+ // 0 => no loaders (default);
+ // 1 => postcss-loader;
+ // 2 => postcss-loader, sass-loader
+ },
+ },
+ 'postcss-loader',
+ 'sass-loader',
+ ],
+ },
+ ],
+ },
+};
+```
+
+This may change in the future when the module system (i. e. webpack) supports loader matching by origin.
+
+### `localsConvention`
+
+Type: `String`
+Default: `undefined`
+
+Style of exported classnames.
+
+By default, the exported JSON keys mirror the class names (i.e `asIs` value).
+
+| Name | Type | Description |
+| :-------------------: | :--------: | :----------------------------------------------------------------------------------------------- |
+| **`'asIs'`** | `{String}` | Class names will be exported as is. |
+| **`'camelCase'`** | `{String}` | Class names will be camelized, the original class name will not to be removed from the locals |
+| **`'camelCaseOnly'`** | `{String}` | Class names will be camelized, the original class name will be removed from the locals |
+| **`'dashes'`** | `{String}` | Only dashes in class names will be camelized |
+| **`'dashesOnly'`** | `{String}` | Dashes in class names will be camelized, the original class name will be removed from the locals |
+
+**file.css**
+
+```css
+.class-name {
+}
+```
+
+**file.js**
+
+```js
+import { className } from 'file.css';
+```
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ localsConvention: 'camelCase',
+ },
+ },
+ ],
+ },
+};
+```
+
+### `onlyLocals`
+
+Type: `Boolean`
+Default: `false`
+
+Export only locals.
+
+**Useful** when you use **css modules** for pre-rendering (for example SSR).
+For pre-rendering with `mini-css-extract-plugin` you should use this option instead of `style-loader!css-loader` **in the pre-rendering bundle**.
+It doesn't embed CSS but only exports the identifier mappings.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ loader: 'css-loader',
+ options: {
+ onlyLocals: true,
+ },
+ },
+ ],
+ },
+};
+```
+
+## Examples
+
+### Assets
+
+The following `webpack.config.js` can load CSS files, embed small PNG/JPG/GIF/SVG images as well as fonts as [Data URLs](https://tools.ietf.org/html/rfc2397) and copy larger files to the output directory.
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.css$/i,
+ use: ['style-loader', 'css-loader'],
+ },
+ {
+ test: /\.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/i,
+ loader: 'url-loader',
+ options: {
+ limit: 8192,
+ },
+ },
+ ],
+ },
+};
+```
+
+### Extract
+
+For production builds it's recommended to extract the CSS from your bundle being able to use parallel loading of CSS/JS resources later on.
+
+- This can be achieved by using the [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) to extract the CSS when running in production mode.
+
+- As an alternative, if seeking better development performance and css outputs that mimic production. [extract-css-chunks-webpack-plugin](https://github.com/faceyspacey/extract-css-chunks-webpack-plugin) offers a hot module reload friendly, extended version of mini-css-extract-plugin. HMR real CSS files in dev, works like mini-css in non-dev
+
+### CSS modules and pure CSS
+
+When you have pure CSS (without CSS modules) and CSS modules in project you can use this setup:
+
+**webpack.config.js**
+
+```js
+module.exports = {
+ module: {
+ rules: [
+ {
+ // For pure CSS (without CSS modules)
+ test: /\.css$/i,
+ exclude: /\.module\.css$/i,
+ use: ['style-loader', 'css-loader'],
+ },
+ {
+ // For CSS modules
+ test: /\.module\.css$/i,
+ use: [
+ 'style-loader',
+ {
+ loader: 'css-loader',
+ options: {
+ modules: true,
+ },
+ },
+ ],
+ },
+ {
+ test: /\.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/i,
+ loader: 'url-loader',
+ options: {
+ limit: 8192,
+ },
+ },
+ ],
+ },
+};
+```
+
+## 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/css-loader.svg
+[npm-url]: https://npmjs.com/package/css-loader
+[node]: https://img.shields.io/node/v/css-loader.svg
+[node-url]: https://nodejs.org
+[deps]: https://david-dm.org/webpack-contrib/css-loader.svg
+[deps-url]: https://david-dm.org/webpack-contrib/css-loader
+[tests]: https://dev.azure.com/webpack-contrib/css-loader/_apis/build/status/webpack-contrib.css-loader?branchName=master
+[tests-url]: https://dev.azure.com/webpack-contrib/css-loader/_build/latest?definitionId=2&branchName=master
+[cover]: https://codecov.io/gh/webpack-contrib/css-loader/branch/master/graph/badge.svg
+[cover-url]: https://codecov.io/gh/webpack-contrib/css-loader
+[chat]: https://badges.gitter.im/webpack/webpack.svg
+[chat-url]: https://gitter.im/webpack/webpack
+[size]: https://packagephobia.now.sh/badge?p=css-loader
+[size-url]: https://packagephobia.now.sh/result?p=css-loader
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
new file mode 100644
index 00000000..6aa59122
--- /dev/null
+++ b/azure-pipelines.yml
@@ -0,0 +1,192 @@
+trigger:
+ - master
+ - next
+
+jobs:
+ - job: Lint
+ pool:
+ vmImage: ubuntu-16.04
+ steps:
+ - task: NodeTool@0
+ inputs:
+ versionSpec: ^10.13.0
+ displayName: 'Install Node.js'
+ - task: Npm@1
+ inputs:
+ command: custom
+ customCommand: i -g npm@latest
+ displayName: 'Install latest NPM'
+ - script: |
+ node -v
+ npm -v
+ displayName: 'Print versions'
+ - task: Npm@1
+ inputs:
+ command: custom
+ customCommand: ci
+ displayName: 'Install dependencies'
+ - script: npm run lint
+ displayName: 'Run lint'
+ - script: npm run security
+ displayName: 'Run NPM audit'
+ - script: ./node_modules/.bin/commitlint-azure-pipelines
+ displayName: 'Run lint commit message'
+
+ - job: Linux
+ pool:
+ vmImage: ubuntu-16.04
+ strategy:
+ maxParallel: 4
+ matrix:
+ node-12:
+ node_version: ^12.0.0
+ webpack_version: latest
+ node-10:
+ node_version: ^10.13.0
+ webpack_version: latest
+ node-8:
+ node_version: ^8.9.0
+ webpack_version: latest
+ node-8-canary:
+ node_version: ^8.9.0
+ webpack_version: next
+ continue_on_error: true
+ steps:
+ - task: NodeTool@0
+ inputs:
+ versionSpec: $(node_version)
+ displayName: 'Install Node.js $(node_version)'
+ - task: Npm@1
+ inputs:
+ command: custom
+ customCommand: i -g npm@latest
+ displayName: 'Install latest NPM'
+ - script: |
+ node -v
+ npm -v
+ displayName: 'Print versions'
+ - task: Npm@1
+ inputs:
+ command: custom
+ customCommand: ci
+ displayName: 'Install dependencies'
+ - script: npm i webpack@$(webpack_version)
+ displayName: 'Install "webpack@$(webpack_version)"'
+ - script: npm run test:coverage -- --ci --reporters="default" --reporters="jest-junit" || $(continue_on_error)
+ displayName: 'Run tests with coverage'
+ - task: PublishTestResults@2
+ inputs:
+ testRunTitle: 'Linux with Node.js $(node_version)'
+ testResultsFiles: '**/junit.xml'
+ condition: succeededOrFailed()
+ displayName: 'Publish test results'
+ - script: curl -s https://codecov.io/bash | bash -s -- -t $(CODECOV_TOKEN)
+ condition: succeededOrFailed()
+ displayName: 'Submit coverage data to codecov'
+
+ - job: macOS
+ pool:
+ vmImage: macOS-10.14
+ strategy:
+ maxParallel: 4
+ matrix:
+ node-12:
+ node_version: ^12.0.0
+ webpack_version: latest
+ node-10:
+ node_version: ^10.13.0
+ webpack_version: latest
+ node-8:
+ node_version: ^8.9.0
+ webpack_version: latest
+ node-8-canary:
+ node_version: ^8.9.0
+ webpack_version: next
+ continue_on_error: true
+ steps:
+ - task: NodeTool@0
+ inputs:
+ versionSpec: $(node_version)
+ displayName: 'Install Node.js $(node_version)'
+ - task: Npm@1
+ inputs:
+ command: custom
+ customCommand: i -g npm@latest
+ displayName: 'Install latest NPM'
+ - script: |
+ node -v
+ npm -v
+ displayName: 'Print versions'
+ - task: Npm@1
+ inputs:
+ command: custom
+ customCommand: ci
+ displayName: 'Install dependencies'
+ - script: npm i webpack@$(webpack_version)
+ displayName: 'Install "webpack@$(webpack_version)"'
+ - script: npm run test:coverage -- --ci --reporters="default" --reporters="jest-junit" || $(continue_on_error)
+ displayName: 'Run tests with coverage'
+ - task: PublishTestResults@2
+ inputs:
+ testRunTitle: 'Linux with Node.js $(node_version)'
+ testResultsFiles: '**/junit.xml'
+ condition: succeededOrFailed()
+ displayName: 'Publish test results'
+ - script: curl -s https://codecov.io/bash | bash -s -- -t $(CODECOV_TOKEN)
+ condition: succeededOrFailed()
+ displayName: 'Submit coverage data to codecov'
+
+ - job: Windows
+ pool:
+ vmImage: windows-2019
+ strategy:
+ maxParallel: 4
+ matrix:
+ node-12:
+ node_version: ^12.0.0
+ webpack_version: latest
+ node-10:
+ node_version: ^10.13.0
+ webpack_version: latest
+ node-8:
+ node_version: ^8.9.0
+ webpack_version: latest
+ node-8-canary:
+ node_version: ^8.9.0
+ webpack_version: next
+ continue_on_error: true
+ steps:
+ - script: 'git config --global core.autocrlf input'
+ displayName: 'Config git core.autocrlf'
+ - checkout: self
+ - task: NodeTool@0
+ inputs:
+ versionSpec: $(node_version)
+ displayName: 'Install Node.js $(node_version)'
+ - task: Npm@1
+ inputs:
+ command: custom
+ customCommand: i -g npm@latest
+ displayName: 'Install latest NPM'
+ - script: |
+ node -v
+ npm -v
+ displayName: 'Print versions'
+ - task: Npm@1
+ inputs:
+ command: custom
+ customCommand: ci
+ displayName: 'Install dependencies'
+ - script: npm i webpack@$(webpack_version)
+ displayName: 'Install "webpack@$(webpack_version)"'
+ - script: npm run test:coverage -- --ci --reporters="default" --reporters="jest-junit" || $(continue_on_error)
+ displayName: 'Run tests with coverage'
+ - task: PublishTestResults@2
+ inputs:
+ testRunTitle: 'Linux with Node.js $(node_version)'
+ testResultsFiles: '**/junit.xml'
+ condition: succeededOrFailed()
+ displayName: 'Publish test results'
+ - script: curl -s https://codecov.io/bash | bash -s -- -t $(CODECOV_TOKEN)
+ condition: succeededOrFailed()
+ displayName: 'Submit coverage data to codecov'
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 00000000..c428f395
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,34 @@
+const MIN_BABEL_VERSION = 7;
+
+module.exports = (api) => {
+ api.assertVersion(MIN_BABEL_VERSION);
+ api.cache(true);
+
+ return {
+ presets: [
+ [
+ '@babel/preset-env',
+ {
+ targets: {
+ node: '8.9.0',
+ },
+ },
+ ],
+ ],
+ overrides: [
+ {
+ test: './src/runtime',
+ presets: [
+ [
+ '@babel/preset-env',
+ {
+ targets: {
+ node: '0.12',
+ },
+ },
+ ],
+ ],
+ },
+ ],
+ };
+};
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 00000000..84dcb122
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ['@commitlint/config-conventional'],
+};
diff --git a/husky.config.js b/husky.config.js
new file mode 100644
index 00000000..4c2ec3ae
--- /dev/null
+++ b/husky.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ hooks: {
+ 'pre-commit': 'lint-staged',
+ 'commit-msg': 'commitlint -E HUSKY_GIT_PARAMS',
+ },
+};
diff --git a/index.js b/index.js
deleted file mode 100644
index cef663dc..00000000
--- a/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-module.exports = require("./lib/loader");
diff --git a/lib/compile-exports.js b/lib/compile-exports.js
deleted file mode 100644
index 06904fac..00000000
--- a/lib/compile-exports.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var camelCase = require("lodash.camelcase");
-
-function dashesCamelCase(str) {
- return str.replace(/-(\w)/g, function(match, firstLetter) {
- return firstLetter.toUpperCase();
- });
-}
-
-module.exports = function compileExports(result, importItemMatcher, camelCaseKeys) {
- if (!Object.keys(result.exports).length) {
- return "";
- }
-
- var exportJs = Object.keys(result.exports).reduce(function(res, key) {
- var valueAsString = JSON.stringify(result.exports[key]);
- valueAsString = valueAsString.replace(result.importItemRegExpG, importItemMatcher);
- res.push("\t" + JSON.stringify(key) + ": " + valueAsString);
-
- if (camelCaseKeys === true) {
- res.push("\t" + JSON.stringify(camelCase(key)) + ": " + valueAsString);
- } else if (camelCaseKeys === 'dashes') {
- res.push("\t" + JSON.stringify(dashesCamelCase(key)) + ": " + valueAsString);
- }
-
- return res;
- }, []).join(",\n");
-
- return "{\n" + exportJs + "\n}";
-};
diff --git a/lib/css-base.js b/lib/css-base.js
deleted file mode 100644
index 3f791979..00000000
--- a/lib/css-base.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-// css base code, injected by the css-loader
-module.exports = function() {
- var list = [];
-
- // return the list of modules as css string
- list.toString = function toString() {
- var result = [];
- for(var i = 0; i < this.length; i++) {
- var item = this[i];
- if(item[2]) {
- result.push("@media " + item[2] + "{" + item[1] + "}");
- } else {
- result.push(item[1]);
- }
- }
- return result.join("");
- };
-
- // import a list of modules into the list
- list.i = function(modules, mediaQuery) {
- if(typeof modules === "string")
- modules = [[null, modules, ""]];
- var alreadyImportedModules = {};
- for(var i = 0; i < this.length; i++) {
- var id = this[i][0];
- if(typeof id === "number")
- alreadyImportedModules[id] = true;
- }
- for(i = 0; i < modules.length; i++) {
- var item = modules[i];
- // skip already imported module
- // this implementation is not 100% perfect for weird media query combinations
- // when a module is imported multiple times with different media queries.
- // I hope this will never occur (Hey this way we have smaller bundles)
- if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
- if(mediaQuery && !item[2]) {
- item[2] = mediaQuery;
- } else if(mediaQuery) {
- item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
- }
- list.push(item);
- }
- }
- };
- return list;
-};
diff --git a/lib/getImportPrefix.js b/lib/getImportPrefix.js
deleted file mode 100644
index 5d3be772..00000000
--- a/lib/getImportPrefix.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-module.exports = function getImportPrefix(loaderContext, query) {
- if(query.importLoaders === false)
- return "";
- var importLoaders = parseInt(query.importLoaders, 10) || 0;
- var loadersRequest = loaderContext.loaders.slice(
- loaderContext.loaderIndex,
- loaderContext.loaderIndex + 1 + importLoaders
- ).map(function(x) { return x.request; }).join("!");
- return "-!" + loadersRequest + "!";
-};
diff --git a/lib/getLocalIdent.js b/lib/getLocalIdent.js
deleted file mode 100644
index d671fb64..00000000
--- a/lib/getLocalIdent.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-var loaderUtils = require("loader-utils");
-var path = require("path");
-
-module.exports = function getLocalIdent(loaderContext, localIdentName, localName, options) {
- if(!options.context)
- options.context = loaderContext.options && typeof loaderContext.options.context === "string" ? loaderContext.options.context : loaderContext.context;
- var request = path.relative(options.context, loaderContext.resourcePath);
- options.content = options.hashPrefix + request + "+" + localName;
- localIdentName = localIdentName.replace(/\[local\]/gi, localName);
- var hash = loaderUtils.interpolateName(loaderContext, localIdentName, options);
- return hash.replace(new RegExp("[^a-zA-Z0-9\\-_\u00A0-\uFFFF]", "g"), "-").replace(/^((-?[0-9])|--)/, "_$1");
-};
diff --git a/lib/loader.js b/lib/loader.js
deleted file mode 100644
index 7574ba15..00000000
--- a/lib/loader.js
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-var path = require("path");
-var loaderUtils = require("loader-utils");
-var processCss = require("./processCss");
-var getImportPrefix = require("./getImportPrefix");
-var compileExports = require("./compile-exports");
-
-
-module.exports = function(content, map) {
- if(this.cacheable) this.cacheable();
- var callback = this.async();
- var query = loaderUtils.parseQuery(this.query);
- var root = query.root;
- var moduleMode = query.modules || query.module;
- var camelCaseKeys = query.camelCase || query.camelcase;
-
- if(map !== null && typeof map !== "string") {
- map = JSON.stringify(map);
- }
-
- processCss(content, map, {
- mode: moduleMode ? "local" : "global",
- from: loaderUtils.getRemainingRequest(this),
- to: loaderUtils.getCurrentRequest(this),
- query: query,
- minimize: this.minimize,
- loaderContext: this
- }, function(err, result) {
- if(err) return callback(err);
-
- var cssAsString = JSON.stringify(result.source);
-
- // for importing CSS
- var importUrlPrefix = getImportPrefix(this, query);
-
- var alreadyImported = {};
- var importJs = result.importItems.filter(function(imp) {
- if(!imp.mediaQuery) {
- if(alreadyImported[imp.url])
- return false;
- alreadyImported[imp.url] = true;
- }
- return true;
- }).map(function(imp) {
- if(!loaderUtils.isUrlRequest(imp.url, root)) {
- return "exports.push([module.id, " +
- JSON.stringify("@import url(" + imp.url + ");") + ", " +
- JSON.stringify(imp.mediaQuery) + "]);";
- } else {
- var importUrl = importUrlPrefix + imp.url;
- return "exports.i(require(" + loaderUtils.stringifyRequest(this, importUrl) + "), " + JSON.stringify(imp.mediaQuery) + ");";
- }
- }, this).join("\n");
-
- function importItemMatcher(item) {
- var match = result.importItemRegExp.exec(item);
- var idx = +match[1];
- var importItem = result.importItems[idx];
- var importUrl = importUrlPrefix + importItem.url;
- return "\" + require(" + loaderUtils.stringifyRequest(this, importUrl) + ").locals" +
- "[" + JSON.stringify(importItem.export) + "] + \"";
- }
-
- cssAsString = cssAsString.replace(result.importItemRegExpG, importItemMatcher.bind(this));
- if(query.url !== false) {
- cssAsString = cssAsString.replace(result.urlItemRegExpG, function(item) {
- var match = result.urlItemRegExp.exec(item);
- var idx = +match[1];
- var urlItem = result.urlItems[idx];
- var url = urlItem.url;
- idx = url.indexOf("?#");
- if(idx < 0) idx = url.indexOf("#");
- var urlRequest;
- if(idx > 0) { // idx === 0 is catched by isUrlRequest
- // in cases like url('webfont.eot?#iefix')
- urlRequest = url.substr(0, idx);
- return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"" +
- url.substr(idx);
- }
- urlRequest = url;
- return "\" + require(" + loaderUtils.stringifyRequest(this, urlRequest) + ") + \"";
- }.bind(this));
- }
-
-
- var exportJs = compileExports(result, importItemMatcher.bind(this), camelCaseKeys);
- if (exportJs) {
- exportJs = "exports.locals = " + exportJs + ";";
- }
-
- var moduleJs;
- if(query.sourceMap && result.map) {
- // add a SourceMap
- map = result.map;
- if(map.sources) {
- map.sources = map.sources.map(function(source) {
- source = source.split("!").pop();
- var p = path.relative(query.context || this.options.context, source).replace(/\\/g, "/");
- if(p.indexOf("../") !== 0)
- p = "./" + p;
- return "/" + p;
- }, this);
- map.sourceRoot = "webpack://";
- }
- map.file = map.file.split("!").pop();
- map = JSON.stringify(map);
- moduleJs = "exports.push([module.id, " + cssAsString + ", \"\", " + map + "]);";
- } else {
- moduleJs = "exports.push([module.id, " + cssAsString + ", \"\"]);";
- }
-
- // embed runtime
- callback(null, "exports = module.exports = require(" + loaderUtils.stringifyRequest(this, require.resolve("./css-base.js")) + ")();\n" +
- "// imports\n" +
- importJs + "\n\n" +
- "// module\n" +
- moduleJs + "\n\n" +
- "// exports\n" +
- exportJs);
- }.bind(this));
-};
diff --git a/lib/localsLoader.js b/lib/localsLoader.js
deleted file mode 100644
index c1982a48..00000000
--- a/lib/localsLoader.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-var loaderUtils = require("loader-utils");
-var processCss = require("./processCss");
-var getImportPrefix = require("./getImportPrefix");
-var compileExports = require("./compile-exports");
-
-
-module.exports = function(content) {
- if(this.cacheable) this.cacheable();
- var callback = this.async();
- var query = loaderUtils.parseQuery(this.query);
- var moduleMode = query.modules || query.module;
- var camelCaseKeys = query.camelCase || query.camelcase;
-
- processCss(content, null, {
- mode: moduleMode ? "local" : "global",
- query: query,
- minimize: this.minimize,
- loaderContext: this
- }, function(err, result) {
- if(err) return callback(err);
-
- // for importing CSS
- var importUrlPrefix = getImportPrefix(this, query);
-
- function importItemMatcher(item) {
- var match = result.importItemRegExp.exec(item);
- var idx = +match[1];
- var importItem = result.importItems[idx];
- var importUrl = importUrlPrefix + importItem.url;
- return "\" + require(" + loaderUtils.stringifyRequest(this, importUrl) + ")" +
- "[" + JSON.stringify(importItem.export) + "] + \"";
- }
-
- var exportJs = compileExports(result, importItemMatcher.bind(this), camelCaseKeys);
- if (exportJs) {
- exportJs = "module.exports = " + exportJs + ";";
- }
-
-
- callback(null, exportJs);
- }.bind(this));
-};
diff --git a/lib/processCss.js b/lib/processCss.js
deleted file mode 100644
index c6e8d102..00000000
--- a/lib/processCss.js
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-var formatCodeFrame = require("babel-code-frame");
-var Tokenizer = require("css-selector-tokenizer");
-var postcss = require("postcss");
-var loaderUtils = require("loader-utils");
-var assign = require("object-assign");
-var getLocalIdent = require("./getLocalIdent");
-
-var localByDefault = require("postcss-modules-local-by-default");
-var extractImports = require("postcss-modules-extract-imports");
-var modulesScope = require("postcss-modules-scope");
-var modulesValues = require("postcss-modules-values");
-var cssnano = require("cssnano");
-
-var parserPlugin = postcss.plugin("css-loader-parser", function(options) {
- return function(css) {
- var imports = {};
- var exports = {};
- var importItems = [];
- var urlItems = [];
-
- function replaceImportsInString(str) {
- if(options.import) {
- var tokens = str.split(/(\S+)/);
- tokens = tokens.map(function (token) {
- var importIndex = imports["$" + token];
- if(typeof importIndex === "number") {
- return "___CSS_LOADER_IMPORT___" + importIndex + "___";
- }
- return token;
- });
- return tokens.join("");
- }
- return str;
- }
-
- if(options.import) {
- css.walkAtRules("import", function(rule) {
- var values = Tokenizer.parseValues(rule.params);
- var url = values.nodes[0].nodes[0];
- if(url.type === "url") {
- url = url.url;
- } else if(url.type === "string") {
- url = url.value;
- } else throw rule.error("Unexpected format" + rule.params);
- values.nodes[0].nodes.shift();
- var mediaQuery = Tokenizer.stringifyValues(values);
- if(loaderUtils.isUrlRequest(url, options.root) && options.mode === "global") {
- url = loaderUtils.urlToRequest(url, options.root);
- }
- importItems.push({
- url: url,
- mediaQuery: mediaQuery
- });
- rule.remove();
- });
- }
-
- css.walkRules(function(rule) {
- if(rule.selector === ":export") {
- rule.walkDecls(function(decl) {
- exports[decl.prop] = decl.value;
- });
- rule.remove();
- } else if(/^:import\(.+\)$/.test(rule.selector)) {
- var match = /^:import\((.+)\)$/.exec(rule.selector);
- var url = loaderUtils.parseString(match[1]);
- rule.walkDecls(function(decl) {
- imports["$" + decl.prop] = importItems.length;
- importItems.push({
- url: url,
- export: decl.value
- });
- });
- rule.remove();
- }
- });
-
- Object.keys(exports).forEach(function(exportName) {
- exports[exportName] = replaceImportsInString(exports[exportName]);
- });
-
- function processNode(item) {
- switch (item.type) {
- case "value":
- item.nodes.forEach(processNode);
- break;
- case "nested-item":
- item.nodes.forEach(processNode);
- break;
- case "item":
- var importIndex = imports["$" + item.name];
- if (typeof importIndex === "number") {
- item.name = "___CSS_LOADER_IMPORT___" + importIndex + "___";
- }
- break;
- case "url":
- if (options.url && !/^#/.test(item.url) && loaderUtils.isUrlRequest(item.url, options.root)) {
- item.stringType = "";
- delete item.innerSpacingBefore;
- delete item.innerSpacingAfter;
- var url = item.url;
- item.url = "___CSS_LOADER_URL___" + urlItems.length + "___";
- urlItems.push({
- url: url
- });
- }
- break;
- }
- }
-
- css.walkDecls(function(decl) {
- var values = Tokenizer.parseValues(decl.value);
- values.nodes.forEach(function(value) {
- value.nodes.forEach(processNode);
- });
- decl.value = Tokenizer.stringifyValues(values);
- });
- css.walkAtRules(function(atrule) {
- if(typeof atrule.params === "string") {
- atrule.params = replaceImportsInString(atrule.params);
- }
- });
-
- options.importItems = importItems;
- options.urlItems = urlItems;
- options.exports = exports;
- };
-});
-
-module.exports = function processCss(inputSource, inputMap, options, callback) {
- var query = options.query;
- var root = query.root;
- var context = query.context;
- var localIdentName = query.localIdentName || "[hash:base64]";
- var localIdentRegExp = query.localIdentRegExp;
- var forceMinimize = query.minimize;
- var minimize = typeof forceMinimize !== "undefined" ? !!forceMinimize : options.minimize;
-
- var customGetLocalIdent = query.getLocalIdent || getLocalIdent;
-
- var parserOptions = {
- root: root,
- mode: options.mode,
- url: query.url !== false,
- import: query.import !== false
- };
-
- var pipeline = postcss([
- localByDefault({
- mode: options.mode,
- rewriteUrl: function(global, url) {
- if(parserOptions.url){
- if(!loaderUtils.isUrlRequest(url, root)) {
- return url;
- }
- if(global) {
- return loaderUtils.urlToRequest(url, root);
- }
- }
- return url;
- }
- }),
- extractImports(),
- modulesValues,
- modulesScope({
- generateScopedName: function generateScopedName (exportName) {
- return customGetLocalIdent(options.loaderContext, localIdentName, exportName, {
- regExp: localIdentRegExp,
- hashPrefix: query.hashPrefix || "",
- context: context
- });
- }
- }),
- parserPlugin(parserOptions)
- ]);
-
- if(minimize) {
- var minimizeOptions = assign({}, query);
- ["zindex", "normalizeUrl", "discardUnused", "mergeIdents", "reduceIdents", "autoprefixer"].forEach(function(name) {
- if(typeof minimizeOptions[name] === "undefined")
- minimizeOptions[name] = false;
- });
- pipeline.use(cssnano(minimizeOptions));
- }
-
- pipeline.process(inputSource, {
- // we need a prefix to avoid path rewriting of PostCSS
- from: "/css-loader!" + options.from,
- to: options.to,
- map: {
- prev: inputMap,
- sourcesContent: true,
- inline: false,
- annotation: false
- }
- }).then(function(result) {
- callback(null, {
- source: result.css,
- map: result.map && result.map.toJSON(),
- exports: parserOptions.exports,
- importItems: parserOptions.importItems,
- importItemRegExpG: /___CSS_LOADER_IMPORT___([0-9]+)___/g,
- importItemRegExp: /___CSS_LOADER_IMPORT___([0-9]+)___/,
- urlItems: parserOptions.urlItems,
- urlItemRegExpG: /___CSS_LOADER_URL___([0-9]+)___/g,
- urlItemRegExp: /___CSS_LOADER_URL___([0-9]+)___/
- });
- }).catch(function(err) {
- if (err.name === 'CssSyntaxError') {
- var wrappedError = new CSSLoaderError(
- 'Syntax Error',
- err.reason,
- err.line != null && err.column != null
- ? {line: err.line, column: err.column}
- : null,
- err.input.source
- );
- callback(wrappedError);
- } else {
- callback(err);
- }
- });
-};
-
-function formatMessage(message, loc, source) {
- var formatted = message;
- if (loc) {
- formatted = formatted
- + ' (' + loc.line + ':' + loc.column + ')';
- }
- if (loc && source) {
- formatted = formatted
- + '\n\n' + formatCodeFrame(source, loc.line, loc.column) + '\n';
- }
- return formatted;
-}
-
-function CSSLoaderError(name, message, loc, source, error) {
- Error.call(this);
- Error.captureStackTrace(this, CSSLoaderError);
- this.name = name;
- this.error = error;
- this.message = formatMessage(message, loc, source);
- this.hideStack = true;
-}
-
-CSSLoaderError.prototype = Object.create(Error.prototype);
-CSSLoaderError.prototype.constructor = CSSLoaderError;
diff --git a/lint-staged.config.js b/lint-staged.config.js
new file mode 100644
index 00000000..77a86a71
--- /dev/null
+++ b/lint-staged.config.js
@@ -0,0 +1,4 @@
+module.exports = {
+ '*.js': ['prettier --write', 'eslint --fix', 'git add'],
+ '*.{json,md,yml,css}': ['prettier --write', 'git add'],
+};
diff --git a/locals.js b/locals.js
deleted file mode 100644
index 2a85707e..00000000
--- a/locals.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-module.exports = require("./lib/localsLoader");
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000..5df23e9e
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,12721 @@
+{
+ "name": "css-loader",
+ "version": "3.2.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/cli": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.5.5.tgz",
+ "integrity": "sha512-UHI+7pHv/tk9g6WXQKYz+kmXTI77YtuY3vqC59KIqcoWEjsJJSG6rAxKaLsgj3LDyadsPrCB929gVOKM6Hui0w==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^2.0.4",
+ "commander": "^2.8.1",
+ "convert-source-map": "^1.1.0",
+ "fs-readdir-recursive": "^1.1.0",
+ "glob": "^7.0.0",
+ "lodash": "^4.17.13",
+ "mkdirp": "^0.5.1",
+ "output-file-sync": "^2.0.0",
+ "slash": "^2.0.0",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz",
+ "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.5.5",
+ "@babel/helpers": "^7.5.5",
+ "@babel/parser": "^7.5.5",
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.5.5",
+ "@babel/types": "^7.5.5",
+ "convert-source-map": "^1.1.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.13",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "json5": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+ "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz",
+ "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.5.5",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz",
+ "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
+ "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-call-delegate": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz",
+ "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.4.4",
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-define-map": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz",
+ "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/types": "^7.5.5",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
+ "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
+ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.0.0",
+ "@babel/template": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
+ "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz",
+ "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz",
+ "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.5.5"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz",
+ "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz",
+ "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-simple-access": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/template": "^7.4.4",
+ "@babel/types": "^7.5.5",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
+ "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+ "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
+ "dev": true
+ },
+ "@babel/helper-regex": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz",
+ "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
+ "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-wrap-function": "^7.1.0",
+ "@babel/template": "^7.1.0",
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz",
+ "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.5.5",
+ "@babel/helper-optimise-call-expression": "^7.0.0",
+ "@babel/traverse": "^7.5.5",
+ "@babel/types": "^7.5.5"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz",
+ "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz",
+ "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/template": "^7.1.0",
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.2.0"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz",
+ "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.5.5",
+ "@babel/types": "^7.5.5"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz",
+ "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==",
+ "dev": true
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz",
+ "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.1.0",
+ "@babel/plugin-syntax-async-generators": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz",
+ "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
+ "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-json-strings": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz",
+ "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz",
+ "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
+ "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
+ "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
+ "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
+ "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
+ "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz",
+ "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.1.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
+ "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz",
+ "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz",
+ "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-define-map": "^7.5.5",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-optimise-call-expression": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.5.5",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
+ "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz",
+ "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz",
+ "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz",
+ "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
+ "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
+ "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz",
+ "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
+ "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
+ "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz",
+ "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz",
+ "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.4.4",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-simple-access": "^7.1.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz",
+ "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.4.4",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz",
+ "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz",
+ "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==",
+ "dev": true,
+ "requires": {
+ "regexp-tree": "^0.1.6"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
+ "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz",
+ "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.5.5"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
+ "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-call-delegate": "^7.4.4",
+ "@babel/helper-get-function-arity": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
+ "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz",
+ "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.14.0"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz",
+ "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
+ "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
+ "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
+ "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
+ "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
+ "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz",
+ "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz",
+ "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+ "@babel/plugin-proposal-dynamic-import": "^7.5.0",
+ "@babel/plugin-proposal-json-strings": "^7.2.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.5.5",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+ "@babel/plugin-syntax-async-generators": "^7.2.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.2.0",
+ "@babel/plugin-syntax-json-strings": "^7.2.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
+ "@babel/plugin-transform-arrow-functions": "^7.2.0",
+ "@babel/plugin-transform-async-to-generator": "^7.5.0",
+ "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
+ "@babel/plugin-transform-block-scoping": "^7.5.5",
+ "@babel/plugin-transform-classes": "^7.5.5",
+ "@babel/plugin-transform-computed-properties": "^7.2.0",
+ "@babel/plugin-transform-destructuring": "^7.5.0",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/plugin-transform-duplicate-keys": "^7.5.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
+ "@babel/plugin-transform-for-of": "^7.4.4",
+ "@babel/plugin-transform-function-name": "^7.4.4",
+ "@babel/plugin-transform-literals": "^7.2.0",
+ "@babel/plugin-transform-member-expression-literals": "^7.2.0",
+ "@babel/plugin-transform-modules-amd": "^7.5.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.5.0",
+ "@babel/plugin-transform-modules-systemjs": "^7.5.0",
+ "@babel/plugin-transform-modules-umd": "^7.2.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5",
+ "@babel/plugin-transform-new-target": "^7.4.4",
+ "@babel/plugin-transform-object-super": "^7.5.5",
+ "@babel/plugin-transform-parameters": "^7.4.4",
+ "@babel/plugin-transform-property-literals": "^7.2.0",
+ "@babel/plugin-transform-regenerator": "^7.4.5",
+ "@babel/plugin-transform-reserved-words": "^7.2.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.2.0",
+ "@babel/plugin-transform-spread": "^7.2.0",
+ "@babel/plugin-transform-sticky-regex": "^7.2.0",
+ "@babel/plugin-transform-template-literals": "^7.4.4",
+ "@babel/plugin-transform-typeof-symbol": "^7.2.0",
+ "@babel/plugin-transform-unicode-regex": "^7.4.4",
+ "@babel/types": "^7.5.5",
+ "browserslist": "^4.6.0",
+ "core-js-compat": "^3.1.1",
+ "invariant": "^2.2.2",
+ "js-levenshtein": "^1.1.3",
+ "semver": "^5.5.0"
+ }
+ },
+ "@babel/template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+ "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz",
+ "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.5.5",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.5.5",
+ "@babel/types": "^7.5.5",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+ "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@cnakazawa/watch": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz",
+ "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==",
+ "dev": true,
+ "requires": {
+ "exec-sh": "^0.3.2",
+ "minimist": "^1.2.0"
+ }
+ },
+ "@commitlint/cli": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-8.1.0.tgz",
+ "integrity": "sha512-83K5C2nIAgoZlzMegf0/MEBjX+ampUyc/u79RxgX9ZYjzos+RQtNyO7I43dztVxPXSwAnX9XRgoOfkGWA4nbig==",
+ "dev": true,
+ "requires": {
+ "@commitlint/format": "^8.1.0",
+ "@commitlint/lint": "^8.1.0",
+ "@commitlint/load": "^8.1.0",
+ "@commitlint/read": "^8.1.0",
+ "babel-polyfill": "6.26.0",
+ "chalk": "2.3.1",
+ "get-stdin": "7.0.0",
+ "lodash": "4.17.14",
+ "meow": "5.0.0",
+ "resolve-from": "5.0.0",
+ "resolve-global": "1.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz",
+ "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.2.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.14",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
+ "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@commitlint/config-conventional": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-8.1.0.tgz",
+ "integrity": "sha512-/JY+FNBnrT91qzDVIoV1Buiigvj7Le7ezFw+oRqu0nYREX03k7xnaG/7t7rUSvm7hM6dnLSOlaUsevjgMI9AEw==",
+ "dev": true
+ },
+ "@commitlint/ensure": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-8.1.0.tgz",
+ "integrity": "sha512-dBU4CcjN0vJSDNOeSpaHNgQ1ra444u4USvI6PTaHVAS4aeDpZ5Cds1rxkZNsocu48WNycUu0jP84+zjcw2pPLQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.14"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.14",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
+ "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
+ "dev": true
+ }
+ }
+ },
+ "@commitlint/execute-rule": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-8.1.0.tgz",
+ "integrity": "sha512-+vpH3RFuO6ypuCqhP2rSqTjFTQ7ClzXtUvXphpROv9v9+7zH4L+Ex+wZLVkL8Xj2cxefSLn/5Kcqa9XyJTn3kg==",
+ "dev": true
+ },
+ "@commitlint/format": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-8.1.0.tgz",
+ "integrity": "sha512-D0cmabUTQIKdABgt08d9JAvO9+lMRAmkcsZx8TMScY502R67HCw77JhzRDcw1RmqX5rN8JO6ZjDHO92Pbwlt+Q==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "@commitlint/is-ignored": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-8.1.0.tgz",
+ "integrity": "sha512-HUSxx6kuLbqrQ8jb5QRzo+yR+CIXgA9HNcIcZ1qWrb+O9GOixt3mlW8li1IcfIgfODlaWoxIz0jYCxR08IoQLg==",
+ "dev": true,
+ "requires": {
+ "@types/semver": "^6.0.1",
+ "semver": "6.1.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
+ "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==",
+ "dev": true
+ }
+ }
+ },
+ "@commitlint/lint": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-8.1.0.tgz",
+ "integrity": "sha512-WYjbUgtqvnlVH3S3XPZMAa+N7KO0yQ+GuUG20Qra+EtER6SRYawykmEs4wAyrmY8VcFXUnKgSlIQUsqmGKwNZQ==",
+ "dev": true,
+ "requires": {
+ "@commitlint/is-ignored": "^8.1.0",
+ "@commitlint/parse": "^8.1.0",
+ "@commitlint/rules": "^8.1.0",
+ "babel-runtime": "^6.23.0",
+ "lodash": "4.17.14"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.14",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
+ "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
+ "dev": true
+ }
+ }
+ },
+ "@commitlint/load": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-8.1.0.tgz",
+ "integrity": "sha512-ra02Dvmd7Gp1+uFLzTY3yGOpHjPzl5T9wYg/xrtPJNiOWXvQ0Mw7THw+ucd1M5iLUWjvdavv2N87YDRc428wHg==",
+ "dev": true,
+ "requires": {
+ "@commitlint/execute-rule": "^8.1.0",
+ "@commitlint/resolve-extends": "^8.1.0",
+ "babel-runtime": "^6.23.0",
+ "chalk": "2.4.2",
+ "cosmiconfig": "^5.2.0",
+ "lodash": "4.17.14",
+ "resolve-from": "^5.0.0"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.14",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
+ "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
+ "dev": true
+ }
+ }
+ },
+ "@commitlint/message": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-8.1.0.tgz",
+ "integrity": "sha512-AjHq022G8jQQ/3YrBOjwVBD4xF75hvC3vcvFoBIb7cC8vad1QWq+1w+aks0KlEK5IW+/+7ORZXIH+oyW7h3+8A==",
+ "dev": true
+ },
+ "@commitlint/parse": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-8.1.0.tgz",
+ "integrity": "sha512-n4fEbZ5kdK5HChvne7Mj8rGGkKMfA4H11IuWiWmmMzgmZTNb/B04LPrzdUm4lm3f10XzM2JMM7PLXqofQJOGvA==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-angular": "^1.3.3",
+ "conventional-commits-parser": "^2.1.0",
+ "lodash": "^4.17.11"
+ }
+ },
+ "@commitlint/read": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-8.1.0.tgz",
+ "integrity": "sha512-PKsGMQFEr2sX/+orI71b82iyi8xFqb7F4cTvsLxzB5x6/QutxPVM3rg+tEVdi6rBKIDuqRIp2puDZQuREZs3vg==",
+ "dev": true,
+ "requires": {
+ "@commitlint/top-level": "^8.1.0",
+ "@marionebl/sander": "^0.6.0",
+ "babel-runtime": "^6.23.0",
+ "git-raw-commits": "^1.3.0"
+ }
+ },
+ "@commitlint/resolve-extends": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-8.1.0.tgz",
+ "integrity": "sha512-r/y+CeKW72Oa9BUctS1+I/MFCDiI3lfhwfQ65Tpfn6eZ4CuBYKzrCRi++GTHeAFKE3y8q1epJq5Rl/1GBejtBw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "^12.0.2",
+ "import-fresh": "^3.0.0",
+ "lodash": "4.17.14",
+ "resolve-from": "^5.0.0",
+ "resolve-global": "^1.0.0"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.14",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
+ "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
+ "dev": true
+ }
+ }
+ },
+ "@commitlint/rules": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-8.1.0.tgz",
+ "integrity": "sha512-hlM8VfNjsOkbvMteFyqn0c3akiUjqG09Iid28MBLrXl/d+8BR3eTzwJ4wMta4oz/iqGyrIywvg1FpHrV977MPA==",
+ "dev": true,
+ "requires": {
+ "@commitlint/ensure": "^8.1.0",
+ "@commitlint/message": "^8.1.0",
+ "@commitlint/to-lines": "^8.1.0",
+ "babel-runtime": "^6.23.0"
+ }
+ },
+ "@commitlint/to-lines": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-8.1.0.tgz",
+ "integrity": "sha512-Lh4OH1bInI8GME/7FggS0/XkIMEJdTObMbXRyPRGaPcWH5S7zpB6y+b4qjzBHXAbEv2O46QAAMjZ+ywPQCpmYQ==",
+ "dev": true
+ },
+ "@commitlint/top-level": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-8.1.0.tgz",
+ "integrity": "sha512-EvQuofuA/+0l1w9pkG/PRyIwACmZdIh9qxyax7w7mR8qqmSHscqf2jARIylh1TOx0uI9egO8MuPLiwC1RwyREA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ }
+ }
+ },
+ "@csstools/convert-colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
+ "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==",
+ "dev": true
+ },
+ "@jest/console": {
+ "version": "24.7.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz",
+ "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==",
+ "dev": true,
+ "requires": {
+ "@jest/source-map": "^24.3.0",
+ "chalk": "^2.0.1",
+ "slash": "^2.0.0"
+ }
+ },
+ "@jest/core": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz",
+ "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/reporters": "^24.8.0",
+ "@jest/test-result": "^24.8.0",
+ "@jest/transform": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.1.15",
+ "jest-changed-files": "^24.8.0",
+ "jest-config": "^24.8.0",
+ "jest-haste-map": "^24.8.0",
+ "jest-message-util": "^24.8.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve-dependencies": "^24.8.0",
+ "jest-runner": "^24.8.0",
+ "jest-runtime": "^24.8.0",
+ "jest-snapshot": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "jest-validate": "^24.8.0",
+ "jest-watcher": "^24.8.0",
+ "micromatch": "^3.1.10",
+ "p-each-series": "^1.0.0",
+ "pirates": "^4.0.1",
+ "realpath-native": "^1.1.0",
+ "rimraf": "^2.5.4",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ }
+ }
+ },
+ "@jest/environment": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz",
+ "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==",
+ "dev": true,
+ "requires": {
+ "@jest/fake-timers": "^24.8.0",
+ "@jest/transform": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "jest-mock": "^24.8.0"
+ }
+ },
+ "@jest/fake-timers": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz",
+ "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "jest-message-util": "^24.8.0",
+ "jest-mock": "^24.8.0"
+ }
+ },
+ "@jest/reporters": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz",
+ "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.8.0",
+ "@jest/test-result": "^24.8.0",
+ "@jest/transform": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "istanbul-lib-coverage": "^2.0.2",
+ "istanbul-lib-instrument": "^3.0.1",
+ "istanbul-lib-report": "^2.0.4",
+ "istanbul-lib-source-maps": "^3.0.1",
+ "istanbul-reports": "^2.1.1",
+ "jest-haste-map": "^24.8.0",
+ "jest-resolve": "^24.8.0",
+ "jest-runtime": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "jest-worker": "^24.6.0",
+ "node-notifier": "^5.2.1",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^2.0.0"
+ }
+ },
+ "@jest/source-map": {
+ "version": "24.3.0",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz",
+ "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.1.15",
+ "source-map": "^0.6.0"
+ }
+ },
+ "@jest/test-result": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz",
+ "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/types": "^24.8.0",
+ "@types/istanbul-lib-coverage": "^2.0.0"
+ }
+ },
+ "@jest/test-sequencer": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz",
+ "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==",
+ "dev": true,
+ "requires": {
+ "@jest/test-result": "^24.8.0",
+ "jest-haste-map": "^24.8.0",
+ "jest-runner": "^24.8.0",
+ "jest-runtime": "^24.8.0"
+ }
+ },
+ "@jest/transform": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz",
+ "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^24.8.0",
+ "babel-plugin-istanbul": "^5.1.0",
+ "chalk": "^2.0.1",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.1.15",
+ "jest-haste-map": "^24.8.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-util": "^24.8.0",
+ "micromatch": "^3.1.10",
+ "realpath-native": "^1.1.0",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "2.4.1"
+ }
+ },
+ "@jest/types": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz",
+ "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^1.1.1",
+ "@types/yargs": "^12.0.9"
+ }
+ },
+ "@marionebl/sander": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/@marionebl/sander/-/sander-0.6.1.tgz",
+ "integrity": "sha1-GViWWHTyS8Ub5Ih1/rUNZC/EH3s=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.3",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.2"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz",
+ "integrity": "sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.1",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz",
+ "integrity": "sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz",
+ "integrity": "sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.1",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@samverschueren/stream-to-observable": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
+ "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==",
+ "dev": true,
+ "requires": {
+ "any-observable": "^0.3.0"
+ }
+ },
+ "@types/babel__core": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.2.tgz",
+ "integrity": "sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "@types/babel__generator": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz",
+ "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__template": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz",
+ "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__traverse": {
+ "version": "7.0.7",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz",
+ "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.3.0"
+ }
+ },
+ "@types/events": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
+ "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
+ "dev": true
+ },
+ "@types/glob": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
+ "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+ "dev": true,
+ "requires": {
+ "@types/events": "*",
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/istanbul-lib-coverage": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
+ "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
+ "dev": true
+ },
+ "@types/istanbul-lib-report": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz",
+ "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz",
+ "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*",
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "12.6.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz",
+ "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==",
+ "dev": true
+ },
+ "@types/normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
+ "dev": true
+ },
+ "@types/semver": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.0.1.tgz",
+ "integrity": "sha512-ffCdcrEE5h8DqVxinQjo+2d1q+FV5z7iNtPofw3JsrltSoSVlOGaW0rY8XxtO9XukdTn8TaCGWmk2VFGhI70mg==",
+ "dev": true
+ },
+ "@types/stack-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
+ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==",
+ "dev": true
+ },
+ "@types/yargs": {
+ "version": "12.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz",
+ "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==",
+ "dev": true
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
+ "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
+ "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
+ "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
+ "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
+ "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
+ "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
+ "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "mamacro": "^0.0.3"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
+ "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
+ "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
+ "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
+ "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
+ "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
+ "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/helper-wasm-section": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-opt": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
+ "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
+ "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
+ "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
+ "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/floating-point-hex-parser": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-code-frame": "1.8.5",
+ "@webassemblyjs/helper-fsm": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
+ "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webpack-contrib/defaults": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@webpack-contrib/defaults/-/defaults-5.0.2.tgz",
+ "integrity": "sha512-S1eSkPza/9e/8OuENfjOfDYWn+ZxYr8dsMlz4gMzI82eKMOyxuHi+SBW8zUsC8I/qWjIqx9CDhsahirxL+ZSaA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.0",
+ "git-username": "^1.0.0",
+ "loader-utils": "^1.2.3",
+ "mrm-core": "^3.1.1",
+ "path-exists": "^4.0.0",
+ "schema-utils": "^1.0.0",
+ "user-meta": "^1.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "@webpack-contrib/eslint-config-webpack": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@webpack-contrib/eslint-config-webpack/-/eslint-config-webpack-3.0.0.tgz",
+ "integrity": "sha512-3f0dwuTZ1JZpnoGQ6tAKBWluZKZZBXr1ADoaOAbPiW0OvSN7o0wXFLGyfw6J+fW756xIkZLZ8JDYP5zInIRvBA==",
+ "dev": true
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "JSONStream": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+ "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
+ "dev": true,
+ "requires": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ }
+ },
+ "abab": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
+ "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==",
+ "dev": true
+ },
+ "acorn": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz",
+ "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.3.tgz",
+ "integrity": "sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.1",
+ "acorn-walk": "^6.0.1"
+ }
+ },
+ "acorn-jsx": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
+ "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
+ "dev": true
+ },
+ "acorn-walk": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
+ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "dev": true
+ },
+ "ajv-keywords": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="
+ },
+ "ansi": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
+ "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "any-observable": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
+ "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "dev": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
+ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-ify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
+ "dev": true
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
+ "async": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
+ "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=",
+ "dev": true
+ },
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+ "dev": true
+ },
+ "async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz",
+ "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.6.3",
+ "caniuse-lite": "^1.0.30000980",
+ "chalk": "^2.4.2",
+ "normalize-range": "^0.1.2",
+ "num2fraction": "^1.2.2",
+ "postcss": "^7.0.17",
+ "postcss-value-parser": "^4.0.0"
+ }
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "babel-jest": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz",
+ "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==",
+ "dev": true,
+ "requires": {
+ "@jest/transform": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "@types/babel__core": "^7.1.0",
+ "babel-plugin-istanbul": "^5.1.0",
+ "babel-preset-jest": "^24.6.0",
+ "chalk": "^2.4.2",
+ "slash": "^2.0.0"
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-istanbul": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz",
+ "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "find-up": "^3.0.0",
+ "istanbul-lib-instrument": "^3.3.0",
+ "test-exclude": "^5.2.3"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ }
+ }
+ },
+ "babel-plugin-jest-hoist": {
+ "version": "24.6.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz",
+ "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==",
+ "dev": true,
+ "requires": {
+ "@types/babel__traverse": "^7.0.6"
+ }
+ },
+ "babel-polyfill": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
+ "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "core-js": "^2.5.0",
+ "regenerator-runtime": "^0.10.5"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
+ "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
+ "dev": true
+ }
+ }
+ },
+ "babel-preset-jest": {
+ "version": "24.6.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz",
+ "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
+ "babel-plugin-jest-hoist": "^24.6.0"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "dev": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.5.5",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
+ "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browser-process-hrtime": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
+ "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==",
+ "dev": true
+ },
+ "browser-resolve": {
+ "version": "1.11.3",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
+ "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
+ "dev": true,
+ "requires": {
+ "resolve": "1.1.7"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ }
+ }
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz",
+ "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30000984",
+ "electron-to-chromium": "^1.3.191",
+ "node-releases": "^1.1.25"
+ }
+ },
+ "bser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz",
+ "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==",
+ "dev": true,
+ "requires": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "cacache": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz",
+ "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "dev": true,
+ "requires": {
+ "callsites": "^2.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+ "dev": true
+ }
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "dev": true,
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "camelcase-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
+ "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0",
+ "map-obj": "^2.0.0",
+ "quick-lru": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ }
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30000989",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz",
+ "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==",
+ "dev": true
+ },
+ "caporal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/caporal/-/caporal-1.1.0.tgz",
+ "integrity": "sha512-R5qo2QGoqBM6RvzHonGhUuEJSeqEa4lD1r+cPUEY2+YsXhpQVTS2TvScfIbi6ydFdhzFCNeNUB1v0YrRBvsbdg==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.4.7",
+ "cli-table3": "^0.5.0",
+ "colorette": "1.0.1",
+ "fast-levenshtein": "^2.0.6",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.kebabcase": "^4.1.1",
+ "lodash.merge": "^4.6.0",
+ "micromist": "1.1.0",
+ "prettyjson": "^1.2.1",
+ "tabtab": "^2.2.2",
+ "winston": "^2.3.1"
+ }
+ },
+ "capture-exit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
+ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
+ "dev": true,
+ "requires": {
+ "rsvp": "^4.8.4"
+ }
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz",
+ "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
+ "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+ "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^1.0.1"
+ }
+ },
+ "cli-table3": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz",
+ "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==",
+ "dev": true,
+ "requires": {
+ "colors": "^1.1.2",
+ "object-assign": "^4.1.0",
+ "string-width": "^2.1.1"
+ }
+ },
+ "cli-truncate": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
+ "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
+ "dev": true,
+ "requires": {
+ "slice-ansi": "0.0.4",
+ "string-width": "^1.0.1"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "slice-ansi": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
+ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "clone-deep": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz",
+ "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
+ "dev": true,
+ "requires": {
+ "for-own": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.0",
+ "shallow-clone": "^1.0.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "colorette": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.0.1.tgz",
+ "integrity": "sha512-40MnlppkzHhFjRhtXunbpqKUT+eJn0gyVGi8aQlNSG8T2CCy31NdD7yktcS0aizH1VP2OhhQCyGMeTp0a/fvaw==",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz",
+ "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
+ "dev": true
+ },
+ "comment-json": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-1.1.3.tgz",
+ "integrity": "sha1-aYbDMw/uDEyeAMI5jNYa+l2PI54=",
+ "dev": true,
+ "requires": {
+ "json-parser": "^1.0.0"
+ }
+ },
+ "commitlint-azure-pipelines-cli": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/commitlint-azure-pipelines-cli/-/commitlint-azure-pipelines-cli-1.0.2.tgz",
+ "integrity": "sha512-Uj5QatjR1HAifoJI7ZjNx3O8iuH0lUnTmja9jGIA4KjEPLfbyctob4i1JgOZ7tGQK918n1uoolyZBjbQ7h/WSw==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0"
+ }
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "compare-func": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
+ "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
+ "dev": true,
+ "requires": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^3.0.0"
+ }
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "^0.1.4"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "conventional-changelog": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.9.tgz",
+ "integrity": "sha512-JbNVm1iGZ3aXxcFZjqKNDNfdgchQjSltWc8rvSniMrkHLsub9Wn20/JLdJNTBM74dt1IA2M+v/mzServ6N37YA==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-angular": "^5.0.3",
+ "conventional-changelog-atom": "^2.0.1",
+ "conventional-changelog-codemirror": "^2.0.1",
+ "conventional-changelog-conventionalcommits": "^4.0.0",
+ "conventional-changelog-core": "^3.2.3",
+ "conventional-changelog-ember": "^2.0.2",
+ "conventional-changelog-eslint": "^3.0.2",
+ "conventional-changelog-express": "^2.0.1",
+ "conventional-changelog-jquery": "^3.0.4",
+ "conventional-changelog-jshint": "^2.0.1",
+ "conventional-changelog-preset-loader": "^2.1.1"
+ },
+ "dependencies": {
+ "conventional-changelog-angular": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz",
+ "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ }
+ }
+ },
+ "conventional-changelog-angular": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz",
+ "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-atom": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.1.tgz",
+ "integrity": "sha512-9BniJa4gLwL20Sm7HWSNXd0gd9c5qo49gCi8nylLFpqAHhkFTj7NQfROq3f1VpffRtzfTQp4VKU5nxbe2v+eZQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-codemirror": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.1.tgz",
+ "integrity": "sha512-23kT5IZWa+oNoUaDUzVXMYn60MCdOygTA2I+UjnOMiYVhZgmVwNd6ri/yDlmQGXHqbKhNR5NoXdBzSOSGxsgIQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-config-spec": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.0.0.tgz",
+ "integrity": "sha512-zQmcBP/pR8tN5MSv+nXG9hOmy+Z6rgEquBerpoEbOKTFPLoxBy/adeUUpshrMpqdZ/ycqbT2AgdTtiIu/9IHGg==",
+ "dev": true
+ },
+ "conventional-changelog-conventionalcommits": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.1.0.tgz",
+ "integrity": "sha512-J3xolGrH8PTxpCqueHOuZtv3Cp73SQOWiBQzlsaugZAZ+hZgcJBonmC+1bQbfGs2neC2S18p2L1Gx+nTEglJTQ==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-core": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz",
+ "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-writer": "^4.0.6",
+ "conventional-commits-parser": "^3.0.3",
+ "dateformat": "^3.0.0",
+ "get-pkg-repo": "^1.0.0",
+ "git-raw-commits": "2.0.0",
+ "git-remote-origin-url": "^2.0.0",
+ "git-semver-tags": "^2.0.3",
+ "lodash": "^4.2.1",
+ "normalize-package-data": "^2.3.5",
+ "q": "^1.5.1",
+ "read-pkg": "^3.0.0",
+ "read-pkg-up": "^3.0.0",
+ "through2": "^3.0.0"
+ },
+ "dependencies": {
+ "conventional-commits-parser": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.3.tgz",
+ "integrity": "sha512-KaA/2EeUkO4bKjinNfGUyqPTX/6w9JGshuQRik4r/wJz7rUw3+D3fDG6sZSEqJvKILzKXFQuFkpPLclcsAuZcg==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.4",
+ "is-text-path": "^2.0.0",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^3.0.0",
+ "trim-off-newlines": "^1.0.0"
+ }
+ },
+ "git-raw-commits": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz",
+ "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==",
+ "dev": true,
+ "requires": {
+ "dargs": "^4.0.1",
+ "lodash.template": "^4.0.2",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ }
+ }
+ },
+ "git-semver-tags": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz",
+ "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==",
+ "dev": true,
+ "requires": {
+ "meow": "^4.0.0",
+ "semver": "^6.0.0"
+ }
+ },
+ "is-text-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
+ "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
+ "dev": true,
+ "requires": {
+ "text-extensions": "^2.0.0"
+ }
+ },
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "text-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.0.0.tgz",
+ "integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==",
+ "dev": true
+ },
+ "through2": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
+ "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2 || 3"
+ }
+ }
+ }
+ },
+ "conventional-changelog-ember": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.2.tgz",
+ "integrity": "sha512-qtZbA3XefO/n6DDmkYywDYi6wDKNNc98MMl2F9PKSaheJ25Trpi3336W8fDlBhq0X+EJRuseceAdKLEMmuX2tg==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-eslint": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.2.tgz",
+ "integrity": "sha512-Yi7tOnxjZLXlCYBHArbIAm8vZ68QUSygFS7PgumPRiEk+9NPUeucy5Wg9AAyKoBprSV3o6P7Oghh4IZSLtKCvQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-express": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.1.tgz",
+ "integrity": "sha512-G6uCuCaQhLxdb4eEfAIHpcfcJ2+ao3hJkbLrw/jSK/eROeNfnxCJasaWdDAfFkxsbpzvQT4W01iSynU3OoPLIw==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-jquery": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.4.tgz",
+ "integrity": "sha512-IVJGI3MseYoY6eybknnTf9WzeQIKZv7aNTm2KQsiFVJH21bfP2q7XVjfoMibdCg95GmgeFlaygMdeoDDa+ZbEQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-jshint": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.1.tgz",
+ "integrity": "sha512-kRFJsCOZzPFm2tzRHULWP4tauGMvccOlXYf3zGeuSW4U0mZhk5NsjnRZ7xFWrTFPlCLV+PNmHMuXp5atdoZmEg==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-preset-loader": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.2.0.tgz",
+ "integrity": "sha512-zXB+5vF7D5Y3Cb/rJfSyCCvFphCVmF8mFqOdncX3BmjZwAtGAPfYrBcT225udilCKvBbHgyzgxqz2GWDB5xShQ==",
+ "dev": true
+ },
+ "conventional-changelog-writer": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.7.tgz",
+ "integrity": "sha512-p/wzs9eYaxhFbrmX/mCJNwJuvvHR+j4Fd0SQa2xyAhYed6KBiZ780LvoqUUvsayP4R1DtC27czalGUhKV2oabw==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "conventional-commits-filter": "^2.0.2",
+ "dateformat": "^3.0.0",
+ "handlebars": "^4.1.2",
+ "json-stringify-safe": "^5.0.1",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "semver": "^6.0.0",
+ "split": "^1.0.0",
+ "through2": "^3.0.0"
+ },
+ "dependencies": {
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "through2": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
+ "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2 || 3"
+ }
+ }
+ }
+ },
+ "conventional-commits-filter": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz",
+ "integrity": "sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ==",
+ "dev": true,
+ "requires": {
+ "lodash.ismatch": "^4.4.0",
+ "modify-values": "^1.0.0"
+ }
+ },
+ "conventional-commits-parser": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz",
+ "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.4",
+ "is-text-path": "^1.0.0",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0",
+ "trim-off-newlines": "^1.0.0"
+ },
+ "dependencies": {
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ }
+ }
+ }
+ },
+ "conventional-recommended-bump": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.0.0.tgz",
+ "integrity": "sha512-iIHkDOuWCC49J/E4WXvXBCCrO2NoGqwjfhm2iUOHPPEik8TVHxczt/hFaWY+4MXeZ/nC53BNfjmlr8+EXOrlvA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^2.0.0",
+ "conventional-changelog-preset-loader": "^2.2.0",
+ "conventional-commits-filter": "^2.0.2",
+ "conventional-commits-parser": "^3.0.3",
+ "git-raw-commits": "2.0.0",
+ "git-semver-tags": "^3.0.0",
+ "meow": "^4.0.0",
+ "q": "^1.5.1"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "conventional-commits-parser": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.3.tgz",
+ "integrity": "sha512-KaA/2EeUkO4bKjinNfGUyqPTX/6w9JGshuQRik4r/wJz7rUw3+D3fDG6sZSEqJvKILzKXFQuFkpPLclcsAuZcg==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.4",
+ "is-text-path": "^2.0.0",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^3.0.0",
+ "trim-off-newlines": "^1.0.0"
+ }
+ },
+ "git-raw-commits": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz",
+ "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==",
+ "dev": true,
+ "requires": {
+ "dargs": "^4.0.1",
+ "lodash.template": "^4.0.2",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ }
+ }
+ },
+ "is-text-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
+ "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
+ "dev": true,
+ "requires": {
+ "text-extensions": "^2.0.0"
+ }
+ },
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+ "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "text-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.0.0.tgz",
+ "integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==",
+ "dev": true
+ },
+ "through2": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
+ "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2 || 3"
+ }
+ }
+ }
+ },
+ "convert-source-map": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-js": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
+ "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==",
+ "dev": true
+ },
+ "core-js-compat": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz",
+ "integrity": "sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.6.2",
+ "core-js-pure": "3.1.4",
+ "semver": "^6.1.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "core-js-pure": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz",
+ "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "dev": true,
+ "requires": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "dependencies": {
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ }
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-env": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz",
+ "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.5",
+ "is-windows": "^1.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "css-blank-pseudo": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz",
+ "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5"
+ }
+ },
+ "css-has-pseudo": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz",
+ "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.6",
+ "postcss-selector-parser": "^5.0.0-rc.4"
+ },
+ "dependencies": {
+ "cssesc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+ "dev": true
+ },
+ "postcss-selector-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+ "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^2.0.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "css-prefers-color-scheme": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz",
+ "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5"
+ }
+ },
+ "cssdb": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz",
+ "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==",
+ "dev": true
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+ },
+ "cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ },
+ "cssstyle": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
+ "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
+ "dev": true,
+ "requires": {
+ "cssom": "0.3.x"
+ }
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "cycle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
+ "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
+ "dev": true
+ },
+ "cyclist": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+ "dev": true
+ },
+ "dargs": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
+ "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "data-urls": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz",
+ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.0",
+ "whatwg-mimetype": "^2.2.0",
+ "whatwg-url": "^7.0.0"
+ },
+ "dependencies": {
+ "whatwg-url": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz",
+ "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ }
+ },
+ "date-fns": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
+ "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
+ "dev": true
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decamelize-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+ "dev": true,
+ "requires": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ }
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-5.0.0.tgz",
+ "integrity": "sha512-TfU3nUY0WDIhN18eq+pgpbLY9AfL5RfiE9czKaTSolc6aK7qASXfDErvYgjV1UqCR4sNXDoxO0/idPmhDUt2Sg==",
+ "dev": true,
+ "requires": {
+ "globby": "^10.0.0",
+ "is-path-cwd": "^2.0.0",
+ "is-path-in-cwd": "^2.0.0",
+ "p-map": "^2.0.0",
+ "rimraf": "^2.6.3"
+ }
+ },
+ "del-cli": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/del-cli/-/del-cli-2.0.0.tgz",
+ "integrity": "sha512-IREsO6mjSTxxvWLKMMUi1G0izhqEBx7qeDkOJ6H3+TJl8gQl6x5C5hK4Sm1GJ51KodUMR6O7HuIhnF24Edua3g==",
+ "dev": true,
+ "requires": {
+ "del": "^4.1.1",
+ "meow": "^5.0.0"
+ },
+ "dependencies": {
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "del": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
+ "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "globby": "^6.1.0",
+ "is-path-cwd": "^2.0.0",
+ "is-path-in-cwd": "^2.0.0",
+ "p-map": "^2.0.0",
+ "pify": "^4.0.1",
+ "rimraf": "^2.6.3"
+ }
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+ "dev": true
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "detect-indent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
+ "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=",
+ "dev": true
+ },
+ "detect-newline": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
+ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
+ "dev": true
+ },
+ "diff-sequences": {
+ "version": "24.3.0",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz",
+ "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "requires": {
+ "path-type": "^4.0.0"
+ },
+ "dependencies": {
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true
+ }
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "domexception": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
+ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
+ "dev": true,
+ "requires": {
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "dot-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
+ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
+ "dotgitignore": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz",
+ "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ }
+ }
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "dev": true,
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "editorconfig": {
+ "version": "0.15.3",
+ "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
+ "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.19.0",
+ "lru-cache": "^4.1.5",
+ "semver": "^5.6.0",
+ "sigmund": "^1.0.1"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.3.215",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.215.tgz",
+ "integrity": "sha512-ZV3OnwF0FlIygwxAG2H92yt7WGjWBpawyFAFu8e9k7xJatY+BPowID0D0Bs3PMACYAJATEejw/I9cawO27ZvTg==",
+ "dev": true
+ },
+ "elegant-spinner": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
+ "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
+ "dev": true
+ },
+ "elliptic": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz",
+ "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
+ "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.4.0",
+ "tapable": "^1.0.0"
+ }
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "is-callable": "^1.1.4",
+ "is-regex": "^1.0.4",
+ "object-keys": "^1.0.12"
+ }
+ },
+ "es-check": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/es-check/-/es-check-5.0.0.tgz",
+ "integrity": "sha512-30n+EZt5KjazXEvyYr2DXJCOJJWfdT1unRp5+Szlcja6uGAB3Sh3QPjRsxd2xgN9SFj4S5P8pdBISwGcDdS45Q==",
+ "dev": true,
+ "requires": {
+ "acorn": "6.0.4",
+ "caporal": "1.1.0",
+ "glob": "^7.1.2"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
+ "escodegen": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz",
+ "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==",
+ "dev": true,
+ "requires": {
+ "esprima": "^3.1.3",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+ "dev": true
+ }
+ }
+ },
+ "eslint": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz",
+ "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.3.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^6.0.0",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^6.4.1",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "glob-parent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
+ "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz",
+ "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.2.0",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^2.0.0",
+ "lodash": "^4.17.12",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.4.0",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ }
+ }
+ },
+ "eslint-config-prettier": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz",
+ "integrity": "sha512-vDrcCFE3+2ixNT5H83g28bO/uYAwibJxerXPj+E7op4qzBCsAV36QfvdAyVOoNxKAH2Os/e01T/2x++V0LPukA==",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^6.0.0"
+ },
+ "dependencies": {
+ "get-stdin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
+ "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.5.0"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
+ "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "pkg-dir": "^2.0.0"
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.18.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
+ "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.2",
+ "eslint-module-utils": "^2.4.0",
+ "has": "^1.0.3",
+ "minimatch": "^3.0.4",
+ "object.values": "^1.1.0",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.11.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
+ "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz",
+ "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.0.0.tgz",
+ "integrity": "sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.7",
+ "acorn-jsx": "^5.0.0",
+ "eslint-visitor-keys": "^1.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz",
+ "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "events": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
+ "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "exec-sh": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz",
+ "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==",
+ "dev": true
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "exit-hook": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expect": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz",
+ "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "ansi-styles": "^3.2.0",
+ "jest-get-type": "^24.8.0",
+ "jest-matcher-utils": "^24.8.0",
+ "jest-message-util": "^24.8.0",
+ "jest-regex-util": "^24.3.0"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz",
+ "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.0",
+ "spawn-sync": "^1.0.15",
+ "tmp": "^0.0.29"
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "eyes": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+ "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ },
+ "fast-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.0.4.tgz",
+ "integrity": "sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.1",
+ "@nodelib/fs.walk": "^1.2.1",
+ "glob-parent": "^5.0.0",
+ "is-glob": "^4.0.1",
+ "merge2": "^1.2.3",
+ "micromatch": "^4.0.2"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
+ "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
+ "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.0.5"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fastq": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
+ "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.0"
+ }
+ },
+ "fb-watchman": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz",
+ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=",
+ "dev": true,
+ "requires": {
+ "bser": "^2.0.0"
+ }
+ },
+ "figgy-pudding": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+ "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+ "dev": true
+ },
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "file-loader": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.1.0.tgz",
+ "integrity": "sha512-ajDk1nlByoalZAGR4b0H6oD+EGlWnyW1qbSxzaUc7RFiqmn+RbXQQRbTc72jsiUIlVusJ4Et58ltds8ZwTfnAw==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.2.3",
+ "schema-utils": "^2.0.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ }
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ }
+ },
+ "flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "dev": true
+ },
+ "flatten": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
+ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
+ "dev": true
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-access": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
+ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+ "dev": true,
+ "requires": {
+ "null-check": "^1.0.0"
+ }
+ },
+ "fs-exists-sync": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz",
+ "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs-readdir-recursive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
+ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
+ "dev": true
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz",
+ "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1",
+ "node-pre-gyp": "^0.12.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.3.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "gauge": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz",
+ "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=",
+ "dev": true,
+ "requires": {
+ "ansi": "^0.3.0",
+ "has-unicode": "^2.0.0",
+ "lodash.pad": "^4.1.0",
+ "lodash.padend": "^4.1.0",
+ "lodash.padstart": "^4.1.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "dev": true
+ },
+ "get-own-enumerable-property-symbols": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz",
+ "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==",
+ "dev": true
+ },
+ "get-pkg-repo": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
+ "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "meow": "^3.3.0",
+ "normalize-package-data": "^2.3.0",
+ "parse-github-repo-url": "^1.3.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ }
+ }
+ },
+ "get-stdin": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz",
+ "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "git-config-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz",
+ "integrity": "sha1-bTP37WPbDQ4RgTFQO6s6ykfVRmQ=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "fs-exists-sync": "^0.1.0",
+ "homedir-polyfill": "^1.0.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "git-raw-commits": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz",
+ "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==",
+ "dev": true,
+ "requires": {
+ "dargs": "^4.0.1",
+ "lodash.template": "^4.0.2",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ }
+ }
+ }
+ },
+ "git-remote-origin-url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
+ "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+ "dev": true,
+ "requires": {
+ "gitconfiglocal": "^1.0.0",
+ "pify": "^2.3.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "git-semver-tags": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-3.0.0.tgz",
+ "integrity": "sha512-T4C/gJ9k2Bnxz+PubtcyiMtUUKrC+Nh9Q4zaECcnmVMwJgPhrNyP/Rf+YpdRqsJbCV/+kYrCH24Xg+IeAmbOPg==",
+ "dev": true,
+ "requires": {
+ "meow": "^4.0.0",
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "git-username": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/git-username/-/git-username-1.0.0.tgz",
+ "integrity": "sha512-xm45KwBR6Eu1jO4umx/o2M84v9TC7tdOBuzLx8ayhdR9H1FBiiG9azz31uC0esDvaWVBTDINpJ5USomk+ja8OQ==",
+ "dev": true,
+ "requires": {
+ "parse-github-url": "^1.0.2",
+ "remote-origin-url": "^1.0.0"
+ }
+ },
+ "gitconfiglocal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+ "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.2"
+ }
+ },
+ "glob": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "globby": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz",
+ "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz",
+ "integrity": "sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==",
+ "dev": true
+ },
+ "growly": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
+ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
+ "dev": true
+ },
+ "handlebars": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
+ "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
+ "dev": true,
+ "requires": {
+ "neo-async": "^2.6.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.5.5",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+ },
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "^1.0.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.2.tgz",
+ "integrity": "sha512-CyjlXII6LMsPMyUzxpTt8fzh5QwzGqPmQXgY/Jyf4Zfp27t/FvfhwoE/8laaMUcMy816CkWF20I7NeQhwwY88w==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^5.1.1"
+ }
+ },
+ "html-encoding-sniffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "dev": true,
+ "requires": {
+ "whatwg-encoding": "^1.0.1"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "husky": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.2.tgz",
+ "integrity": "sha512-WXCtaME2x0o4PJlKY4ap8BzLA+D0zlvefqAvLCPriOOu+x0dpO5uc5tlB7CY6/0SE2EESmoZsj4jW5D09KrJoA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "cosmiconfig": "^5.2.1",
+ "execa": "^1.0.0",
+ "get-stdin": "^7.0.0",
+ "is-ci": "^2.0.0",
+ "opencollective-postinstall": "^2.0.2",
+ "pkg-dir": "^4.2.0",
+ "please-upgrade-node": "^3.1.1",
+ "read-pkg": "^5.1.1",
+ "run-node": "^1.0.0",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
+ "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
+ "read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "requires": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ }
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "icss-utils": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
+ "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+ "requires": {
+ "postcss": "^7.0.14"
+ }
+ },
+ "ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
+ "dev": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz",
+ "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==",
+ "dev": true
+ },
+ "import-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
+ "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+ "dev": true,
+ "requires": {
+ "import-from": "^2.1.0"
+ }
+ },
+ "import-fresh": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
+ "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ }
+ }
+ },
+ "import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
+ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ }
+ }
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ }
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
+ },
+ "infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz",
+ "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^1.1.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^1.0.1",
+ "cli-width": "^2.0.0",
+ "external-editor": "^1.1.0",
+ "figures": "^1.3.5",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.6",
+ "pinkie-promise": "^2.0.0",
+ "run-async": "^2.2.0",
+ "rx": "^4.1.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^2.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "dev": true
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-observable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
+ "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
+ "dev": true,
+ "requires": {
+ "symbol-observable": "^1.1.0"
+ }
+ },
+ "is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+ "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^2.1.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
+ "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.2"
+ }
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
+ "is-text-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
+ "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+ "dev": true,
+ "requires": {
+ "text-extensions": "^1.0.0"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "istanbul-lib-coverage": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
+ "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
+ "dev": true
+ },
+ "istanbul-lib-instrument": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
+ "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
+ "dev": true,
+ "requires": {
+ "@babel/generator": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/template": "^7.4.0",
+ "@babel/traverse": "^7.4.3",
+ "@babel/types": "^7.4.0",
+ "istanbul-lib-coverage": "^2.0.5",
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
+ "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
+ "dev": true,
+ "requires": {
+ "istanbul-lib-coverage": "^2.0.5",
+ "make-dir": "^2.1.0",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz",
+ "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^2.0.5",
+ "make-dir": "^2.1.0",
+ "rimraf": "^2.6.3",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "istanbul-reports": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz",
+ "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==",
+ "dev": true,
+ "requires": {
+ "handlebars": "^4.1.2"
+ }
+ },
+ "jest": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz",
+ "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==",
+ "dev": true,
+ "requires": {
+ "import-local": "^2.0.0",
+ "jest-cli": "^24.8.0"
+ },
+ "dependencies": {
+ "jest-cli": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz",
+ "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==",
+ "dev": true,
+ "requires": {
+ "@jest/core": "^24.8.0",
+ "@jest/test-result": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "import-local": "^2.0.0",
+ "is-ci": "^2.0.0",
+ "jest-config": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "jest-validate": "^24.8.0",
+ "prompts": "^2.0.1",
+ "realpath-native": "^1.1.0",
+ "yargs": "^12.0.2"
+ }
+ }
+ }
+ },
+ "jest-changed-files": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz",
+ "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "execa": "^1.0.0",
+ "throat": "^4.0.0"
+ }
+ },
+ "jest-config": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz",
+ "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.1.0",
+ "@jest/test-sequencer": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "babel-jest": "^24.8.0",
+ "chalk": "^2.0.1",
+ "glob": "^7.1.1",
+ "jest-environment-jsdom": "^24.8.0",
+ "jest-environment-node": "^24.8.0",
+ "jest-get-type": "^24.8.0",
+ "jest-jasmine2": "^24.8.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "jest-validate": "^24.8.0",
+ "micromatch": "^3.1.10",
+ "pretty-format": "^24.8.0",
+ "realpath-native": "^1.1.0"
+ }
+ },
+ "jest-diff": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz",
+ "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1",
+ "diff-sequences": "^24.3.0",
+ "jest-get-type": "^24.8.0",
+ "pretty-format": "^24.8.0"
+ }
+ },
+ "jest-docblock": {
+ "version": "24.3.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz",
+ "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==",
+ "dev": true,
+ "requires": {
+ "detect-newline": "^2.1.0"
+ }
+ },
+ "jest-each": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz",
+ "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "chalk": "^2.0.1",
+ "jest-get-type": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "pretty-format": "^24.8.0"
+ }
+ },
+ "jest-environment-jsdom": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz",
+ "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.8.0",
+ "@jest/fake-timers": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "jest-mock": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "jsdom": "^11.5.1"
+ }
+ },
+ "jest-environment-node": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz",
+ "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==",
+ "dev": true,
+ "requires": {
+ "@jest/environment": "^24.8.0",
+ "@jest/fake-timers": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "jest-mock": "^24.8.0",
+ "jest-util": "^24.8.0"
+ }
+ },
+ "jest-get-type": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz",
+ "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==",
+ "dev": true
+ },
+ "jest-haste-map": {
+ "version": "24.8.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.1.tgz",
+ "integrity": "sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "anymatch": "^2.0.0",
+ "fb-watchman": "^2.0.0",
+ "fsevents": "^1.2.7",
+ "graceful-fs": "^4.1.15",
+ "invariant": "^2.2.4",
+ "jest-serializer": "^24.4.0",
+ "jest-util": "^24.8.0",
+ "jest-worker": "^24.6.0",
+ "micromatch": "^3.1.10",
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
+ }
+ },
+ "jest-jasmine2": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz",
+ "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.1.0",
+ "@jest/environment": "^24.8.0",
+ "@jest/test-result": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "chalk": "^2.0.1",
+ "co": "^4.6.0",
+ "expect": "^24.8.0",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^24.8.0",
+ "jest-matcher-utils": "^24.8.0",
+ "jest-message-util": "^24.8.0",
+ "jest-runtime": "^24.8.0",
+ "jest-snapshot": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "pretty-format": "^24.8.0",
+ "throat": "^4.0.0"
+ }
+ },
+ "jest-junit": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-7.0.0.tgz",
+ "integrity": "sha512-ljUdO0hLyu0A92xk7R2Wet3kj99fmazTo+ZFYQP6b7AGOBxJUj8ZkJWzJ632ajpXko2Y5oNoGR2kvOwiDdu6hg==",
+ "dev": true,
+ "requires": {
+ "jest-validate": "^24.0.0",
+ "mkdirp": "^0.5.1",
+ "strip-ansi": "^4.0.0",
+ "xml": "^1.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "jest-leak-detector": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz",
+ "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==",
+ "dev": true,
+ "requires": {
+ "pretty-format": "^24.8.0"
+ }
+ },
+ "jest-matcher-utils": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz",
+ "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1",
+ "jest-diff": "^24.8.0",
+ "jest-get-type": "^24.8.0",
+ "pretty-format": "^24.8.0"
+ }
+ },
+ "jest-message-util": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz",
+ "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@jest/test-result": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "@types/stack-utils": "^1.0.1",
+ "chalk": "^2.0.1",
+ "micromatch": "^3.1.10",
+ "slash": "^2.0.0",
+ "stack-utils": "^1.0.1"
+ }
+ },
+ "jest-mock": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz",
+ "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0"
+ }
+ },
+ "jest-pnp-resolver": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz",
+ "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==",
+ "dev": true
+ },
+ "jest-regex-util": {
+ "version": "24.3.0",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz",
+ "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==",
+ "dev": true
+ },
+ "jest-resolve": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz",
+ "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "browser-resolve": "^1.11.3",
+ "chalk": "^2.0.1",
+ "jest-pnp-resolver": "^1.2.1",
+ "realpath-native": "^1.1.0"
+ }
+ },
+ "jest-resolve-dependencies": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz",
+ "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-snapshot": "^24.8.0"
+ }
+ },
+ "jest-runner": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz",
+ "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/environment": "^24.8.0",
+ "@jest/test-result": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "chalk": "^2.4.2",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.1.15",
+ "jest-config": "^24.8.0",
+ "jest-docblock": "^24.3.0",
+ "jest-haste-map": "^24.8.0",
+ "jest-jasmine2": "^24.8.0",
+ "jest-leak-detector": "^24.8.0",
+ "jest-message-util": "^24.8.0",
+ "jest-resolve": "^24.8.0",
+ "jest-runtime": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "jest-worker": "^24.6.0",
+ "source-map-support": "^0.5.6",
+ "throat": "^4.0.0"
+ }
+ },
+ "jest-runtime": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz",
+ "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/environment": "^24.8.0",
+ "@jest/source-map": "^24.3.0",
+ "@jest/transform": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "@types/yargs": "^12.0.2",
+ "chalk": "^2.0.1",
+ "exit": "^0.1.2",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.1.15",
+ "jest-config": "^24.8.0",
+ "jest-haste-map": "^24.8.0",
+ "jest-message-util": "^24.8.0",
+ "jest-mock": "^24.8.0",
+ "jest-regex-util": "^24.3.0",
+ "jest-resolve": "^24.8.0",
+ "jest-snapshot": "^24.8.0",
+ "jest-util": "^24.8.0",
+ "jest-validate": "^24.8.0",
+ "realpath-native": "^1.1.0",
+ "slash": "^2.0.0",
+ "strip-bom": "^3.0.0",
+ "yargs": "^12.0.2"
+ }
+ },
+ "jest-serializer": {
+ "version": "24.4.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz",
+ "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==",
+ "dev": true
+ },
+ "jest-snapshot": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz",
+ "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0",
+ "@jest/types": "^24.8.0",
+ "chalk": "^2.0.1",
+ "expect": "^24.8.0",
+ "jest-diff": "^24.8.0",
+ "jest-matcher-utils": "^24.8.0",
+ "jest-message-util": "^24.8.0",
+ "jest-resolve": "^24.8.0",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^24.8.0",
+ "semver": "^5.5.0"
+ }
+ },
+ "jest-util": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz",
+ "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.7.1",
+ "@jest/fake-timers": "^24.8.0",
+ "@jest/source-map": "^24.3.0",
+ "@jest/test-result": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "callsites": "^3.0.0",
+ "chalk": "^2.0.1",
+ "graceful-fs": "^4.1.15",
+ "is-ci": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "slash": "^2.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "jest-validate": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz",
+ "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "camelcase": "^5.0.0",
+ "chalk": "^2.0.1",
+ "jest-get-type": "^24.8.0",
+ "leven": "^2.1.0",
+ "pretty-format": "^24.8.0"
+ }
+ },
+ "jest-watcher": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz",
+ "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==",
+ "dev": true,
+ "requires": {
+ "@jest/test-result": "^24.8.0",
+ "@jest/types": "^24.8.0",
+ "@types/yargs": "^12.0.9",
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.1",
+ "jest-util": "^24.8.0",
+ "string-length": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ }
+ }
+ },
+ "jest-worker": {
+ "version": "24.6.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz",
+ "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==",
+ "dev": true,
+ "requires": {
+ "merge-stream": "^1.0.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "js-levenshtein": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
+ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true
+ },
+ "jsdom": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
+ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.0",
+ "acorn": "^5.5.3",
+ "acorn-globals": "^4.1.0",
+ "array-equal": "^1.0.0",
+ "cssom": ">= 0.3.2 < 0.4.0",
+ "cssstyle": "^1.0.0",
+ "data-urls": "^1.0.0",
+ "domexception": "^1.0.1",
+ "escodegen": "^1.9.1",
+ "html-encoding-sniffer": "^1.0.2",
+ "left-pad": "^1.3.0",
+ "nwsapi": "^2.0.7",
+ "parse5": "4.0.0",
+ "pn": "^1.1.0",
+ "request": "^2.87.0",
+ "request-promise-native": "^1.0.5",
+ "sax": "^1.2.4",
+ "symbol-tree": "^3.2.2",
+ "tough-cookie": "^2.3.4",
+ "w3c-hr-time": "^1.0.1",
+ "webidl-conversions": "^4.0.2",
+ "whatwg-encoding": "^1.0.3",
+ "whatwg-mimetype": "^2.1.0",
+ "whatwg-url": "^6.4.1",
+ "ws": "^5.2.0",
+ "xml-name-validator": "^3.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ }
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-parser": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/json-parser/-/json-parser-1.1.5.tgz",
+ "integrity": "sha1-5i7FJh0aal/CDoEqMgdAxtkAVnc=",
+ "dev": true,
+ "requires": {
+ "esprima": "^2.7.0"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ }
+ }
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "kleur": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz",
+ "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "left-pad": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
+ "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
+ "dev": true
+ },
+ "leven": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
+ "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lines-and-columns": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+ "dev": true
+ },
+ "lint-staged": {
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-9.2.1.tgz",
+ "integrity": "sha512-3lGgJfBddCy/WndKdNko+uJbwyYjBD1k+V+SA+phBYWzH265S95KQya/Wln/UL+hOjc7NcjtFYVCUWuAcqYHhg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "commander": "^2.20.0",
+ "cosmiconfig": "^5.2.1",
+ "debug": "^4.1.1",
+ "dedent": "^0.7.0",
+ "del": "^5.0.0",
+ "execa": "^2.0.3",
+ "listr": "^0.14.3",
+ "log-symbols": "^3.0.0",
+ "micromatch": "^4.0.2",
+ "please-upgrade-node": "^3.1.1",
+ "string-argv": "^0.3.0",
+ "stringify-object": "^3.3.0"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "execa": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-2.0.3.tgz",
+ "integrity": "sha512-iM124nlyGSrXmuyZF1EMe83ESY2chIYVyDRZKgmcDynid2Q2v/+GuE7gNMl6Sy9Niwf4MC0DDxagOxeMPjuLsw==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.5",
+ "get-stream": "^5.0.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^3.0.0",
+ "onetime": "^5.1.0",
+ "p-finally": "^2.0.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "get-stream": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
+ "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
+ "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.0.5"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
+ "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "onetime": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz",
+ "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==",
+ "dev": true
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ }
+ }
+ },
+ "listify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/listify/-/listify-1.0.0.tgz",
+ "integrity": "sha1-A8p7otFQ1CZ3c/dOV1WNEFPSvuM=",
+ "dev": true
+ },
+ "listr": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
+ "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
+ "dev": true,
+ "requires": {
+ "@samverschueren/stream-to-observable": "^0.3.0",
+ "is-observable": "^1.1.0",
+ "is-promise": "^2.1.0",
+ "is-stream": "^1.1.0",
+ "listr-silent-renderer": "^1.1.1",
+ "listr-update-renderer": "^0.5.0",
+ "listr-verbose-renderer": "^0.5.0",
+ "p-map": "^2.0.0",
+ "rxjs": "^6.3.3"
+ }
+ },
+ "listr-silent-renderer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
+ "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
+ "dev": true
+ },
+ "listr-update-renderer": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
+ "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "cli-truncate": "^0.2.1",
+ "elegant-spinner": "^1.0.1",
+ "figures": "^1.7.0",
+ "indent-string": "^3.0.0",
+ "log-symbols": "^1.0.2",
+ "log-update": "^2.3.0",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "log-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
+ "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "listr-verbose-renderer": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
+ "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "cli-cursor": "^2.1.0",
+ "date-fns": "^1.27.2",
+ "figures": "^2.0.0"
+ },
+ "dependencies": {
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ }
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^2.0.0",
+ "json5": "^1.0.1"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
+ "dev": true
+ },
+ "lodash.difference": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
+ "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
+ "dev": true
+ },
+ "lodash.ismatch": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
+ "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
+ "dev": true
+ },
+ "lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "lodash.pad": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz",
+ "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=",
+ "dev": true
+ },
+ "lodash.padend": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
+ "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=",
+ "dev": true
+ },
+ "lodash.padstart": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz",
+ "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=",
+ "dev": true
+ },
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+ "dev": true
+ },
+ "lodash.tail": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
+ "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
+ "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.templatesettings": "^4.0.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
+ "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "^3.0.0"
+ }
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
+ "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2"
+ }
+ },
+ "log-update": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
+ "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "cli-cursor": "^2.0.0",
+ "wrap-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
+ "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0"
+ }
+ }
+ }
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ }
+ }
+ },
+ "makeerror": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+ "dev": true,
+ "requires": {
+ "tmpl": "1.0.x"
+ }
+ },
+ "mamacro": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
+ "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
+ "dev": true
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "dev": true,
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
+ "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mem": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ }
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+ "dev": true
+ },
+ "meow": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz",
+ "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0",
+ "yargs-parser": "^10.0.0"
+ }
+ },
+ "merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "merge2": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz",
+ "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "micromist": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromist/-/micromist-1.1.0.tgz",
+ "integrity": "sha512-+CQ76pabE9egniSEdmDuH+j2cYyIBKP97kujG8ZLZyLCRq5ExwtIy4DPHPFrq4jVbhMRBnyjuH50KU9Ohs8QCg==",
+ "dev": true,
+ "requires": {
+ "lodash.camelcase": "^4.3.0"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mime-db": {
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+ "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+ "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.40.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ },
+ "minimist-options": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
+ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0"
+ }
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mixin-object": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
+ "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
+ "dev": true,
+ "requires": {
+ "for-in": "^0.1.3",
+ "is-extendable": "^0.1.1"
+ },
+ "dependencies": {
+ "for-in": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
+ "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
+ "dev": true
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "modify-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+ "dev": true
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
+ "mrm-core": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/mrm-core/-/mrm-core-3.3.2.tgz",
+ "integrity": "sha512-0SOw8U9s0gvcXQQHM736kLSo0XFB6O1Zs2UwNBcURjfMeev/qgP7d0RQRrzN7E+hLem+OPsL0eNrQSDoBIcaFA==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.26.0",
+ "comment-json": "^1.1.3",
+ "detect-indent": "^5.0.0",
+ "editorconfig": "^0.15.0",
+ "find-up": "^3.0.0",
+ "fs-extra": "^7.0.0",
+ "js-yaml": "^3.13.0",
+ "kleur": "^2.0.2",
+ "listify": "^1.0.0",
+ "lodash": "^4.17.11",
+ "minimist": "^1.2.0",
+ "prop-ini": "^0.0.2",
+ "readme-badger": "^0.3.0",
+ "semver": "^5.5.1",
+ "smpltmpl": "^1.0.2",
+ "split-lines": "^2.0.0",
+ "strip-bom": "^3.0.0",
+ "webpack-merge": "^4.2.1"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz",
+ "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
+ "dev": true
+ },
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
+ }
+ },
+ "node-modules-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
+ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
+ "dev": true
+ },
+ "node-notifier": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.1.tgz",
+ "integrity": "sha512-p52B+onAEHKW1OF9MGO/S7k/ahGEHfhP5/tvwYzog/5XLYOd8ZuD6vdNZdUuWMONRnKPneXV43v3s6Snx1wsCQ==",
+ "dev": true,
+ "requires": {
+ "growly": "^1.3.0",
+ "is-wsl": "^1.1.0",
+ "semver": "^5.5.0",
+ "shellwords": "^0.1.1",
+ "which": "^1.3.0"
+ }
+ },
+ "node-releases": {
+ "version": "1.1.26",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.26.tgz",
+ "integrity": "sha512-fZPsuhhUHMTlfkhDLGtfY80DSJTjOcx+qD1j5pqPkuhUHVS7xHZIg9EE4DHK8O3f0zTxXHX5VIkDG8pu98/wfQ==",
+ "dev": true,
+ "requires": {
+ "semver": "^5.3.0"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+ "dev": true
+ },
+ "npm-run-all": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+ "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "memorystream": "^0.3.1",
+ "minimatch": "^3.0.4",
+ "pidtree": "^0.3.0",
+ "read-pkg": "^3.0.0",
+ "shell-quote": "^1.6.1",
+ "string.prototype.padend": "^3.0.0"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "npmlog": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz",
+ "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=",
+ "dev": true,
+ "requires": {
+ "ansi": "~0.3.1",
+ "are-we-there-yet": "~1.1.2",
+ "gauge": "~1.2.5"
+ }
+ },
+ "null-check": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
+ "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+ "dev": true
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "nwsapi": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz",
+ "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.5.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "object.values": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
+ "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.12.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
+ "dev": true
+ },
+ "opencollective-postinstall": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz",
+ "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==",
+ "dev": true
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ }
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "os-shim": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz",
+ "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "output-file-sync": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz",
+ "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "is-plain-obj": "^1.1.0",
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
+ },
+ "p-each-series": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz",
+ "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=",
+ "dev": true,
+ "requires": {
+ "p-reduce": "^1.0.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-map": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+ "dev": true
+ },
+ "p-reduce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
+ "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=",
+ "dev": true
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "pako": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
+ "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "dev": true,
+ "requires": {
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
+ "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "parse-git-config": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-1.1.1.tgz",
+ "integrity": "sha1-06mYQxcTL1c5hxK7pDjhKVkN34w=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "fs-exists-sync": "^0.1.0",
+ "git-config-path": "^1.0.1",
+ "ini": "^1.3.4"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "parse-github-repo-url": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz",
+ "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=",
+ "dev": true
+ },
+ "parse-github-url": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz",
+ "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "parse5": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
+ "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==",
+ "dev": true
+ },
+ "pidtree": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz",
+ "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==",
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pirates": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
+ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
+ "dev": true,
+ "requires": {
+ "node-modules-regexp": "^1.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ },
+ "please-upgrade-node": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz",
+ "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==",
+ "dev": true,
+ "requires": {
+ "semver-compare": "^1.0.0"
+ }
+ },
+ "pn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
+ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
+ "dev": true
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.17",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz",
+ "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==",
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "postcss-attribute-case-insensitive": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.1.tgz",
+ "integrity": "sha512-L2YKB3vF4PetdTIthQVeT+7YiSzMoNMLLYxPXXppOOP7NoazEAy45sh2LvJ8leCQjfBcfkYQs8TtCcQjeZTp8A==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-selector-parser": "^5.0.0"
+ },
+ "dependencies": {
+ "cssesc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+ "dev": true
+ },
+ "postcss-selector-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+ "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^2.0.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-color-functional-notation": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz",
+ "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-color-gray": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz",
+ "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==",
+ "dev": true,
+ "requires": {
+ "@csstools/convert-colors": "^1.4.0",
+ "postcss": "^7.0.5",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-color-hex-alpha": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz",
+ "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.14",
+ "postcss-values-parser": "^2.0.1"
+ }
+ },
+ "postcss-color-mod-function": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz",
+ "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==",
+ "dev": true,
+ "requires": {
+ "@csstools/convert-colors": "^1.4.0",
+ "postcss": "^7.0.2",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-color-rebeccapurple": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz",
+ "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-custom-media": {
+ "version": "7.0.8",
+ "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz",
+ "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.14"
+ }
+ },
+ "postcss-custom-properties": {
+ "version": "8.0.11",
+ "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz",
+ "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.17",
+ "postcss-values-parser": "^2.0.1"
+ }
+ },
+ "postcss-custom-selectors": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz",
+ "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-selector-parser": "^5.0.0-rc.3"
+ },
+ "dependencies": {
+ "cssesc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+ "dev": true
+ },
+ "postcss-selector-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+ "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^2.0.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-dir-pseudo-class": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz",
+ "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-selector-parser": "^5.0.0-rc.3"
+ },
+ "dependencies": {
+ "cssesc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+ "dev": true
+ },
+ "postcss-selector-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+ "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^2.0.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-double-position-gradients": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz",
+ "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-env-function": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz",
+ "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-focus-visible": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz",
+ "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-focus-within": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz",
+ "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-font-variant": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz",
+ "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-gap-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz",
+ "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-image-set-function": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz",
+ "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-initial": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.1.tgz",
+ "integrity": "sha512-I2Sz83ZSHybMNh02xQDK609lZ1/QOyYeuizCjzEhlMgeV/HcDJapQiH4yTqLjZss0X6/6VvKFXUeObaHpJoINw==",
+ "dev": true,
+ "requires": {
+ "lodash.template": "^4.5.0",
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-lab-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz",
+ "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==",
+ "dev": true,
+ "requires": {
+ "@csstools/convert-colors": "^1.4.0",
+ "postcss": "^7.0.2",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-load-config": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz",
+ "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "import-cwd": "^2.0.0"
+ }
+ },
+ "postcss-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
+ "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0",
+ "postcss": "^7.0.0",
+ "postcss-load-config": "^2.0.0",
+ "schema-utils": "^1.0.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "postcss-logical": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz",
+ "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-media-minmax": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz",
+ "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+ "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+ "requires": {
+ "postcss": "^7.0.5"
+ }
+ },
+ "postcss-modules-local-by-default": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz",
+ "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==",
+ "requires": {
+ "icss-utils": "^4.1.1",
+ "postcss": "^7.0.16",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.0.0"
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz",
+ "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==",
+ "requires": {
+ "postcss": "^7.0.6",
+ "postcss-selector-parser": "^6.0.0"
+ }
+ },
+ "postcss-modules-values": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
+ "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+ "requires": {
+ "icss-utils": "^4.0.0",
+ "postcss": "^7.0.6"
+ }
+ },
+ "postcss-nesting": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz",
+ "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-overflow-shorthand": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz",
+ "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-page-break": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz",
+ "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-place": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz",
+ "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-values-parser": "^2.0.0"
+ }
+ },
+ "postcss-preset-env": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz",
+ "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==",
+ "dev": true,
+ "requires": {
+ "autoprefixer": "^9.6.1",
+ "browserslist": "^4.6.4",
+ "caniuse-lite": "^1.0.30000981",
+ "css-blank-pseudo": "^0.1.4",
+ "css-has-pseudo": "^0.10.0",
+ "css-prefers-color-scheme": "^3.1.1",
+ "cssdb": "^4.4.0",
+ "postcss": "^7.0.17",
+ "postcss-attribute-case-insensitive": "^4.0.1",
+ "postcss-color-functional-notation": "^2.0.1",
+ "postcss-color-gray": "^5.0.0",
+ "postcss-color-hex-alpha": "^5.0.3",
+ "postcss-color-mod-function": "^3.0.3",
+ "postcss-color-rebeccapurple": "^4.0.1",
+ "postcss-custom-media": "^7.0.8",
+ "postcss-custom-properties": "^8.0.11",
+ "postcss-custom-selectors": "^5.1.2",
+ "postcss-dir-pseudo-class": "^5.0.0",
+ "postcss-double-position-gradients": "^1.0.0",
+ "postcss-env-function": "^2.0.2",
+ "postcss-focus-visible": "^4.0.0",
+ "postcss-focus-within": "^3.0.0",
+ "postcss-font-variant": "^4.0.0",
+ "postcss-gap-properties": "^2.0.0",
+ "postcss-image-set-function": "^3.0.1",
+ "postcss-initial": "^3.0.0",
+ "postcss-lab-function": "^2.0.1",
+ "postcss-logical": "^3.0.0",
+ "postcss-media-minmax": "^4.0.0",
+ "postcss-nesting": "^7.0.0",
+ "postcss-overflow-shorthand": "^2.0.0",
+ "postcss-page-break": "^2.0.0",
+ "postcss-place": "^4.0.1",
+ "postcss-pseudo-class-any-link": "^6.0.0",
+ "postcss-replace-overflow-wrap": "^3.0.0",
+ "postcss-selector-matches": "^4.0.0",
+ "postcss-selector-not": "^4.0.0"
+ }
+ },
+ "postcss-pseudo-class-any-link": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz",
+ "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2",
+ "postcss-selector-parser": "^5.0.0-rc.3"
+ },
+ "dependencies": {
+ "cssesc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+ "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+ "dev": true
+ },
+ "postcss-selector-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+ "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^2.0.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-replace-overflow-wrap": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz",
+ "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-selector-matches": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz",
+ "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-selector-not": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz",
+ "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "postcss": "^7.0.2"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
+ "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.1.tgz",
+ "integrity": "sha512-3Jk+/CVH0HBfgSSFWALKm9Hyzf4kumPjZfUxkRYZNcqFztELb2APKxv0nlX8HCdc1/ymePmT/nFf1ST6fjWH2A=="
+ },
+ "postcss-values-parser": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz",
+ "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==",
+ "dev": true,
+ "requires": {
+ "flatten": "^1.0.2",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prettier": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz",
+ "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==",
+ "dev": true
+ },
+ "pretty-format": {
+ "version": "24.8.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz",
+ "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==",
+ "dev": true,
+ "requires": {
+ "@jest/types": "^24.8.0",
+ "ansi-regex": "^4.0.0",
+ "ansi-styles": "^3.2.0",
+ "react-is": "^16.8.4"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ }
+ }
+ },
+ "prettyjson": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz",
+ "integrity": "sha1-/P+rQdGcq0365eV15kJGYZsS0ok=",
+ "dev": true,
+ "requires": {
+ "colors": "^1.1.2",
+ "minimist": "^1.2.0"
+ }
+ },
+ "private": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
+ },
+ "prompts": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz",
+ "integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==",
+ "dev": true,
+ "requires": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.3"
+ },
+ "dependencies": {
+ "kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true
+ }
+ }
+ },
+ "prop-ini": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/prop-ini/-/prop-ini-0.0.2.tgz",
+ "integrity": "sha1-ZzOny1JCrKsr5C5gdYPYEksXKls=",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.0"
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "psl": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz",
+ "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "quick-lru": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
+ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "react-is": {
+ "version": "16.8.6",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
+ "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "readme-badger": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/readme-badger/-/readme-badger-0.3.0.tgz",
+ "integrity": "sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "realpath-native": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz",
+ "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==",
+ "dev": true,
+ "requires": {
+ "util.promisify": "^1.0.0"
+ }
+ },
+ "redent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
+ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^3.0.0",
+ "strip-indent": "^2.0.0"
+ }
+ },
+ "regenerate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+ "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
+ "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
+ "dev": true,
+ "requires": {
+ "private": "^0.1.6"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexp-tree": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz",
+ "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==",
+ "dev": true
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "regexpu-core": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz",
+ "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0",
+ "regenerate-unicode-properties": "^8.0.2",
+ "regjsgen": "^0.5.0",
+ "regjsparser": "^0.6.0",
+ "unicode-match-property-ecmascript": "^1.0.4",
+ "unicode-match-property-value-ecmascript": "^1.1.0"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz",
+ "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
+ "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
+ "remote-origin-url": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/remote-origin-url/-/remote-origin-url-1.0.0.tgz",
+ "integrity": "sha512-xHDM6IBqivpiQ1e4WOuFpM/T6rbzA/WBsu+3WLtgPOhHyjA0nYlijV3NprlTb4FcXlQ5+Q+z174sQ1NnUF5FwA==",
+ "dev": true,
+ "requires": {
+ "parse-git-config": "^1.1.1"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ }
+ }
+ },
+ "request-promise-core": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz",
+ "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.11"
+ }
+ },
+ "request-promise-native": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz",
+ "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==",
+ "dev": true,
+ "requires": {
+ "request-promise-core": "1.1.2",
+ "stealthy-require": "^1.1.1",
+ "tough-cookie": "^2.3.3"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ }
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true
+ },
+ "resolve-global": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz",
+ "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==",
+ "dev": true,
+ "requires": {
+ "global-dirs": "^0.1.1"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
+ "dev": true,
+ "requires": {
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "rsvp": {
+ "version": "4.8.5",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+ "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
+ "dev": true
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "run-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz",
+ "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==",
+ "dev": true
+ },
+ "run-parallel": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
+ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+ "dev": true
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "rx": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
+ "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=",
+ "dev": true
+ },
+ "rxjs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
+ "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sane": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
+ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
+ "dev": true,
+ "requires": {
+ "@cnakazawa/watch": "^1.0.3",
+ "anymatch": "^2.0.0",
+ "capture-exit": "^2.0.0",
+ "exec-sh": "^0.3.2",
+ "execa": "^1.0.0",
+ "fb-watchman": "^2.0.0",
+ "micromatch": "^3.1.4",
+ "minimist": "^1.1.1",
+ "walker": "~1.0.5"
+ }
+ },
+ "sass": {
+ "version": "1.22.9",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.9.tgz",
+ "integrity": "sha512-FzU1X2V8DlnqabrL4u7OBwD2vcOzNMongEJEx3xMEhWY/v26FFR3aG0hyeu2T965sfR0E9ufJwmG+Qjz78vFPQ==",
+ "dev": true,
+ "requires": {
+ "chokidar": ">=2.0.0 <4.0.0"
+ }
+ },
+ "sass-loader": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz",
+ "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==",
+ "dev": true,
+ "requires": {
+ "clone-deep": "^2.0.1",
+ "loader-utils": "^1.0.1",
+ "lodash.tail": "^4.1.1",
+ "neo-async": "^2.5.0",
+ "pify": "^3.0.0",
+ "semver": "^5.5.0"
+ }
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.0.1.tgz",
+ "integrity": "sha512-HJFKJ4JixDpRur06QHwi8uu2kZbng318ahWEKgBjc0ZklcE4FDvmm2wghb448q0IRaABxIESt8vqPFvwgMB80A==",
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ },
+ "semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "dev": true
+ },
+ "serialize-javascript": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
+ "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
+ "dev": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shallow-clone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
+ "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.1",
+ "kind-of": "^5.0.0",
+ "mixin-object": "^2.0.1"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "~0.0.0",
+ "array-map": "~0.0.0",
+ "array-reduce": "~0.0.0",
+ "jsonify": "~0.0.0"
+ }
+ },
+ "shellwords": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
+ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "sisteransi": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz",
+ "integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==",
+ "dev": true
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ }
+ },
+ "smpltmpl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/smpltmpl/-/smpltmpl-1.0.2.tgz",
+ "integrity": "sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.26.0"
+ }
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spawn-sync": {
+ "version": "1.0.15",
+ "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz",
+ "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.4.7",
+ "os-shim": "^0.1.2"
+ }
+ },
+ "spdx-correct": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "dev": true
+ },
+ "split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "requires": {
+ "through": "2"
+ }
+ },
+ "split-lines": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/split-lines/-/split-lines-2.0.0.tgz",
+ "integrity": "sha512-gaIdhbqxkB5/VflPXsJwZvEzh/kdwiRPF9iqpkxX4us+lzB8INedFwjCyo6vwuz5x2Ddlnav2zh270CEjCG8mA==",
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "split2": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
+ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
+ "dev": true,
+ "requires": {
+ "through2": "^2.0.2"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+ "dev": true
+ },
+ "stack-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz",
+ "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==",
+ "dev": true
+ },
+ "standard-version": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-7.0.0.tgz",
+ "integrity": "sha512-pbFXM9vutnxTkSGkqSWQeYCMYqWmFBaLUNdEc/sJDQnMgwB0Csw3CZeeDhi62VoVS3P8mQiYbvXGZWyOBWxUbw==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.4.2",
+ "conventional-changelog": "3.1.9",
+ "conventional-changelog-config-spec": "2.0.0",
+ "conventional-recommended-bump": "6.0.0",
+ "detect-indent": "6.0.0",
+ "detect-newline": "3.0.0",
+ "dotgitignore": "2.1.0",
+ "figures": "3.0.0",
+ "find-up": "4.1.0",
+ "fs-access": "1.0.1",
+ "git-semver-tags": "3.0.0",
+ "semver": "6.3.0",
+ "stringify-package": "1.0.0",
+ "yargs": "13.3.0"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "detect-indent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz",
+ "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==",
+ "dev": true
+ },
+ "detect-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.0.0.tgz",
+ "integrity": "sha512-JAP22dVPAqvhdRFFxK1G5GViIokyUn0UWXRNW0ztK96fsqi9cuM8w8ESbSk+T2w5OVorcMcL6m7yUg1RrX+2CA==",
+ "dev": true
+ },
+ "figures": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz",
+ "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
+ "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.1"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "string-argv": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.0.tgz",
+ "integrity": "sha512-NGZHq3nkSXVtGZXTBjFru3MNfoZyIzN25T7BmvdgnSC0LCJczAGLLMQLyjywSIaAoqSemgLzBRHOsnrHbt60+Q==",
+ "dev": true
+ },
+ "string-length": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz",
+ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
+ "dev": true,
+ "requires": {
+ "astral-regex": "^1.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "string.prototype.padend": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
+ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.4.3",
+ "function-bind": "^1.0.2"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "stringify-object": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+ "dev": true,
+ "requires": {
+ "get-own-enumerable-property-symbols": "^3.0.0",
+ "is-obj": "^1.0.1",
+ "is-regexp": "^1.0.0"
+ }
+ },
+ "stringify-package": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.0.tgz",
+ "integrity": "sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ }
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "symbol-observable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
+ "dev": true
+ },
+ "symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "table": {
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.5.tgz",
+ "integrity": "sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ }
+ }
+ },
+ "tabtab": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tabtab/-/tabtab-2.2.2.tgz",
+ "integrity": "sha1-egR/FDsBC0y9MfhX6ClhUSy/ThQ=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.2.0",
+ "inquirer": "^1.0.2",
+ "lodash.difference": "^4.5.0",
+ "lodash.uniq": "^4.5.0",
+ "minimist": "^1.2.0",
+ "mkdirp": "^0.5.1",
+ "npmlog": "^2.0.3",
+ "object-assign": "^4.1.0"
+ }
+ },
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "dev": true
+ },
+ "terser": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.3.tgz",
+ "integrity": "sha512-on13d+cnpn5bMouZu+J8tPYQecsdRJCJuxFJ+FVoPBoLJgk5bCBkp+Uen2hWyi0KIUm6eDarnlAlH+KgIx/PuQ==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz",
+ "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.2",
+ "find-cache-dir": "^2.1.0",
+ "is-wsl": "^1.1.0",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^1.7.0",
+ "source-map": "^0.6.1",
+ "terser": "^4.1.2",
+ "webpack-sources": "^1.4.0",
+ "worker-farm": "^1.7.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "test-exclude": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
+ "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3",
+ "minimatch": "^3.0.4",
+ "read-pkg-up": "^4.0.0",
+ "require-main-filename": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "read-pkg-up": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ }
+ }
+ },
+ "text-extensions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
+ "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
+ "dev": true
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "throat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz",
+ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "timers-browserify": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
+ "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "tmp": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz",
+ "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.1"
+ }
+ },
+ "tmpl": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
+ "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
+ "dev": true
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ }
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "trim-newlines": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
+ "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
+ "dev": true
+ },
+ "trim-off-newlines": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
+ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
+ "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "commander": "~2.20.0",
+ "source-map": "~0.6.1"
+ }
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
+ "unicode-property-aliases-ecmascript": "^1.0.4"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+ "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+ "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
+ "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "user-meta": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/user-meta/-/user-meta-1.0.0.tgz",
+ "integrity": "sha512-Q/opMgFhVbBkdlTs44UKzV7L5Uj2zrJ4MVPXTTzJmrU1bHb2cX6wJzBIqEf1gROTzZIH8u39WmHsa5EvfnMPrw==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.2.1"
+ }
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "object.getownpropertydescriptors": "^2.0.3"
+ }
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+ "dev": true
+ },
+ "v8-compile-cache": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
+ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "vm-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz",
+ "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==",
+ "dev": true
+ },
+ "w3c-hr-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz",
+ "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
+ "dev": true,
+ "requires": {
+ "browser-process-hrtime": "^0.1.2"
+ }
+ },
+ "walker": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+ "dev": true,
+ "requires": {
+ "makeerror": "1.0.x"
+ }
+ },
+ "watchpack": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0"
+ }
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "webpack": {
+ "version": "4.39.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.1.tgz",
+ "integrity": "sha512-/LAb2TJ2z+eVwisldp3dqTEoNhzp/TLCZlmZm3GGGAlnfIWDgOEE758j/9atklNLfRyhKbZTCOIoPqLJXeBLbQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/wasm-edit": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "acorn": "^6.2.1",
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^4.1.0",
+ "eslint-scope": "^4.0.3",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^2.4.0",
+ "loader-utils": "^1.2.3",
+ "memory-fs": "^0.4.1",
+ "micromatch": "^3.1.10",
+ "mkdirp": "^0.5.1",
+ "neo-async": "^2.6.1",
+ "node-libs-browser": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "tapable": "^1.1.3",
+ "terser-webpack-plugin": "^1.4.1",
+ "watchpack": "^1.6.0",
+ "webpack-sources": "^1.4.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz",
+ "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "webpack-merge": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz",
+ "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.5"
+ }
+ },
+ "webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ }
+ },
+ "whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz",
+ "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "winston": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.4.tgz",
+ "integrity": "sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q==",
+ "dev": true,
+ "requires": {
+ "async": "~1.0.0",
+ "colors": "1.0.x",
+ "cycle": "1.0.x",
+ "eyes": "0.1.x",
+ "isstream": "0.1.x",
+ "stack-trace": "0.0.x"
+ },
+ "dependencies": {
+ "colors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
+ "dev": true
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+ "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz",
+ "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "ws": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "xml": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
+ "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=",
+ "dev": true
+ },
+ "xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^3.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^11.1.1"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "yargs-parser": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
+ "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ }
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 5523d83c..1fd6d91b 100644
--- a/package.json
+++ b/package.json
@@ -1,42 +1,97 @@
{
"name": "css-loader",
- "version": "0.26.1",
- "author": "Tobias Koppers @sokra",
+ "version": "3.2.0",
"description": "css loader module for webpack",
+ "license": "MIT",
+ "repository": "webpack-contrib/css-loader",
+ "author": "Tobias Koppers @sokra",
+ "homepage": "https://github.com/webpack-contrib/css-loader",
+ "bugs": "https://github.com/webpack-contrib/css-loader/issues",
+ "main": "dist/cjs.js",
"engines": {
- "node": ">=0.12.0"
+ "node": ">= 8.9.0"
},
- "files": ["index.js", "locals.js", "lib"],
- "dependencies": {
- "babel-code-frame": "^6.11.0",
- "css-selector-tokenizer": "^0.7.0",
- "cssnano": ">=2.6.1 <4",
- "loader-utils": "~0.2.2",
- "lodash.camelcase": "^4.3.0",
- "object-assign": "^4.0.1",
- "postcss": "^5.0.6",
- "postcss-modules-extract-imports": "^1.0.0",
- "postcss-modules-local-by-default": "^1.0.1",
- "postcss-modules-scope": "^1.0.0",
- "postcss-modules-values": "^1.1.0",
- "source-list-map": "^0.1.7"
+ "scripts": {
+ "start": "npm run build -- -w",
+ "prebuild": "npm run clean",
+ "build": "cross-env NODE_ENV=production babel src -d dist --ignore \"src/**/*.test.js\" --copy-files",
+ "validate:runtime": "es-check es5 \"dist/runtime/**/*.js\"",
+ "postbuild": "npm run validate:runtime",
+ "clean": "del-cli dist",
+ "commitlint": "commitlint --from=master",
+ "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css}\" --list-different",
+ "lint:js": "eslint --cache src test",
+ "lint": "npm-run-all -l -p \"lint:**\"",
+ "prepare": "npm run build",
+ "release": "standard-version",
+ "security": "npm audit",
+ "test:only": "cross-env NODE_ENV=test jest",
+ "test:watch": "cross-env NODE_ENV=test jest --watch",
+ "test:coverage": "cross-env NODE_ENV=test jest --collectCoverageFrom=\"src/**/*.js\" --coverage",
+ "pretest": "npm run lint",
+ "test": "cross-env NODE_ENV=test npm run test:coverage",
+ "defaults": "webpack-defaults"
},
- "devDependencies": {
- "codecov.io": "^0.1.2",
- "coveralls": "^2.11.2",
- "istanbul": "^0.4.5",
- "mocha": "^3.1.2",
- "should": "^11.1.1"
+ "files": [
+ "dist/",
+ "lib/",
+ "index.js"
+ ],
+ "peerDependencies": {
+ "webpack": "^4.0.0"
},
- "scripts": {
- "test": "mocha",
- "travis": "npm run cover -- --report lcovonly",
- "cover": "istanbul cover node_modules/mocha/bin/_mocha",
- "publish-patch": "mocha && npm version patch && git push && git push --tags && npm publish"
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "cssesc": "^3.0.0",
+ "icss-utils": "^4.1.1",
+ "loader-utils": "^1.2.3",
+ "normalize-path": "^3.0.0",
+ "postcss": "^7.0.17",
+ "postcss-modules-extract-imports": "^2.0.0",
+ "postcss-modules-local-by-default": "^3.0.2",
+ "postcss-modules-scope": "^2.1.0",
+ "postcss-modules-values": "^3.0.0",
+ "postcss-value-parser": "^4.0.0",
+ "schema-utils": "^2.0.0"
},
- "repository": {
- "type": "git",
- "url": "git@github.com:webpack/css-loader.git"
+ "devDependencies": {
+ "@babel/cli": "^7.5.0",
+ "@babel/core": "^7.5.4",
+ "@babel/preset-env": "^7.5.4",
+ "@commitlint/cli": "^8.1.0",
+ "@commitlint/config-conventional": "^8.1.0",
+ "@webpack-contrib/defaults": "^5.0.2",
+ "@webpack-contrib/eslint-config-webpack": "^3.0.0",
+ "babel-jest": "^24.8.0",
+ "commitlint-azure-pipelines-cli": "^1.0.2",
+ "cross-env": "^5.2.0",
+ "del": "^5.0.0",
+ "del-cli": "^2.0.0",
+ "es-check": "^5.0.0",
+ "eslint": "^6.1.0",
+ "eslint-config-prettier": "^6.0.0",
+ "eslint-plugin-import": "^2.18.0",
+ "file-loader": "^4.0.0",
+ "husky": "^3.0.0",
+ "jest": "^24.8.0",
+ "jest-junit": "^7.0.0",
+ "lint-staged": "^9.2.0",
+ "memory-fs": "^0.4.1",
+ "npm-run-all": "^4.1.5",
+ "postcss-loader": "^3.0.0",
+ "postcss-preset-env": "^6.7.0",
+ "prettier": "^1.18.2",
+ "sass": "^1.22.5",
+ "sass-loader": "^7.1.0",
+ "standard-version": "^7.0.0",
+ "strip-ansi": "^5.2.0",
+ "webpack": "^4.35.0"
},
- "license": "MIT"
+ "keywords": [
+ "webpack",
+ "css",
+ "loader",
+ "url",
+ "import"
+ ]
}
diff --git a/src/CssSyntaxError.js b/src/CssSyntaxError.js
new file mode 100644
index 00000000..95f80f87
--- /dev/null
+++ b/src/CssSyntaxError.js
@@ -0,0 +1,28 @@
+export default class CssSyntaxError extends Error {
+ constructor(error) {
+ super(error);
+
+ const { reason, line, column } = error;
+
+ this.name = 'CssSyntaxError';
+
+ // Based on https://github.com/postcss/postcss/blob/master/lib/css-syntax-error.es6#L132
+ // We don't need `plugin` and `file` properties.
+ this.message = `${this.name}\n\n`;
+
+ if (typeof line !== 'undefined') {
+ this.message += `(${line}:${column}) `;
+ }
+
+ this.message += `${reason}`;
+
+ const code = error.showSourceCode();
+
+ if (code) {
+ this.message += `\n\n${code}\n`;
+ }
+
+ // We don't need stack https://github.com/postcss/postcss/blob/master/docs/guidelines/runner.md#31-dont-show-js-stack-for-csssyntaxerror
+ this.stack = false;
+ }
+}
diff --git a/src/Warning.js b/src/Warning.js
new file mode 100644
index 00000000..93b86399
--- /dev/null
+++ b/src/Warning.js
@@ -0,0 +1,20 @@
+export default class Warning extends Error {
+ constructor(warning) {
+ super(warning);
+ const { text, line, column } = warning;
+ this.name = 'Warning';
+
+ // Based on https://github.com/postcss/postcss/blob/master/lib/warning.es6#L74
+ // We don't need `plugin` properties.
+ this.message = `${this.name}\n\n`;
+
+ if (typeof line !== 'undefined') {
+ this.message += `(${line}:${column}) `;
+ }
+
+ this.message += `${text}`;
+
+ // We don't need stack https://github.com/postcss/postcss/blob/master/docs/guidelines/runner.md#31-dont-show-js-stack-for-csssyntaxerror
+ this.stack = false;
+ }
+}
diff --git a/src/cjs.js b/src/cjs.js
new file mode 100644
index 00000000..90fe4df1
--- /dev/null
+++ b/src/cjs.js
@@ -0,0 +1,3 @@
+const loader = require('./index');
+
+module.exports = loader.default;
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 00000000..234739ee
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,159 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+import validateOptions from 'schema-utils';
+import postcss from 'postcss';
+import postcssPkg from 'postcss/package.json';
+
+import {
+ getOptions,
+ isUrlRequest,
+ getRemainingRequest,
+ getCurrentRequest,
+} from 'loader-utils';
+
+import schema from './options.json';
+import { importParser, icssParser, urlParser } from './plugins';
+import {
+ normalizeSourceMap,
+ getModulesPlugins,
+ getImportPrefix,
+ getFilter,
+ getApiCode,
+ getImportCode,
+ getModuleCode,
+ getExportCode,
+ prepareCode,
+} from './utils';
+import Warning from './Warning';
+import CssSyntaxError from './CssSyntaxError';
+
+export default function loader(content, map, meta) {
+ const options = getOptions(this) || {};
+
+ validateOptions(schema, options, {
+ name: 'CSS Loader',
+ baseDataPath: 'options',
+ });
+
+ const callback = this.async();
+ const sourceMap = options.sourceMap || false;
+
+ // Some loaders (example `"postcss-loader": "1.x.x"`) always generates source map, we should remove it
+ // eslint-disable-next-line no-param-reassign
+ map = sourceMap && map ? normalizeSourceMap(map) : null;
+
+ // Reuse CSS AST (PostCSS AST e.g 'postcss-loader') to avoid reparsing
+ if (meta) {
+ const { ast } = meta;
+
+ if (ast && ast.type === 'postcss' && ast.version === postcssPkg.version) {
+ // eslint-disable-next-line no-param-reassign
+ content = ast.root;
+ }
+ }
+
+ const plugins = [];
+
+ if (options.modules) {
+ plugins.push(...getModulesPlugins(options, this));
+ }
+
+ // Run other loader (`postcss-loader`, `sass-loader` and etc) for importing CSS
+ const importPrefix = getImportPrefix(this, options.importLoaders);
+
+ plugins.push(
+ icssParser({
+ loaderContext: this,
+ importPrefix,
+ localsConvention: options.localsConvention,
+ })
+ );
+
+ if (options.import !== false) {
+ plugins.push(
+ importParser({
+ loaderContext: this,
+ importPrefix,
+ filter: getFilter(options.import, this.resourcePath),
+ })
+ );
+ }
+
+ if (options.url !== false) {
+ plugins.push(
+ urlParser({
+ loaderContext: this,
+ filter: getFilter(options.url, this.resourcePath, (value) =>
+ isUrlRequest(value)
+ ),
+ })
+ );
+ }
+
+ postcss(plugins)
+ .process(content, {
+ from: getRemainingRequest(this)
+ .split('!')
+ .pop(),
+ to: getCurrentRequest(this)
+ .split('!')
+ .pop(),
+ map: options.sourceMap
+ ? {
+ prev: map,
+ inline: false,
+ annotation: false,
+ }
+ : null,
+ })
+ .then((result) => {
+ result
+ .warnings()
+ .forEach((warning) => this.emitWarning(new Warning(warning)));
+
+ if (!result.messages) {
+ // eslint-disable-next-line no-param-reassign
+ result.messages = [];
+ }
+
+ const { onlyLocals } = options;
+
+ const importItems = result.messages
+ .filter((message) => (message.type === 'import' ? message : false))
+ .reduce((accumulator, currentValue) => {
+ accumulator.push(currentValue.import);
+
+ return accumulator;
+ }, []);
+ const exportItems = result.messages
+ .filter((message) => (message.type === 'export' ? message : false))
+ .reduce((accumulator, currentValue) => {
+ accumulator.push(currentValue.export);
+
+ return accumulator;
+ }, []);
+
+ const importCode = getImportCode(importItems, onlyLocals);
+ const moduleCode = getModuleCode(result, sourceMap, onlyLocals);
+ const exportCode = getExportCode(exportItems, onlyLocals);
+ const apiCode = getApiCode(this, sourceMap, onlyLocals);
+
+ return callback(
+ null,
+ prepareCode(
+ { apiCode, importCode, moduleCode, exportCode },
+ result.messages,
+ this,
+ importPrefix,
+ onlyLocals
+ )
+ );
+ })
+ .catch((error) => {
+ callback(
+ error.name === 'CssSyntaxError' ? new CssSyntaxError(error) : error
+ );
+ });
+}
diff --git a/src/options.json b/src/options.json
new file mode 100644
index 00000000..2e90393a
--- /dev/null
+++ b/src/options.json
@@ -0,0 +1,100 @@
+{
+ "additionalProperties": false,
+ "properties": {
+ "url": {
+ "description": "Enables/Disables 'url'/'image-set' functions handling (https://github.com/webpack-contrib/css-loader#url).",
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "instanceof": "Function"
+ }
+ ]
+ },
+ "import": {
+ "description": "Enables/Disables '@import' at-rules handling (https://github.com/webpack-contrib/css-loader#import).",
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "instanceof": "Function"
+ }
+ ]
+ },
+ "modules": {
+ "description": "Enables/Disables CSS Modules and their configuration (https://github.com/webpack-contrib/css-loader#modules).",
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "enum": ["local", "global"]
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "mode": {
+ "enum": ["local", "global"]
+ },
+ "localIdentName": {
+ "type": "string"
+ },
+ "localIdentRegExp": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "instanceof": "RegExp"
+ }
+ ]
+ },
+ "context": {
+ "type": "string"
+ },
+ "hashPrefix": {
+ "type": "string"
+ },
+ "getLocalIdent": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "instanceof": "Function"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "sourceMap": {
+ "description": "Enables/Disables generation of source maps (https://github.com/webpack-contrib/css-loader#sourcemap).",
+ "type": "boolean"
+ },
+ "importLoaders": {
+ "description": "Enables/Disables or setups number of loaders applied before CSS loader (https://github.com/webpack-contrib/css-loader#importloaders).",
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "number"
+ }
+ ]
+ },
+ "localsConvention": {
+ "description": "Style of exported classnames (https://github.com/webpack-contrib/css-loader#localsconvention).",
+ "enum": ["asIs", "camelCase", "camelCaseOnly", "dashes", "dashesOnly"]
+ },
+ "onlyLocals": {
+ "description": "Export only locals (https://github.com/webpack-contrib/css-loader#onlylocals).",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}
diff --git a/src/plugins/index.js b/src/plugins/index.js
new file mode 100644
index 00000000..21e47631
--- /dev/null
+++ b/src/plugins/index.js
@@ -0,0 +1,5 @@
+import importParser from './postcss-import-parser';
+import icssParser from './postcss-icss-parser';
+import urlParser from './postcss-url-parser';
+
+export { importParser, icssParser, urlParser };
diff --git a/src/plugins/postcss-icss-parser.js b/src/plugins/postcss-icss-parser.js
new file mode 100644
index 00000000..003e3326
--- /dev/null
+++ b/src/plugins/postcss-icss-parser.js
@@ -0,0 +1,76 @@
+import postcss from 'postcss';
+import { extractICSS, replaceValueSymbols, replaceSymbols } from 'icss-utils';
+import loaderUtils from 'loader-utils';
+
+import { getExportItemCode, getImportItemCode } from '../utils';
+
+const pluginName = 'postcss-icss-parser';
+
+function hasImportMessage(messages, url) {
+ return messages.find(
+ (message) =>
+ message.pluginName === pluginName &&
+ message.type === 'import' &&
+ message.item.url === url &&
+ message.item.media === ''
+ );
+}
+
+export default postcss.plugin(
+ pluginName,
+ (options = {}) =>
+ function process(css, result) {
+ const importReplacements = Object.create(null);
+ const { icssImports, icssExports } = extractICSS(css);
+
+ let index = 0;
+
+ for (const importUrl of Object.keys(icssImports)) {
+ const url = loaderUtils.parseString(importUrl);
+
+ for (const token of Object.keys(icssImports[importUrl])) {
+ index += 1;
+ importReplacements[token] = `___CSS_LOADER_IMPORT___${index}___`;
+
+ result.messages.push({
+ pluginName,
+ type: 'icss-import',
+ item: { url, export: icssImports[importUrl][token], index },
+ });
+
+ if (!hasImportMessage(result.messages, url)) {
+ const media = '';
+ const { loaderContext, importPrefix } = options;
+
+ result.messages.push({
+ pluginName,
+ type: 'import',
+ import: getImportItemCode(
+ { url, media },
+ loaderContext,
+ importPrefix
+ ),
+ item: { url, media },
+ });
+ }
+ }
+ }
+
+ replaceSymbols(css, importReplacements);
+
+ for (const exportName of Object.keys(icssExports)) {
+ const name = exportName;
+ const value = replaceValueSymbols(
+ icssExports[name],
+ importReplacements
+ );
+
+ result.messages.push({
+ pluginName,
+ export: getExportItemCode(name, value, options.localsConvention),
+ type: 'export',
+ item: { name, value },
+ });
+ }
+ }
+);
diff --git a/src/plugins/postcss-import-parser.js b/src/plugins/postcss-import-parser.js
new file mode 100644
index 00000000..36bb3796
--- /dev/null
+++ b/src/plugins/postcss-import-parser.js
@@ -0,0 +1,111 @@
+import postcss from 'postcss';
+import valueParser from 'postcss-value-parser';
+
+import { uniqWith, getImportItemCode } from '../utils';
+
+const pluginName = 'postcss-import-parser';
+
+function getArg(nodes) {
+ return nodes.length !== 0 && nodes[0].type === 'string'
+ ? nodes[0].value
+ : valueParser.stringify(nodes);
+}
+
+function getUrl(node) {
+ if (node.type === 'function' && node.value.toLowerCase() === 'url') {
+ return getArg(node.nodes);
+ }
+
+ if (node.type === 'string') {
+ return node.value;
+ }
+
+ return null;
+}
+
+function parseImport(params) {
+ const { nodes } = valueParser(params);
+
+ if (nodes.length === 0) {
+ return null;
+ }
+
+ const url = getUrl(nodes[0]);
+
+ if (!url || url.trim().length === 0) {
+ return null;
+ }
+
+ return {
+ url,
+ media: valueParser
+ .stringify(nodes.slice(1))
+ .trim()
+ .toLowerCase(),
+ };
+}
+
+function walkAtRules(css, result, filter) {
+ const items = [];
+
+ css.walkAtRules(/^import$/i, (atRule) => {
+ // Convert only top-level @import
+ if (atRule.parent.type !== 'root') {
+ return;
+ }
+
+ if (atRule.nodes) {
+ result.warn(
+ "It looks like you didn't end your @import statement correctly. " +
+ 'Child nodes are attached to it.',
+ { node: atRule }
+ );
+ return;
+ }
+
+ const parsed = parseImport(atRule.params);
+
+ if (!parsed) {
+ // eslint-disable-next-line consistent-return
+ return result.warn(`Unable to find uri in '${atRule.toString()}'`, {
+ node: atRule,
+ });
+ }
+
+ if (filter && !filter(parsed)) {
+ return;
+ }
+
+ atRule.remove();
+
+ const { url, media } = parsed;
+
+ items.push({ url, media });
+ });
+
+ return items;
+}
+
+export default postcss.plugin(
+ pluginName,
+ (options = {}) =>
+ function process(css, result) {
+ const traversed = walkAtRules(css, result, options.filter);
+ const paths = uniqWith(
+ traversed,
+ (value, other) => value.url === other.url && value.media === other.media
+ );
+
+ paths.forEach((item) => {
+ result.messages.push({
+ pluginName,
+ type: 'import',
+ import: getImportItemCode(
+ item,
+ options.loaderContext,
+ options.importPrefix
+ ),
+ });
+ });
+ }
+);
diff --git a/src/plugins/postcss-url-parser.js b/src/plugins/postcss-url-parser.js
new file mode 100644
index 00000000..c499cdc9
--- /dev/null
+++ b/src/plugins/postcss-url-parser.js
@@ -0,0 +1,180 @@
+import postcss from 'postcss';
+import valueParser from 'postcss-value-parser';
+
+import { uniqWith, flatten, getUrlHelperCode, getUrlItemCode } from '../utils';
+
+const pluginName = 'postcss-url-parser';
+
+const isUrlFunc = /url/i;
+const isImageSetFunc = /^(?:-webkit-)?image-set$/i;
+const needParseDecl = /(?:url|(?:-webkit-)?image-set)\(/i;
+
+function getNodeFromUrlFunc(node) {
+ return node.nodes && node.nodes[0];
+}
+
+function getUrlFromUrlFunc(node) {
+ return node.nodes.length !== 0 && node.nodes[0].type === 'string'
+ ? node.nodes[0].value
+ : valueParser.stringify(node.nodes);
+}
+
+function walkUrls(parsed, callback) {
+ parsed.walk((node) => {
+ if (node.type !== 'function') {
+ return;
+ }
+
+ if (isUrlFunc.test(node.value)) {
+ callback(getNodeFromUrlFunc(node), getUrlFromUrlFunc(node), false);
+
+ // Do not traverse inside `url`
+ // eslint-disable-next-line consistent-return
+ return false;
+ }
+
+ if (isImageSetFunc.test(node.value)) {
+ node.nodes.forEach((nNode) => {
+ if (nNode.type === 'function' && isUrlFunc.test(nNode.value)) {
+ callback(getNodeFromUrlFunc(nNode), getUrlFromUrlFunc(nNode), false);
+ }
+
+ if (nNode.type === 'string') {
+ callback(nNode, nNode.value, true);
+ }
+ });
+
+ // Do not traverse inside `image-set`
+ // eslint-disable-next-line consistent-return
+ return false;
+ }
+ });
+}
+
+function getUrlsFromValue(value, result, filter, decl = null) {
+ if (!needParseDecl.test(value)) {
+ return;
+ }
+
+ const parsed = valueParser(value);
+ const urls = [];
+
+ walkUrls(parsed, (node, url, needQuotes) => {
+ if (url.trim().replace(/\\[\r\n]/g, '').length === 0) {
+ result.warn(
+ `Unable to find uri in '${decl ? decl.toString() : value}'`,
+ decl
+ ? {
+ node: decl,
+ }
+ : {}
+ );
+
+ return;
+ }
+
+ if (filter && !filter(url)) {
+ return;
+ }
+
+ urls.push({ url, needQuotes });
+ });
+
+ // eslint-disable-next-line consistent-return
+ return { parsed, urls };
+}
+
+function walkDeclsWithUrl(css, result, filter) {
+ const items = [];
+
+ css.walkDecls((decl) => {
+ const item = getUrlsFromValue(decl.value, result, filter, decl);
+
+ if (!item) {
+ return;
+ }
+
+ if (item.urls.length === 0) {
+ return;
+ }
+
+ items.push({ decl, parsed: item.parsed, urls: item.urls });
+ });
+
+ return items;
+}
+
+export default postcss.plugin(
+ pluginName,
+ (options = {}) =>
+ function process(css, result) {
+ const traversed = walkDeclsWithUrl(css, result, options.filter);
+ const paths = uniqWith(
+ flatten(traversed.map((item) => item.urls)),
+ (value, other) =>
+ value.url === other.url && value.needQuotes === other.needQuotes
+ );
+
+ if (paths.length === 0) {
+ return;
+ }
+
+ const placeholders = [];
+
+ let hasUrlHelper = false;
+
+ paths.forEach((path, index) => {
+ const { loaderContext } = options;
+ const placeholder = `___CSS_LOADER_URL___${index}___`;
+ const { url, needQuotes } = path;
+
+ placeholders.push({ placeholder, path });
+
+ if (!hasUrlHelper) {
+ result.messages.push({
+ pluginName,
+ type: 'import',
+ import: getUrlHelperCode(loaderContext),
+ });
+
+ // eslint-disable-next-line no-param-reassign
+ hasUrlHelper = true;
+ }
+
+ result.messages.push({
+ pluginName,
+ type: 'import',
+ import: getUrlItemCode(
+ { url, placeholder, needQuotes },
+ loaderContext
+ ),
+ importType: 'url',
+ placeholder,
+ });
+ });
+
+ traversed.forEach((item) => {
+ walkUrls(item.parsed, (node, url, needQuotes) => {
+ const value = placeholders.find(
+ (placeholder) =>
+ placeholder.path.url === url &&
+ placeholder.path.needQuotes === needQuotes
+ );
+
+ if (!value) {
+ return;
+ }
+
+ const { placeholder } = value;
+
+ // eslint-disable-next-line no-param-reassign
+ node.type = 'word';
+ // eslint-disable-next-line no-param-reassign
+ node.value = placeholder;
+ });
+
+ // eslint-disable-next-line no-param-reassign
+ item.decl.value = item.parsed.toString();
+ });
+ }
+);
diff --git a/src/runtime/api.js b/src/runtime/api.js
new file mode 100644
index 00000000..117f5263
--- /dev/null
+++ b/src/runtime/api.js
@@ -0,0 +1,95 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+// css base code, injected by the css-loader
+// eslint-disable-next-line func-names
+module.exports = function(useSourceMap) {
+ const list = [];
+
+ // return the list of modules as css string
+ list.toString = function toString() {
+ return this.map((item) => {
+ const content = cssWithMappingToString(item, useSourceMap);
+
+ if (item[2]) {
+ return `@media ${item[2]}{${content}}`;
+ }
+
+ return content;
+ }).join('');
+ };
+
+ // import a list of modules into the list
+ // eslint-disable-next-line func-names
+ list.i = function(modules, mediaQuery) {
+ if (typeof modules === 'string') {
+ // eslint-disable-next-line no-param-reassign
+ modules = [[null, modules, '']];
+ }
+
+ const alreadyImportedModules = {};
+
+ for (let i = 0; i < this.length; i++) {
+ // eslint-disable-next-line prefer-destructuring
+ const id = this[i][0];
+
+ if (id != null) {
+ alreadyImportedModules[id] = true;
+ }
+ }
+
+ for (let i = 0; i < modules.length; i++) {
+ const item = modules[i];
+
+ // skip already imported module
+ // this implementation is not 100% perfect for weird media query combinations
+ // when a module is imported multiple times with different media queries.
+ // I hope this will never occur (Hey this way we have smaller bundles)
+ if (item[0] == null || !alreadyImportedModules[item[0]]) {
+ if (mediaQuery && !item[2]) {
+ item[2] = mediaQuery;
+ } else if (mediaQuery) {
+ item[2] = `(${item[2]}) and (${mediaQuery})`;
+ }
+
+ list.push(item);
+ }
+ }
+ };
+
+ return list;
+};
+
+function cssWithMappingToString(item, useSourceMap) {
+ const content = item[1] || '';
+ // eslint-disable-next-line prefer-destructuring
+ const cssMapping = item[3];
+
+ if (!cssMapping) {
+ return content;
+ }
+
+ if (useSourceMap && typeof btoa === 'function') {
+ const sourceMapping = toComment(cssMapping);
+ const sourceURLs = cssMapping.sources.map(
+ (source) => `/*# sourceURL=${cssMapping.sourceRoot}${source} */`
+ );
+
+ return [content]
+ .concat(sourceURLs)
+ .concat([sourceMapping])
+ .join('\n');
+ }
+
+ return [content].join('\n');
+}
+
+// Adapted from convert-source-map (MIT)
+function toComment(sourceMap) {
+ // eslint-disable-next-line no-undef
+ const base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
+ const data = `sourceMappingURL=data:application/json;charset=utf-8;base64,${base64}`;
+
+ return `/*# ${data} */`;
+}
diff --git a/src/runtime/getUrl.js b/src/runtime/getUrl.js
new file mode 100644
index 00000000..9b8b136b
--- /dev/null
+++ b/src/runtime/getUrl.js
@@ -0,0 +1,22 @@
+module.exports = (url, needQuotes) => {
+ // eslint-disable-next-line no-underscore-dangle, no-param-reassign
+ url = url.__esModule ? url.default : url;
+
+ if (typeof url !== 'string') {
+ return url;
+ }
+
+ // If url is already wrapped in quotes, remove them
+ if (/^['"].*['"]$/.test(url)) {
+ // eslint-disable-next-line no-param-reassign
+ url = url.slice(1, -1);
+ }
+
+ // Should url be wrapped?
+ // See https://drafts.csswg.org/css-values-3/#urls
+ if (/["'() \t\n]/.test(url) || needQuotes) {
+ return `"${url.replace(/"/g, '\\"').replace(/\n/g, '\\n')}"`;
+ }
+
+ return url;
+};
diff --git a/src/utils.js b/src/utils.js
new file mode 100644
index 00000000..6cb0572b
--- /dev/null
+++ b/src/utils.js
@@ -0,0 +1,418 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+import path from 'path';
+
+import loaderUtils, {
+ isUrlRequest,
+ stringifyRequest,
+ urlToRequest,
+} from 'loader-utils';
+import normalizePath from 'normalize-path';
+import cssesc from 'cssesc';
+import modulesValues from 'postcss-modules-values';
+import localByDefault from 'postcss-modules-local-by-default';
+import extractImports from 'postcss-modules-extract-imports';
+import modulesScope from 'postcss-modules-scope';
+import camelCase from 'camelcase';
+
+function uniqWith(array, comparator) {
+ return array.reduce(
+ (acc, d) => (!acc.some((item) => comparator(d, item)) ? [...acc, d] : acc),
+ []
+ );
+}
+
+function flatten(array) {
+ return array.reduce((a, b) => a.concat(b), []);
+}
+
+function dashesCamelCase(str) {
+ return str.replace(/-+(\w)/g, (match, firstLetter) =>
+ firstLetter.toUpperCase()
+ );
+}
+
+function getImportPrefix(loaderContext, importLoaders) {
+ if (importLoaders === false) {
+ return '';
+ }
+
+ const numberImportedLoaders = parseInt(importLoaders, 10) || 0;
+ const loadersRequest = loaderContext.loaders
+ .slice(
+ loaderContext.loaderIndex,
+ loaderContext.loaderIndex + 1 + numberImportedLoaders
+ )
+ .map((x) => x.request)
+ .join('!');
+
+ return `-!${loadersRequest}!`;
+}
+
+const whitespace = '[\\x20\\t\\r\\n\\f]';
+const unescapeRegExp = new RegExp(
+ `\\\\([\\da-f]{1,6}${whitespace}?|(${whitespace})|.)`,
+ 'ig'
+);
+
+function unescape(str) {
+ return str.replace(unescapeRegExp, (_, escaped, escapedWhitespace) => {
+ const high = `0x${escaped}` - 0x10000;
+
+ /* eslint-disable line-comment-position */
+ // NaN means non-codepoint
+ // Workaround erroneous numeric interpretation of +"0x"
+ // eslint-disable-next-line no-self-compare
+ return high !== high || escapedWhitespace
+ ? escaped
+ : high < 0
+ ? // BMP codepoint
+ String.fromCharCode(high + 0x10000)
+ : // Supplemental Plane codepoint (surrogate pair)
+ // eslint-disable-next-line no-bitwise
+ String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);
+ /* eslint-enable line-comment-position */
+ });
+}
+
+// eslint-disable-next-line no-control-regex
+const filenameReservedRegex = /[<>:"/\\|?*\x00-\x1F]/g;
+// eslint-disable-next-line no-control-regex
+const reControlChars = /[\u0000-\u001f\u0080-\u009f]/g;
+const reRelativePath = /^\.+/;
+
+function getLocalIdent(loaderContext, localIdentName, localName, options) {
+ if (!options.context) {
+ // eslint-disable-next-line no-param-reassign
+ options.context = loaderContext.rootContext;
+ }
+
+ const request = normalizePath(
+ path.relative(options.context || '', loaderContext.resourcePath)
+ );
+
+ // eslint-disable-next-line no-param-reassign
+ options.content = `${options.hashPrefix + request}+${unescape(localName)}`;
+
+ // Using `[path]` placeholder outputs `/` we need escape their
+ // Also directories can contains invalid characters for css we need escape their too
+ return cssesc(
+ loaderUtils
+ .interpolateName(loaderContext, localIdentName, options)
+ // For `[hash]` placeholder
+ .replace(/^((-?[0-9])|--)/, '_$1')
+ .replace(filenameReservedRegex, '-')
+ .replace(reControlChars, '-')
+ .replace(reRelativePath, '-')
+ .replace(/\./g, '-'),
+ { isIdentifier: true }
+ ).replace(/\\\[local\\\]/gi, localName);
+}
+
+function getFilter(filter, resourcePath, defaultFilter = null) {
+ return (item) => {
+ if (defaultFilter && !defaultFilter(item)) {
+ return false;
+ }
+
+ if (typeof filter === 'function') {
+ return filter(item, resourcePath);
+ }
+
+ return true;
+ };
+}
+
+function getModulesPlugins(options, loaderContext) {
+ let modulesOptions = {
+ mode: 'local',
+ localIdentName: '[hash:base64]',
+ getLocalIdent,
+ hashPrefix: '',
+ localIdentRegExp: null,
+ };
+
+ if (
+ typeof options.modules === 'boolean' ||
+ typeof options.modules === 'string'
+ ) {
+ modulesOptions.mode =
+ typeof options.modules === 'string' ? options.modules : 'local';
+ } else {
+ modulesOptions = Object.assign({}, modulesOptions, options.modules);
+ }
+
+ return [
+ modulesValues,
+ localByDefault({ mode: modulesOptions.mode }),
+ extractImports(),
+ modulesScope({
+ generateScopedName: function generateScopedName(exportName) {
+ let localIdent = modulesOptions.getLocalIdent(
+ loaderContext,
+ modulesOptions.localIdentName,
+ exportName,
+ {
+ context: modulesOptions.context,
+ hashPrefix: modulesOptions.hashPrefix,
+ regExp: modulesOptions.localIdentRegExp,
+ }
+ );
+
+ if (!localIdent) {
+ localIdent = getLocalIdent(
+ loaderContext,
+ modulesOptions.localIdentName,
+ exportName,
+ {
+ context: modulesOptions.context,
+ hashPrefix: modulesOptions.hashPrefix,
+ regExp: modulesOptions.localIdentRegExp,
+ }
+ );
+ }
+
+ return localIdent;
+ },
+ }),
+ ];
+}
+
+function normalizeSourceMap(map) {
+ 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.replace(/^\)]}'[^\n]*\n/, ''));
+ }
+
+ // Source maps should use forward slash because it is URLs (https://github.com/mozilla/source-map/issues/91)
+ // We should normalize path because previous loaders like `sass-loader` using backslash when generate source map
+
+ if (newMap.file) {
+ newMap.file = normalizePath(newMap.file);
+ }
+
+ if (newMap.sourceRoot) {
+ newMap.sourceRoot = normalizePath(newMap.sourceRoot);
+ }
+
+ if (newMap.sources) {
+ newMap.sources = newMap.sources.map((source) => normalizePath(source));
+ }
+
+ return newMap;
+}
+
+function getImportItemCode(item, loaderContext, importPrefix) {
+ const { url } = item;
+ const media = item.media || '';
+
+ if (!isUrlRequest(url)) {
+ return `exports.push([module.id, ${JSON.stringify(
+ `@import url(${url});`
+ )}, ${JSON.stringify(media)}]);`;
+ }
+
+ const importUrl = importPrefix + urlToRequest(url);
+
+ return `exports.i(require(${stringifyRequest(
+ loaderContext,
+ importUrl
+ )}), ${JSON.stringify(media)});`;
+}
+
+function getUrlHelperCode(loaderContext) {
+ return `var getUrl = require(${stringifyRequest(
+ loaderContext,
+ require.resolve('./runtime/getUrl.js')
+ )});`;
+}
+
+function getUrlItemCode(item, loaderContext) {
+ const { url, placeholder, needQuotes } = item;
+
+ // Remove `#hash` and `?#hash` from `require`
+ const [normalizedUrl, singleQuery, hashValue] = url.split(/(\?)?#/);
+ const hash =
+ singleQuery || hashValue
+ ? `"${singleQuery ? '?' : ''}${hashValue ? `#${hashValue}` : ''}"`
+ : '';
+
+ return `var ${placeholder} = getUrl(require(${stringifyRequest(
+ loaderContext,
+ urlToRequest(normalizedUrl)
+ )})${hash ? ` + ${hash}` : ''}${needQuotes ? ', true' : ''});`;
+}
+
+function getApiCode(loaderContext, sourceMap, onlyLocals) {
+ if (onlyLocals) {
+ return '';
+ }
+
+ return `exports = module.exports = require(${stringifyRequest(
+ loaderContext,
+ require.resolve('./runtime/api')
+ )})(${sourceMap});\n`;
+}
+
+function getImportCode(importItems, onlyLocals) {
+ if (importItems.length === 0 || onlyLocals) {
+ return '';
+ }
+
+ return `// Imports\n${importItems.join('\n')}\n`;
+}
+
+function getModuleCode(result, sourceMap, onlyLocals) {
+ if (onlyLocals) {
+ return '';
+ }
+
+ return `// Module\nexports.push([module.id, ${JSON.stringify(
+ result.css
+ )}, ""${sourceMap && result.map ? `,${result.map}` : ''}]);\n`;
+}
+
+function getExportItemCode(key, value, localsConvention) {
+ let targetKey;
+ const items = [];
+
+ function addEntry(k) {
+ items.push(`\t${JSON.stringify(k)}: ${JSON.stringify(value)}`);
+ }
+
+ switch (localsConvention) {
+ case 'camelCase':
+ addEntry(key);
+ targetKey = camelCase(key);
+
+ if (targetKey !== key) {
+ addEntry(targetKey);
+ }
+ break;
+ case 'camelCaseOnly':
+ addEntry(camelCase(key));
+ break;
+ case 'dashes':
+ addEntry(key);
+ targetKey = dashesCamelCase(key);
+
+ if (targetKey !== key) {
+ addEntry(targetKey);
+ }
+ break;
+ case 'dashesOnly':
+ addEntry(dashesCamelCase(key));
+ break;
+ case 'asIs':
+ default:
+ addEntry(key);
+ break;
+ }
+
+ return items.join(',\n');
+}
+
+function getExportCode(exportItems, onlyLocals) {
+ if (exportItems.length === 0) {
+ return '';
+ }
+
+ return `// Exports\n${
+ onlyLocals ? 'module.exports' : 'exports.locals'
+ } = {\n${exportItems.join(',\n')}\n};`;
+}
+
+function getIcssReplacer(item, loaderContext, importPrefix, onlyLocals) {
+ const importUrl = importPrefix + urlToRequest(item.url);
+
+ return () =>
+ onlyLocals
+ ? `" + require(${stringifyRequest(
+ loaderContext,
+ importUrl
+ )})[${JSON.stringify(item.export)}] + "`
+ : `" + require(${stringifyRequest(
+ loaderContext,
+ importUrl
+ )}).locals[${JSON.stringify(item.export)}] + "`;
+}
+
+function prepareCode(file, messages, loaderContext, importPrefix, onlyLocals) {
+ const { apiCode, importCode } = file;
+ let { moduleCode, exportCode } = file;
+
+ messages
+ .filter(
+ (message) =>
+ message.type === 'icss-import' ||
+ (message.type === 'import' && message.importType === 'url')
+ )
+ .forEach((message) => {
+ // Replace all urls on `require`
+ if (message.type === 'import') {
+ const { placeholder } = message;
+
+ if (moduleCode) {
+ // eslint-disable-next-line no-param-reassign
+ moduleCode = moduleCode.replace(
+ new RegExp(placeholder, 'g'),
+ () => `" + ${placeholder} + "`
+ );
+ }
+ }
+
+ // Replace external ICSS import on `require`
+ if (message.type === 'icss-import') {
+ const { item } = message;
+ const replacer = getIcssReplacer(
+ item,
+ loaderContext,
+ importPrefix,
+ onlyLocals
+ );
+
+ if (moduleCode) {
+ // eslint-disable-next-line no-param-reassign
+ moduleCode = moduleCode.replace(
+ new RegExp(`___CSS_LOADER_IMPORT___(${item.index})___`, 'g'),
+ replacer
+ );
+ }
+
+ if (exportCode) {
+ // eslint-disable-next-line no-param-reassign
+ exportCode = exportCode.replace(
+ new RegExp(`___CSS_LOADER_IMPORT___(${item.index})___`, 'g'),
+ replacer
+ );
+ }
+ }
+ });
+
+ return [apiCode, importCode, moduleCode, exportCode].filter(Boolean).join('');
+}
+
+export {
+ uniqWith,
+ flatten,
+ dashesCamelCase,
+ getImportPrefix,
+ getLocalIdent,
+ getFilter,
+ getModulesPlugins,
+ normalizeSourceMap,
+ getImportItemCode,
+ getUrlHelperCode,
+ getUrlItemCode,
+ getApiCode,
+ getImportCode,
+ getModuleCode,
+ getExportItemCode,
+ getExportCode,
+ prepareCode,
+};
diff --git a/test/__snapshots__/icss.test.js.snap b/test/__snapshots__/icss.test.js.snap
new file mode 100644
index 00000000..ff8f2468
--- /dev/null
+++ b/test/__snapshots__/icss.test.js.snap
@@ -0,0 +1,227 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`ICSS case duplicate-export: errors 1`] = `Array []`;
+
+exports[`ICSS case duplicate-export: locals 1`] = `
+Object {
+ "_test": "_right_value",
+}
+`;
+
+exports[`ICSS case duplicate-export: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case duplicate-export: warnings 1`] = `Array []`;
+
+exports[`ICSS case duplicate-export-in-multiple-export: errors 1`] = `Array []`;
+
+exports[`ICSS case duplicate-export-in-multiple-export: locals 1`] = `
+Object {
+ "_test": "_right_value",
+}
+`;
+
+exports[`ICSS case duplicate-export-in-multiple-export: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case duplicate-export-in-multiple-export: warnings 1`] = `Array []`;
+
+exports[`ICSS case empty-export: errors 1`] = `Array []`;
+
+exports[`ICSS case empty-export: locals 1`] = `undefined`;
+
+exports[`ICSS case empty-export: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case empty-export: warnings 1`] = `Array []`;
+
+exports[`ICSS case empty-import: errors 1`] = `Array []`;
+
+exports[`ICSS case empty-import: locals 1`] = `undefined`;
+
+exports[`ICSS case empty-import: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case empty-import: warnings 1`] = `Array []`;
+
+exports[`ICSS case export: errors 1`] = `Array []`;
+
+exports[`ICSS case export: locals 1`] = `
+Object {
+ "_test": "_test",
+}
+`;
+
+exports[`ICSS case export: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case export: warnings 1`] = `Array []`;
+
+exports[`ICSS case export-reserved-keywords: errors 1`] = `Array []`;
+
+exports[`ICSS case export-reserved-keywords: locals 1`] = `
+Object {
+ "constructor": "constructor",
+ "toString": "toString",
+}
+`;
+
+exports[`ICSS case export-reserved-keywords: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case export-reserved-keywords: warnings 1`] = `Array []`;
+
+exports[`ICSS case import: errors 1`] = `Array []`;
+
+exports[`ICSS case import: locals 1`] = `
+Object {
+ "primary-color": "red",
+}
+`;
+
+exports[`ICSS case import: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".className {
+ color: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case import: warnings 1`] = `Array []`;
+
+exports[`ICSS case import-reserved-keywords: errors 1`] = `Array []`;
+
+exports[`ICSS case import-reserved-keywords: locals 1`] = `
+Object {
+ "primary-color": "red",
+ "secondary-color": "block",
+}
+`;
+
+exports[`ICSS case import-reserved-keywords: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".className {
+ color: red;
+ display: block;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case import-reserved-keywords: warnings 1`] = `Array []`;
+
+exports[`ICSS case multiple-export: errors 1`] = `Array []`;
+
+exports[`ICSS case multiple-export: locals 1`] = `
+Object {
+ "_foo": "_bar",
+ "_test": "_test",
+}
+`;
+
+exports[`ICSS case multiple-export: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case multiple-export: warnings 1`] = `Array []`;
+
+exports[`ICSS case multiple-keys-values-in-export: errors 1`] = `Array []`;
+
+exports[`ICSS case multiple-keys-values-in-export: locals 1`] = `
+Object {
+ "_test": "_test",
+ "_test1": "1",
+ "_test2": "'string'",
+ "_test3": "1px 2px 3px",
+ "_test4": "1px 2px 3px, 1px 2px 3px",
+}
+`;
+
+exports[`ICSS case multiple-keys-values-in-export: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`ICSS case multiple-keys-values-in-export: warnings 1`] = `Array []`;
diff --git a/test/__snapshots__/import-option.test.js.snap b/test/__snapshots__/import-option.test.js.snap
new file mode 100644
index 00000000..bd57046c
--- /dev/null
+++ b/test/__snapshots__/import-option.test.js.snap
@@ -0,0 +1,1761 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`import option Function: errors 1`] = `Array []`;
+
+exports[`import option Function: module (evaluated) 1`] = `
+Array [
+ Array [
+ 3,
+ "a {
+ b: b;
+}
+",
+ "((min-width: 100px)) and (screen and print)",
+ ],
+ Array [
+ 2,
+ ".test {
+ c: c;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?foo=bar#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/other-style.css);",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(//example.com/style.css);",
+ "",
+ ],
+ Array [
+ 4,
+ ".query {
+ e: e;
+}
+",
+ "",
+ ],
+ Array [
+ 5,
+ ".other-query {
+ f: f;
+}
+",
+ "",
+ ],
+ Array [
+ 6,
+ ".other-query {
+ f: f;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Roboto);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);",
+ "",
+ ],
+ Array [
+ 7,
+ ".relative {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 8,
+ ".top-relative {
+ color: black;
+}
+",
+ "",
+ ],
+ Array [
+ 9,
+ ".tilde {
+ color: yellow;
+}
+",
+ "",
+ ],
+ Array [
+ 10,
+ ".alias {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 11,
+ ".background-imported {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(test.css);
+@import url('test.css');
+@import url(\\"test.css\\");
+@IMPORT url(test.css);
+@import URL(test.css);
+@import url(test.css );
+@import url( test.css);
+@import url( test.css );
+@import url(
+ test.css
+);
+@import url();
+@import url('');
+@import url(\\"\\");
+@import \\"test.css\\";
+@import 'test.css';
+@import '';
+@import \\"\\";
+@import \\" \\";
+@import \\"
+\\";
+@import url();
+@import url('');
+@import url(\\"\\");
+@import url(test.css) screen and print;
+@import url(test.css) SCREEN AND PRINT;
+@import url(test.css)screen and print;
+@import url(test.css) screen and print;
+@import url(~package/test.css);
+@import ;
+@import foo-bar;
+@import-normalize;
+@import url('http://') :root {}
+
+.class {
+ a: b c d;
+}
+
+.foo {
+ @import 'path.css';
+}
+
+.background {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`import option Function: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-media.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"), \\"(min-width: 100px)\\");
+exports.push([module.id, \\"@import url(http://example.com/style.css);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?foo=bar#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and print\\"]);
+exports.push([module.id, \\"@import url(//example.com/style.css);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./query.css?foo=1&bar=1\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"screen and print\\");
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Roboto);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../import/top-relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/tilde.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!aliasesImport/alias.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./url.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+// Module
+exports.push([module.id, \\"@import url(test.css);\\\\n@import url('test.css');\\\\n@import url(\\\\\\"test.css\\\\\\");\\\\n@IMPORT url(test.css);\\\\n@import URL(test.css);\\\\n@import url(test.css );\\\\n@import url( test.css);\\\\n@import url( test.css );\\\\n@import url(\\\\n test.css\\\\n);\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import \\\\\\"test.css\\\\\\";\\\\n@import 'test.css';\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\" \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import url(test.css) screen and print;\\\\n@import url(test.css) SCREEN AND PRINT;\\\\n@import url(test.css)screen and print;\\\\n@import url(test.css) screen and print;\\\\n@import url(~package/test.css);\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.class {\\\\n a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n @import 'path.css';\\\\n}\\\\n\\\\n.background {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`import option Function: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(12:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(13:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(14:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(17:1) Unable to find uri in '@import '''",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(18:1) Unable to find uri in '@import \\"\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(19:1) Unable to find uri in '@import \\" \\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(20:1) Unable to find uri in '@import \\"
+\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(22:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(23:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(24:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(40:1) Unable to find uri in '@import '",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(41:1) Unable to find uri in '@import foo-bar'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(43:1) It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
+]
+`;
+
+exports[`import option false: errors 1`] = `Array []`;
+
+exports[`import option false: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@import url(test.css);
+@import url('test.css');
+@import url(\\"test.css\\");
+@IMPORT url(test.css);
+@import URL(test.css);
+@import url(test.css );
+@import url( test.css);
+@import url( test.css );
+@import url(
+ test.css
+);
+@import url();
+@import url('');
+@import url(\\"\\");
+@import \\"test.css\\";
+@import 'test.css';
+@import '';
+@import \\"\\";
+@import \\" \\";
+@import \\"
+\\";
+@import url();
+@import url('');
+@import url(\\"\\");
+@import url(test.css) screen and print;
+@import url(test.css) SCREEN AND PRINT;
+@import url(test.css)screen and print;
+@import url(test.css) screen and print;
+@import url(test-media.css) screen and print;
+@import url(test-other.css) (min-width: 100px);
+@import url(http://example.com/style.css);
+@import url(http://example.com/style.css);
+@import url(http://example.com/style.css#hash);
+@import url(http://example.com/style.css?#hash);
+@import url(http://example.com/style.css?foo=bar#hash);
+@import url(http://example.com/other-style.css) screen and print;
+@import url(http://example.com/other-style.css) screen and print;
+@import url(\\"//example.com/style.css\\");
+@import url(~package/test.css);
+@import ;
+@import foo-bar;
+@import-normalize;
+@import url('http://') :root {}
+@import url('query.css?foo=1&bar=1');
+@import url('other-query.css?foo=1&bar=1#hash');
+@import url('other-query.css?foo=1&bar=1#hash') screen and print;
+@import url('https://fonts.googleapis.com/css?family=Roboto');
+@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC');
+@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto');
+
+.class {
+ a: b c d;
+}
+
+.foo {
+ @import 'path.css';
+}
+
+@import url('./relative.css');
+@import url('../import/top-relative.css');
+@import url(~package/tilde.css);
+@import url(~aliasesImport/alias.css);
+@import url('./url.css');
+
+.background {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`import option false: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+// Module
+exports.push([module.id, \\"@import url(test.css);\\\\n@import url('test.css');\\\\n@import url(\\\\\\"test.css\\\\\\");\\\\n@IMPORT url(test.css);\\\\n@import URL(test.css);\\\\n@import url(test.css );\\\\n@import url( test.css);\\\\n@import url( test.css );\\\\n@import url(\\\\n test.css\\\\n);\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import \\\\\\"test.css\\\\\\";\\\\n@import 'test.css';\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\" \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import url(test.css) screen and print;\\\\n@import url(test.css) SCREEN AND PRINT;\\\\n@import url(test.css)screen and print;\\\\n@import url(test.css) screen and print;\\\\n@import url(test-media.css) screen and print;\\\\n@import url(test-other.css) (min-width: 100px);\\\\n@import url(http://example.com/style.css);\\\\n@import url(http://example.com/style.css);\\\\n@import url(http://example.com/style.css#hash);\\\\n@import url(http://example.com/style.css?#hash);\\\\n@import url(http://example.com/style.css?foo=bar#hash);\\\\n@import url(http://example.com/other-style.css) screen and print;\\\\n@import url(http://example.com/other-style.css) screen and print;\\\\n@import url(\\\\\\"//example.com/style.css\\\\\\");\\\\n@import url(~package/test.css);\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n@import url('query.css?foo=1&bar=1');\\\\n@import url('other-query.css?foo=1&bar=1#hash');\\\\n@import url('other-query.css?foo=1&bar=1#hash') screen and print;\\\\n@import url('https://fonts.googleapis.com/css?family=Roboto');\\\\n@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC');\\\\n@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto');\\\\n\\\\n.class {\\\\n a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n @import 'path.css';\\\\n}\\\\n\\\\n@import url('./relative.css');\\\\n@import url('../import/top-relative.css');\\\\n@import url(~package/tilde.css);\\\\n@import url(~aliasesImport/alias.css);\\\\n@import url('./url.css');\\\\n\\\\n.background {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`import option false: warnings 1`] = `Array []`;
+
+exports[`import option true and modules \`false\`: errors 1`] = `Array []`;
+
+exports[`import option true and modules \`false\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".test {
+ a: a;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ ".test {
+ a: a;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 5,
+ "a {
+ b: b;
+}
+",
+ "((min-width: 100px)) and (screen and print)",
+ ],
+ Array [
+ 4,
+ ".test {
+ c: c;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?foo=bar#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/other-style.css);",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(//example.com/style.css);",
+ "",
+ ],
+ Array [
+ 6,
+ ".test {
+ d: d
+}
+",
+ "",
+ ],
+ Array [
+ 7,
+ ".query {
+ e: e;
+}
+",
+ "",
+ ],
+ Array [
+ 8,
+ ".other-query {
+ f: f;
+}
+",
+ "",
+ ],
+ Array [
+ 9,
+ ".other-query {
+ f: f;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Roboto);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);",
+ "",
+ ],
+ Array [
+ 10,
+ ".relative {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 11,
+ ".top-relative {
+ color: black;
+}
+",
+ "",
+ ],
+ Array [
+ 12,
+ ".tilde {
+ color: yellow;
+}
+",
+ "",
+ ],
+ Array [
+ 13,
+ ".alias {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 14,
+ ".background-imported {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url();
+@import url('');
+@import url(\\"\\");
+@import '';
+@import \\"\\";
+@import \\" \\";
+@import \\"
+\\";
+@import url();
+@import url('');
+@import url(\\"\\");
+@import ;
+@import foo-bar;
+@import-normalize;
+@import url('http://') :root {}
+
+.class {
+ a: b c d;
+}
+
+.foo {
+ @import 'path.css';
+}
+
+.background {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`import option true and modules \`false\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-media.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"), \\"(min-width: 100px)\\");
+exports.push([module.id, \\"@import url(http://example.com/style.css);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?foo=bar#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and print\\"]);
+exports.push([module.id, \\"@import url(//example.com/style.css);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./query.css?foo=1&bar=1\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"screen and print\\");
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Roboto);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../import/top-relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/tilde.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!aliasesImport/alias.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./url.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+// Module
+exports.push([module.id, \\"@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\" \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.class {\\\\n a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n @import 'path.css';\\\\n}\\\\n\\\\n.background {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`import option true and modules \`false\`: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(12:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(13:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(14:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(17:1) Unable to find uri in '@import '''",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(18:1) Unable to find uri in '@import \\"\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(19:1) Unable to find uri in '@import \\" \\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(20:1) Unable to find uri in '@import \\"
+\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(22:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(23:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(24:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(40:1) Unable to find uri in '@import '",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(41:1) Unable to find uri in '@import foo-bar'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(43:1) It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
+]
+`;
+
+exports[`import option true and modules \`global\`: errors 1`] = `Array []`;
+
+exports[`import option true and modules \`global\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".test {
+ a: a;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ ".test {
+ a: a;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 5,
+ "a {
+ b: b;
+}
+",
+ "((min-width: 100px)) and (screen and print)",
+ ],
+ Array [
+ 4,
+ ".test {
+ c: c;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?foo=bar#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/other-style.css);",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(//example.com/style.css);",
+ "",
+ ],
+ Array [
+ 6,
+ ".test {
+ d: d
+}
+",
+ "",
+ ],
+ Array [
+ 7,
+ ".query {
+ e: e;
+}
+",
+ "",
+ ],
+ Array [
+ 8,
+ ".other-query {
+ f: f;
+}
+",
+ "",
+ ],
+ Array [
+ 9,
+ ".other-query {
+ f: f;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Roboto);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);",
+ "",
+ ],
+ Array [
+ 10,
+ ".relative {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 11,
+ ".top-relative {
+ color: black;
+}
+",
+ "",
+ ],
+ Array [
+ 12,
+ ".tilde {
+ color: yellow;
+}
+",
+ "",
+ ],
+ Array [
+ 13,
+ ".alias {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 14,
+ ".background-imported {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url();
+@import url('');
+@import url(\\"\\");
+@import '';
+@import \\"\\";
+@import \\" \\";
+@import \\"
+\\";
+@import url();
+@import url('');
+@import url(\\"\\");
+@import ;
+@import foo-bar;
+@import-normalize;
+@import url('http://') :root {}
+
+.class {
+ a: b c d;
+}
+
+.foo {
+ @import 'path.css';
+}
+
+.background {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`import option true and modules \`global\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-media.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"), \\"(min-width: 100px)\\");
+exports.push([module.id, \\"@import url(http://example.com/style.css);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?foo=bar#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and print\\"]);
+exports.push([module.id, \\"@import url(//example.com/style.css);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./query.css?foo=1&bar=1\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"screen and print\\");
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Roboto);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../import/top-relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/tilde.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!aliasesImport/alias.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./url.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+// Module
+exports.push([module.id, \\"@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\" \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.class {\\\\n a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n @import 'path.css';\\\\n}\\\\n\\\\n.background {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`import option true and modules \`global\`: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(12:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(13:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(14:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(17:1) Unable to find uri in '@import '''",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(18:1) Unable to find uri in '@import \\"\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(19:1) Unable to find uri in '@import \\" \\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(20:1) Unable to find uri in '@import \\"
+\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(22:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(23:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(24:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(40:1) Unable to find uri in '@import '",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(41:1) Unable to find uri in '@import foo-bar'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(43:1) It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
+]
+`;
+
+exports[`import option true and modules \`local\`: errors 1`] = `Array []`;
+
+exports[`import option true and modules \`local\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._3fDHa2l1HOcl9VXVfSKtB7 {
+ a: a;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ "._3fDHa2l1HOcl9VXVfSKtB7 {
+ a: a;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 5,
+ "a {
+ b: b;
+}
+",
+ "((min-width: 100px)) and (screen and print)",
+ ],
+ Array [
+ 4,
+ ".f63QYE3dlpdhZuYg8R4pd {
+ c: c;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?foo=bar#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/other-style.css);",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(//example.com/style.css);",
+ "",
+ ],
+ Array [
+ 6,
+ "._1lN7KGFmbEaXH8rJdLC9cT {
+ d: d
+}
+",
+ "",
+ ],
+ Array [
+ 7,
+ "._2FiPFdRUJ6bc--oLN32vUX {
+ e: e;
+}
+",
+ "",
+ ],
+ Array [
+ 8,
+ "._2nQ7ONr22lmMu683ljj0MN {
+ f: f;
+}
+",
+ "",
+ ],
+ Array [
+ 9,
+ "._2nQ7ONr22lmMu683ljj0MN {
+ f: f;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Roboto);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);",
+ "",
+ ],
+ Array [
+ 10,
+ "._37G_Iu-0wcPjXN9ZhzZjlT {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 11,
+ "._4a-iWS8tumU5J8-oW8LlR {
+ color: black;
+}
+",
+ "",
+ ],
+ Array [
+ 12,
+ "._2VXavzz3TUKPrbI3S1tkrW {
+ color: yellow;
+}
+",
+ "",
+ ],
+ Array [
+ 13,
+ "._2E2zpPgFs4vJaVymauWk3p {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 14,
+ "._1N9oVhfOd30-kQu9zrdhrJ {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url();
+@import url('');
+@import url(\\"\\");
+@import '';
+@import \\"\\";
+@import \\" \\";
+@import \\"
+\\";
+@import url();
+@import url('');
+@import url(\\"\\");
+@import ;
+@import foo-bar;
+@import-normalize;
+@import url('http://') :root {}
+
+.hnxX78DgkaA2kCp_BPbLd {
+ a: b c d;
+}
+
+._1Lug_45kZL-M7XuNeM4SCw {
+ @import 'path.css';
+}
+
+._1E9CLkKp-0idM8IkvZwXn9 {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`import option true and modules \`local\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-media.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"), \\"(min-width: 100px)\\");
+exports.push([module.id, \\"@import url(http://example.com/style.css);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?foo=bar#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and print\\"]);
+exports.push([module.id, \\"@import url(//example.com/style.css);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./query.css?foo=1&bar=1\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"screen and print\\");
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Roboto);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../import/top-relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/tilde.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!aliasesImport/alias.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./url.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+// Module
+exports.push([module.id, \\"@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\" \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.hnxX78DgkaA2kCp_BPbLd {\\\\n a: b c d;\\\\n}\\\\n\\\\n._1Lug_45kZL-M7XuNeM4SCw {\\\\n @import 'path.css';\\\\n}\\\\n\\\\n._1E9CLkKp-0idM8IkvZwXn9 {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"class\\": \\"hnxX78DgkaA2kCp_BPbLd\\",
+ \\"foo\\": \\"_1Lug_45kZL-M7XuNeM4SCw\\",
+ \\"background\\": \\"_1E9CLkKp-0idM8IkvZwXn9\\"
+};"
+`;
+
+exports[`import option true and modules \`local\`: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(12:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(13:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(14:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(17:1) Unable to find uri in '@import '''",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(18:1) Unable to find uri in '@import \\"\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(19:1) Unable to find uri in '@import \\" \\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(20:1) Unable to find uri in '@import \\"
+\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(22:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(23:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(24:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(40:1) Unable to find uri in '@import '",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(41:1) Unable to find uri in '@import foo-bar'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(43:1) It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
+]
+`;
+
+exports[`import option true and modules \`true\`: errors 1`] = `Array []`;
+
+exports[`import option true and modules \`true\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._3fDHa2l1HOcl9VXVfSKtB7 {
+ a: a;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ "._3fDHa2l1HOcl9VXVfSKtB7 {
+ a: a;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 5,
+ "a {
+ b: b;
+}
+",
+ "((min-width: 100px)) and (screen and print)",
+ ],
+ Array [
+ 4,
+ ".f63QYE3dlpdhZuYg8R4pd {
+ c: c;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?foo=bar#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/other-style.css);",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(//example.com/style.css);",
+ "",
+ ],
+ Array [
+ 6,
+ "._1lN7KGFmbEaXH8rJdLC9cT {
+ d: d
+}
+",
+ "",
+ ],
+ Array [
+ 7,
+ "._2FiPFdRUJ6bc--oLN32vUX {
+ e: e;
+}
+",
+ "",
+ ],
+ Array [
+ 8,
+ "._2nQ7ONr22lmMu683ljj0MN {
+ f: f;
+}
+",
+ "",
+ ],
+ Array [
+ 9,
+ "._2nQ7ONr22lmMu683ljj0MN {
+ f: f;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Roboto);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);",
+ "",
+ ],
+ Array [
+ 10,
+ "._37G_Iu-0wcPjXN9ZhzZjlT {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 11,
+ "._4a-iWS8tumU5J8-oW8LlR {
+ color: black;
+}
+",
+ "",
+ ],
+ Array [
+ 12,
+ "._2VXavzz3TUKPrbI3S1tkrW {
+ color: yellow;
+}
+",
+ "",
+ ],
+ Array [
+ 13,
+ "._2E2zpPgFs4vJaVymauWk3p {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 14,
+ "._1N9oVhfOd30-kQu9zrdhrJ {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url();
+@import url('');
+@import url(\\"\\");
+@import '';
+@import \\"\\";
+@import \\" \\";
+@import \\"
+\\";
+@import url();
+@import url('');
+@import url(\\"\\");
+@import ;
+@import foo-bar;
+@import-normalize;
+@import url('http://') :root {}
+
+.hnxX78DgkaA2kCp_BPbLd {
+ a: b c d;
+}
+
+._1Lug_45kZL-M7XuNeM4SCw {
+ @import 'path.css';
+}
+
+._1E9CLkKp-0idM8IkvZwXn9 {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`import option true and modules \`true\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-media.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"), \\"(min-width: 100px)\\");
+exports.push([module.id, \\"@import url(http://example.com/style.css);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?foo=bar#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and print\\"]);
+exports.push([module.id, \\"@import url(//example.com/style.css);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./query.css?foo=1&bar=1\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"screen and print\\");
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Roboto);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../import/top-relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/tilde.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!aliasesImport/alias.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./url.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+// Module
+exports.push([module.id, \\"@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\" \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.hnxX78DgkaA2kCp_BPbLd {\\\\n a: b c d;\\\\n}\\\\n\\\\n._1Lug_45kZL-M7XuNeM4SCw {\\\\n @import 'path.css';\\\\n}\\\\n\\\\n._1E9CLkKp-0idM8IkvZwXn9 {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"class\\": \\"hnxX78DgkaA2kCp_BPbLd\\",
+ \\"foo\\": \\"_1Lug_45kZL-M7XuNeM4SCw\\",
+ \\"background\\": \\"_1E9CLkKp-0idM8IkvZwXn9\\"
+};"
+`;
+
+exports[`import option true and modules \`true\`: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(12:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(13:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(14:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(17:1) Unable to find uri in '@import '''",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(18:1) Unable to find uri in '@import \\"\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(19:1) Unable to find uri in '@import \\" \\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(20:1) Unable to find uri in '@import \\"
+\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(22:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(23:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(24:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(40:1) Unable to find uri in '@import '",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(41:1) Unable to find uri in '@import foo-bar'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(43:1) It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
+]
+`;
+
+exports[`import option true: errors 1`] = `Array []`;
+
+exports[`import option true: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".test {
+ a: a;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ ".test {
+ a: a;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 5,
+ "a {
+ b: b;
+}
+",
+ "((min-width: 100px)) and (screen and print)",
+ ],
+ Array [
+ 4,
+ ".test {
+ c: c;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/style.css?foo=bar#hash);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(http://example.com/other-style.css);",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(//example.com/style.css);",
+ "",
+ ],
+ Array [
+ 6,
+ ".test {
+ d: d
+}
+",
+ "",
+ ],
+ Array [
+ 7,
+ ".query {
+ e: e;
+}
+",
+ "",
+ ],
+ Array [
+ 8,
+ ".other-query {
+ f: f;
+}
+",
+ "",
+ ],
+ Array [
+ 9,
+ ".other-query {
+ f: f;
+}
+",
+ "screen and print",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Roboto);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);",
+ "",
+ ],
+ Array [
+ 10,
+ ".relative {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 11,
+ ".top-relative {
+ color: black;
+}
+",
+ "",
+ ],
+ Array [
+ 12,
+ ".tilde {
+ color: yellow;
+}
+",
+ "",
+ ],
+ Array [
+ 13,
+ ".alias {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 14,
+ ".background-imported {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@import url();
+@import url('');
+@import url(\\"\\");
+@import '';
+@import \\"\\";
+@import \\" \\";
+@import \\"
+\\";
+@import url();
+@import url('');
+@import url(\\"\\");
+@import ;
+@import foo-bar;
+@import-normalize;
+@import url('http://') :root {}
+
+.class {
+ a: b c d;
+}
+
+.foo {
+ @import 'path.css';
+}
+
+.background {
+ background: url(/webpack/public/path/img.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`import option true: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-media.css\\"), \\"screen and print\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"), \\"(min-width: 100px)\\");
+exports.push([module.id, \\"@import url(http://example.com/style.css);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/style.css?foo=bar#hash);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and print\\"]);
+exports.push([module.id, \\"@import url(//example.com/style.css);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/test.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./query.css?foo=1&bar=1\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"), \\"screen and print\\");
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Roboto);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);\\", \\"\\"]);
+exports.push([module.id, \\"@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);\\", \\"\\"]);
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../import/top-relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/tilde.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!aliasesImport/alias.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./url.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+// Module
+exports.push([module.id, \\"@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import '';\\\\n@import \\\\\\"\\\\\\";\\\\n@import \\\\\\" \\\\\\";\\\\n@import \\\\\\"\\\\n\\\\\\";\\\\n@import url();\\\\n@import url('');\\\\n@import url(\\\\\\"\\\\\\");\\\\n@import ;\\\\n@import foo-bar;\\\\n@import-normalize;\\\\n@import url('http://') :root {}\\\\n\\\\n.class {\\\\n a: b c d;\\\\n}\\\\n\\\\n.foo {\\\\n @import 'path.css';\\\\n}\\\\n\\\\n.background {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`import option true: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(12:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(13:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(14:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(17:1) Unable to find uri in '@import '''",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(18:1) Unable to find uri in '@import \\"\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(19:1) Unable to find uri in '@import \\" \\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(20:1) Unable to find uri in '@import \\"
+\\"'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(22:1) Unable to find uri in '@import url()'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(23:1) Unable to find uri in '@import url('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(24:1) Unable to find uri in '@import url(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(40:1) Unable to find uri in '@import '",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(41:1) Unable to find uri in '@import foo-bar'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(43:1) It looks like you didn't end your @import statement correctly. Child nodes are attached to it.",
+]
+`;
diff --git a/test/__snapshots__/importLoaders-option.test.js.snap b/test/__snapshots__/importLoaders-option.test.js.snap
new file mode 100644
index 00000000..c810b8ce
--- /dev/null
+++ b/test/__snapshots__/importLoaders-option.test.js.snap
@@ -0,0 +1,181 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`importLoaders option 0 (\`postcss-loader\` before): errors 1`] = `Array []`;
+
+exports[`importLoaders option 0 (\`postcss-loader\` before): module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ color: blue;
+ color: rgb(0 0 100% / 90%);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".foo {
+ color: red;
+ color: rgba(0, 0, 255, 0.9);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`importLoaders option 0 (\`postcss-loader\` before): module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+// Module
+exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgba(0, 0, 255, 0.9);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`importLoaders option 0 (\`postcss-loader\` before): warnings 1`] = `Array []`;
+
+exports[`importLoaders option 1 (\`postcss-loader\` before): errors 1`] = `Array []`;
+
+exports[`importLoaders option 1 (\`postcss-loader\` before): module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ color: blue;
+ color: rgba(0, 0, 255, 0.9);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".foo {
+ color: red;
+ color: rgba(0, 0, 255, 0.9);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`importLoaders option 1 (\`postcss-loader\` before): module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../../../node_modules/postcss-loader/src/index.js??ref--4-1!./imported.css\\"), \\"\\");
+// Module
+exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgba(0, 0, 255, 0.9);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`importLoaders option 1 (\`postcss-loader\` before): warnings 1`] = `Array []`;
+
+exports[`importLoaders option 1 (no loaders before): errors 1`] = `Array []`;
+
+exports[`importLoaders option 1 (no loaders before): module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ color: blue;
+ color: rgb(0 0 100% / 90%);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".foo {
+ color: red;
+ color: rgb(0 0 100% / 90%);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`importLoaders option 1 (no loaders before): module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+// Module
+exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgb(0 0 100% / 90%);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`importLoaders option 1 (no loaders before): warnings 1`] = `Array []`;
+
+exports[`importLoaders option 2 (\`postcss-loader\` before): errors 1`] = `Array []`;
+
+exports[`importLoaders option 2 (\`postcss-loader\` before): module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ color: blue;
+ color: rgba(0, 0, 255, 0.9);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".foo {
+ color: red;
+ color: rgba(0, 0, 255, 0.9);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`importLoaders option 2 (\`postcss-loader\` before): module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../../../node_modules/postcss-loader/src/index.js??ref--4-1!./imported.css\\"), \\"\\");
+// Module
+exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgba(0, 0, 255, 0.9);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`importLoaders option 2 (\`postcss-loader\` before): warnings 1`] = `Array []`;
+
+exports[`importLoaders option not specify (no loader before): errors 1`] = `Array []`;
+
+exports[`importLoaders option not specify (no loader before): module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ color: blue;
+ color: rgb(0 0 100% / 90%);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".foo {
+ color: red;
+ color: rgba(0, 0, 255, 0.9);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`importLoaders option not specify (no loader before): module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+// Module
+exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgba(0, 0, 255, 0.9);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`importLoaders option not specify (no loader before): warnings 1`] = `Array []`;
diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap
new file mode 100644
index 00000000..9c865cf1
--- /dev/null
+++ b/test/__snapshots__/loader.test.js.snap
@@ -0,0 +1,1373 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): api 1`] = `
+"/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+// css base code, injected by the css-loader
+// eslint-disable-next-line func-names
+module.exports = function(useSourceMap) {
+ const list = [];
+
+ // return the list of modules as css string
+ list.toString = function toString() {
+ return this.map((item) => {
+ const content = cssWithMappingToString(item, useSourceMap);
+
+ if (item[2]) {
+ return \`@media \${item[2]}{\${content}}\`;
+ }
+
+ return content;
+ }).join('');
+ };
+
+ // import a list of modules into the list
+ // eslint-disable-next-line func-names
+ list.i = function(modules, mediaQuery) {
+ if (typeof modules === 'string') {
+ // eslint-disable-next-line no-param-reassign
+ modules = [[null, modules, '']];
+ }
+
+ const alreadyImportedModules = {};
+
+ for (let i = 0; i < this.length; i++) {
+ // eslint-disable-next-line prefer-destructuring
+ const id = this[i][0];
+
+ if (id != null) {
+ alreadyImportedModules[id] = true;
+ }
+ }
+
+ for (let i = 0; i < modules.length; i++) {
+ const item = modules[i];
+
+ // skip already imported module
+ // this implementation is not 100% perfect for weird media query combinations
+ // when a module is imported multiple times with different media queries.
+ // I hope this will never occur (Hey this way we have smaller bundles)
+ if (item[0] == null || !alreadyImportedModules[item[0]]) {
+ if (mediaQuery && !item[2]) {
+ item[2] = mediaQuery;
+ } else if (mediaQuery) {
+ item[2] = \`(\${item[2]}) and (\${mediaQuery})\`;
+ }
+
+ list.push(item);
+ }
+ }
+ };
+
+ return list;
+};
+
+function cssWithMappingToString(item, useSourceMap) {
+ const content = item[1] || '';
+ // eslint-disable-next-line prefer-destructuring
+ const cssMapping = item[3];
+
+ if (!cssMapping) {
+ return content;
+ }
+
+ if (useSourceMap && typeof btoa === 'function') {
+ const sourceMapping = toComment(cssMapping);
+ const sourceURLs = cssMapping.sources.map(
+ (source) => \`/*# sourceURL=\${cssMapping.sourceRoot}\${source} */\`
+ );
+
+ return [content]
+ .concat(sourceURLs)
+ .concat([sourceMapping])
+ .join('\\\\n');
+ }
+
+ return [content].join('\\\\n');
+}
+
+// Adapted from convert-source-map (MIT)
+function toComment(sourceMap) {
+ // eslint-disable-next-line no-undef
+ const base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
+ const data = \`sourceMappingURL=data:application/json;charset=utf-8;base64,\${base64}\`;
+
+ return \`/*# \${data} */\`;
+}
+"
+`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): errors 1`] = `Array []`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): escape 1`] = `
+"module.exports = (url, needQuotes) => {
+ // eslint-disable-next-line no-underscore-dangle, no-param-reassign
+ url = url.__esModule ? url.default : url;
+
+ if (typeof url !== 'string') {
+ return url;
+ }
+
+ // If url is already wrapped in quotes, remove them
+ if (/^['\\"].*['\\"]$/.test(url)) {
+ // eslint-disable-next-line no-param-reassign
+ url = url.slice(1, -1);
+ }
+
+ // Should url be wrapped?
+ // See https://drafts.csswg.org/css-values-3/#urls
+ if (/[\\"'() \\\\t\\\\n]/.test(url) || needQuotes) {
+ return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`;
+ }
+
+ return url;
+};
+"
+`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".foo {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@charset \\"UTF-8\\";
+
+/* Comment */
+
+.class {
+ color: red;
+ background: url(/webpack/public/path/img.png);
+}
+
+.class-duplicate-url {
+ background: url(/webpack/public/path/img.png);
+}
+
+:root {
+ --foo: 1px;
+ --bar: 2px;
+}
+
+.class { a: b c d; }
+
+.two {}
+
+.u-m\\\\+ { a: b c d; }
+
+.class { content: \\"\\\\F10C\\" }
+
+@media only screen and (max-width: 600px) {
+ body {
+ background-color: lightblue;
+ }
+}
+
+.class {
+ content: \\"\\\\2193\\";
+ content: \\"\\\\2193\\\\2193\\";
+ content: \\"\\\\2193 \\\\2193\\";
+ content: \\"\\\\2193\\\\2193\\\\2193\\";
+ content: \\"\\\\2193 \\\\2193 \\\\2193\\";
+}
+
+.-top {}
+.\\\\-top {}
+
+#\\\\#test {}
+
+.grid {
+ display: flex;
+ flex-wrap: wrap;
+}
+.grid.\\\\-top {
+ align-items: flex-start;
+}
+.grid.-top {
+ align-items: flex-start;
+}
+.grid.\\\\-middle {
+ align-items: center;
+}
+.grid.\\\\-bottom {
+ align-items: flex-end;
+}
+
+.u-m\\\\00002b {}
+
+.u-m00002b {}
+
+#u-m\\\\+ {}
+
+body {
+ font-family: '微软雅黑'; /* some chinese font name */
+}
+
+.myStyle {
+ content: '\\\\e901';
+}
+
+.myStyle {
+ content: '\\\\E901';
+}
+
+.♫ {}
+
+.\\\\3A \\\\\`\\\\( {} /* matches elements with class=\\":\`(\\" */
+.\\\\31 a2b3c {} /* matches elements with class=\\"1a2b3c\\" */
+#\\\\#fake-id {} /* matches the element with id=\\"#fake-id\\" */
+#-a-b-c- {} /* matches the element with id=\\"-a-b-c-\\" */
+#© {} /* matches the element with id=\\"©\\" */
+
+:root {
+ --title-align: center;
+ --sr-only: {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0,0,0,0);
+ white-space: nowrap;
+ clip-path: inset(50%);
+ border: 0;
+ };
+}
+
+.test {
+ content: \\"\\\\2014\\\\A0\\";
+ content: \\"\\\\2014 \\\\A0\\";
+ content: \\"\\\\A0 \\\\2014\\";
+ content: \\"\\\\A0\\\\2014\\";
+ margin-top: 1px\\\\9;
+ background-color: #000\\\\9;
+}
+
+.light.on .bulb:before{
+ content: '💡';
+}
+
+.base64 {
+ background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);
+}
+
+a[href=''] {
+ color: red;
+}
+
+a[href='' i] {
+ color: red;
+}
+
+a[href=\\"\\"] {
+ color: blue;
+}
+
+a[href=\\"\\" i] {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): module 1`] = `
+"exports = module.exports = require(\\"../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./url/img.png\\"));
+// Module
+exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n:root {\\\\n --foo: 1px;\\\\n --bar: 2px;\\\\n}\\\\n\\\\n.class { a: b c d; }\\\\n\\\\n.two {}\\\\n\\\\n.u-m\\\\\\\\+ { a: b c d; }\\\\n\\\\n.class { content: \\\\\\"\\\\\\\\F10C\\\\\\" }\\\\n\\\\n@media only screen and (max-width: 600px) {\\\\n body {\\\\n background-color: lightblue;\\\\n }\\\\n}\\\\n\\\\n.class {\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193 \\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\\\2193\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193 \\\\\\\\2193 \\\\\\\\2193\\\\\\";\\\\n}\\\\n\\\\n.-top {}\\\\n.\\\\\\\\-top {}\\\\n\\\\n#\\\\\\\\#test {}\\\\n\\\\n.grid {\\\\n display: flex;\\\\n flex-wrap: wrap;\\\\n}\\\\n.grid.\\\\\\\\-top {\\\\n align-items: flex-start;\\\\n}\\\\n.grid.-top {\\\\n align-items: flex-start;\\\\n}\\\\n.grid.\\\\\\\\-middle {\\\\n align-items: center;\\\\n}\\\\n.grid.\\\\\\\\-bottom {\\\\n align-items: flex-end;\\\\n}\\\\n\\\\n.u-m\\\\\\\\00002b {}\\\\n\\\\n.u-m00002b {}\\\\n\\\\n#u-m\\\\\\\\+ {}\\\\n\\\\nbody {\\\\n font-family: '微软雅黑'; /* some chinese font name */\\\\n}\\\\n\\\\n.myStyle {\\\\n content: '\\\\\\\\e901';\\\\n}\\\\n\\\\n.myStyle {\\\\n content: '\\\\\\\\E901';\\\\n}\\\\n\\\\n.♫ {}\\\\n\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {} /* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.\\\\\\\\31 a2b3c {} /* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n#\\\\\\\\#fake-id {} /* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#-a-b-c- {} /* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#© {} /* matches the element with id=\\\\\\"©\\\\\\" */\\\\n\\\\n:root {\\\\n --title-align: center;\\\\n --sr-only: {\\\\n position: absolute;\\\\n width: 1px;\\\\n height: 1px;\\\\n padding: 0;\\\\n overflow: hidden;\\\\n clip: rect(0,0,0,0);\\\\n white-space: nowrap;\\\\n clip-path: inset(50%);\\\\n border: 0;\\\\n };\\\\n}\\\\n\\\\n.test {\\\\n content: \\\\\\"\\\\\\\\2014\\\\\\\\A0\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2014 \\\\\\\\A0\\\\\\";\\\\n content: \\\\\\"\\\\\\\\A0 \\\\\\\\2014\\\\\\";\\\\n content: \\\\\\"\\\\\\\\A0\\\\\\\\2014\\\\\\";\\\\n margin-top: 1px\\\\\\\\9;\\\\n background-color: #000\\\\\\\\9;\\\\n}\\\\n\\\\n.light.on .bulb:before{\\\\n content: '💡';\\\\n}\\\\n\\\\n.base64 {\\\\n background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);\\\\n}\\\\n\\\\na[href=''] {\\\\n color: red;\\\\n}\\\\n\\\\na[href='' i] {\\\\n color: red;\\\\n}\\\\n\\\\na[href=\\\\\\"\\\\\\"] {\\\\n color: blue;\\\\n}\\\\n\\\\na[href=\\\\\\"\\\\\\" i] {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): warnings 1`] = `Array []`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`local\`): api 1`] = `
+"/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+// css base code, injected by the css-loader
+// eslint-disable-next-line func-names
+module.exports = function(useSourceMap) {
+ const list = [];
+
+ // return the list of modules as css string
+ list.toString = function toString() {
+ return this.map((item) => {
+ const content = cssWithMappingToString(item, useSourceMap);
+
+ if (item[2]) {
+ return \`@media \${item[2]}{\${content}}\`;
+ }
+
+ return content;
+ }).join('');
+ };
+
+ // import a list of modules into the list
+ // eslint-disable-next-line func-names
+ list.i = function(modules, mediaQuery) {
+ if (typeof modules === 'string') {
+ // eslint-disable-next-line no-param-reassign
+ modules = [[null, modules, '']];
+ }
+
+ const alreadyImportedModules = {};
+
+ for (let i = 0; i < this.length; i++) {
+ // eslint-disable-next-line prefer-destructuring
+ const id = this[i][0];
+
+ if (id != null) {
+ alreadyImportedModules[id] = true;
+ }
+ }
+
+ for (let i = 0; i < modules.length; i++) {
+ const item = modules[i];
+
+ // skip already imported module
+ // this implementation is not 100% perfect for weird media query combinations
+ // when a module is imported multiple times with different media queries.
+ // I hope this will never occur (Hey this way we have smaller bundles)
+ if (item[0] == null || !alreadyImportedModules[item[0]]) {
+ if (mediaQuery && !item[2]) {
+ item[2] = mediaQuery;
+ } else if (mediaQuery) {
+ item[2] = \`(\${item[2]}) and (\${mediaQuery})\`;
+ }
+
+ list.push(item);
+ }
+ }
+ };
+
+ return list;
+};
+
+function cssWithMappingToString(item, useSourceMap) {
+ const content = item[1] || '';
+ // eslint-disable-next-line prefer-destructuring
+ const cssMapping = item[3];
+
+ if (!cssMapping) {
+ return content;
+ }
+
+ if (useSourceMap && typeof btoa === 'function') {
+ const sourceMapping = toComment(cssMapping);
+ const sourceURLs = cssMapping.sources.map(
+ (source) => \`/*# sourceURL=\${cssMapping.sourceRoot}\${source} */\`
+ );
+
+ return [content]
+ .concat(sourceURLs)
+ .concat([sourceMapping])
+ .join('\\\\n');
+ }
+
+ return [content].join('\\\\n');
+}
+
+// Adapted from convert-source-map (MIT)
+function toComment(sourceMap) {
+ // eslint-disable-next-line no-undef
+ const base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
+ const data = \`sourceMappingURL=data:application/json;charset=utf-8;base64,\${base64}\`;
+
+ return \`/*# \${data} */\`;
+}
+"
+`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`local\`): errors 1`] = `Array []`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`local\`): escape 1`] = `
+"module.exports = (url, needQuotes) => {
+ // eslint-disable-next-line no-underscore-dangle, no-param-reassign
+ url = url.__esModule ? url.default : url;
+
+ if (typeof url !== 'string') {
+ return url;
+ }
+
+ // If url is already wrapped in quotes, remove them
+ if (/^['\\"].*['\\"]$/.test(url)) {
+ // eslint-disable-next-line no-param-reassign
+ url = url.slice(1, -1);
+ }
+
+ // Should url be wrapped?
+ // See https://drafts.csswg.org/css-values-3/#urls
+ if (/[\\"'() \\\\t\\\\n]/.test(url) || needQuotes) {
+ return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`;
+ }
+
+ return url;
+};
+"
+`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`local\`): module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".KTxgbb6qrDrjy0obHlZaJ {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@charset \\"UTF-8\\";
+
+/* Comment */
+
+._1PSZ4tK4URrenXyNSoawrx {
+ color: red;
+ background: url(/webpack/public/path/img.png);
+}
+
+._3YYoEr128Gk7ZgfRycu4tr {
+ background: url(/webpack/public/path/img.png);
+}
+
+:root {
+ --foo: 1px;
+ --bar: 2px;
+}
+
+._1PSZ4tK4URrenXyNSoawrx { a: b c d; }
+
+._1LWD9ZV4XMmN23IPiMONS3 {}
+
+._3i3CD1fyX8bvzRt1H0IV-f { a: b c d; }
+
+._1PSZ4tK4URrenXyNSoawrx { content: \\"\\\\F10C\\" }
+
+@media only screen and (max-width: 600px) {
+ body {
+ background-color: lightblue;
+ }
+}
+
+._1PSZ4tK4URrenXyNSoawrx {
+ content: \\"\\\\2193\\";
+ content: \\"\\\\2193\\\\2193\\";
+ content: \\"\\\\2193 \\\\2193\\";
+ content: \\"\\\\2193\\\\2193\\\\2193\\";
+ content: \\"\\\\2193 \\\\2193 \\\\2193\\";
+}
+
+._1fWEySWrY44TvDnJ8JNxnE {}
+._1fWEySWrY44TvDnJ8JNxnE {}
+
+#Zmuw5k7Gg4hpgd6CVBEkq {}
+
+.nz2GDQ2B9PRi6GmzRwbUM {
+ display: flex;
+ flex-wrap: wrap;
+}
+.nz2GDQ2B9PRi6GmzRwbUM._1fWEySWrY44TvDnJ8JNxnE {
+ align-items: flex-start;
+}
+.nz2GDQ2B9PRi6GmzRwbUM._1fWEySWrY44TvDnJ8JNxnE {
+ align-items: flex-start;
+}
+.nz2GDQ2B9PRi6GmzRwbUM._12Sbi_HmVVsUl9TM-zo3h- {
+ align-items: center;
+}
+.nz2GDQ2B9PRi6GmzRwbUM.gpFhy6a0Dyg4XrktE4jA3 {
+ align-items: flex-end;
+}
+
+._3i3CD1fyX8bvzRt1H0IV-f {}
+
+.YDvxHwoU5TyTmW1oTkKgw {}
+
+#_3i3CD1fyX8bvzRt1H0IV-f {}
+
+body {
+ font-family: '微软雅黑'; /* some chinese font name */
+}
+
+._3txeRUnk43pQ_ialOcI-1F {
+ content: '\\\\e901';
+}
+
+._3txeRUnk43pQ_ialOcI-1F {
+ content: '\\\\E901';
+}
+
+._3Zu4uw_Urs6mU3AHN6h0NV {}
+
+._4_pn9LmAb2XtAy0kg4FN_ {} /* matches elements with class=\\":\`(\\" */
+._2LEttkwzH7jRE93Ku8MGqY {} /* matches elements with class=\\"1a2b3c\\" */
+#_2E85FJStrx25rDG2lYWifC {} /* matches the element with id=\\"#fake-id\\" */
+#_2pyPm3oWgKQ-rjECcnFYrX {} /* matches the element with id=\\"-a-b-c-\\" */
+#_2pmolVDQD2g7wt3ejy2doK {} /* matches the element with id=\\"©\\" */
+
+:root {
+ --title-align: center;
+ --sr-only: {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0,0,0,0);
+ white-space: nowrap;
+ clip-path: inset(50%);
+ border: 0;
+ };
+}
+
+._2mQhIWfQwYBHR8C-27Rb-E {
+ content: \\"\\\\2014\\\\A0\\";
+ content: \\"\\\\2014 \\\\A0\\";
+ content: \\"\\\\A0 \\\\2014\\";
+ content: \\"\\\\A0\\\\2014\\";
+ margin-top: 1px\\\\9;
+ background-color: #000\\\\9;
+}
+
+._2H1jUQC4I1yE2c9CEwXfAS._3HDHfIW-5V2j3qdUcRiaMD ._2eB5NM0D15e1HQWl3AHa8q:before{
+ content: '💡';
+}
+
+.JNjvwXXuHnb_zjhkwPzBD {
+ background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);
+}
+
+a[href=''] {
+ color: red;
+}
+
+a[href='' i] {
+ color: red;
+}
+
+a[href=\\"\\"] {
+ color: blue;
+}
+
+a[href=\\"\\" i] {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`local\`): module 1`] = `
+"exports = module.exports = require(\\"../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./url/img.png\\"));
+// Module
+exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n._1PSZ4tK4URrenXyNSoawrx {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._3YYoEr128Gk7ZgfRycu4tr {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n:root {\\\\n --foo: 1px;\\\\n --bar: 2px;\\\\n}\\\\n\\\\n._1PSZ4tK4URrenXyNSoawrx { a: b c d; }\\\\n\\\\n._1LWD9ZV4XMmN23IPiMONS3 {}\\\\n\\\\n._3i3CD1fyX8bvzRt1H0IV-f { a: b c d; }\\\\n\\\\n._1PSZ4tK4URrenXyNSoawrx { content: \\\\\\"\\\\\\\\F10C\\\\\\" }\\\\n\\\\n@media only screen and (max-width: 600px) {\\\\n body {\\\\n background-color: lightblue;\\\\n }\\\\n}\\\\n\\\\n._1PSZ4tK4URrenXyNSoawrx {\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193 \\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\\\2193\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193 \\\\\\\\2193 \\\\\\\\2193\\\\\\";\\\\n}\\\\n\\\\n._1fWEySWrY44TvDnJ8JNxnE {}\\\\n._1fWEySWrY44TvDnJ8JNxnE {}\\\\n\\\\n#Zmuw5k7Gg4hpgd6CVBEkq {}\\\\n\\\\n.nz2GDQ2B9PRi6GmzRwbUM {\\\\n display: flex;\\\\n flex-wrap: wrap;\\\\n}\\\\n.nz2GDQ2B9PRi6GmzRwbUM._1fWEySWrY44TvDnJ8JNxnE {\\\\n align-items: flex-start;\\\\n}\\\\n.nz2GDQ2B9PRi6GmzRwbUM._1fWEySWrY44TvDnJ8JNxnE {\\\\n align-items: flex-start;\\\\n}\\\\n.nz2GDQ2B9PRi6GmzRwbUM._12Sbi_HmVVsUl9TM-zo3h- {\\\\n align-items: center;\\\\n}\\\\n.nz2GDQ2B9PRi6GmzRwbUM.gpFhy6a0Dyg4XrktE4jA3 {\\\\n align-items: flex-end;\\\\n}\\\\n\\\\n._3i3CD1fyX8bvzRt1H0IV-f {}\\\\n\\\\n.YDvxHwoU5TyTmW1oTkKgw {}\\\\n\\\\n#_3i3CD1fyX8bvzRt1H0IV-f {}\\\\n\\\\nbody {\\\\n font-family: '微软雅黑'; /* some chinese font name */\\\\n}\\\\n\\\\n._3txeRUnk43pQ_ialOcI-1F {\\\\n content: '\\\\\\\\e901';\\\\n}\\\\n\\\\n._3txeRUnk43pQ_ialOcI-1F {\\\\n content: '\\\\\\\\E901';\\\\n}\\\\n\\\\n._3Zu4uw_Urs6mU3AHN6h0NV {}\\\\n\\\\n._4_pn9LmAb2XtAy0kg4FN_ {} /* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n._2LEttkwzH7jRE93Ku8MGqY {} /* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n#_2E85FJStrx25rDG2lYWifC {} /* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#_2pyPm3oWgKQ-rjECcnFYrX {} /* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#_2pmolVDQD2g7wt3ejy2doK {} /* matches the element with id=\\\\\\"©\\\\\\" */\\\\n\\\\n:root {\\\\n --title-align: center;\\\\n --sr-only: {\\\\n position: absolute;\\\\n width: 1px;\\\\n height: 1px;\\\\n padding: 0;\\\\n overflow: hidden;\\\\n clip: rect(0,0,0,0);\\\\n white-space: nowrap;\\\\n clip-path: inset(50%);\\\\n border: 0;\\\\n };\\\\n}\\\\n\\\\n._2mQhIWfQwYBHR8C-27Rb-E {\\\\n content: \\\\\\"\\\\\\\\2014\\\\\\\\A0\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2014 \\\\\\\\A0\\\\\\";\\\\n content: \\\\\\"\\\\\\\\A0 \\\\\\\\2014\\\\\\";\\\\n content: \\\\\\"\\\\\\\\A0\\\\\\\\2014\\\\\\";\\\\n margin-top: 1px\\\\\\\\9;\\\\n background-color: #000\\\\\\\\9;\\\\n}\\\\n\\\\n._2H1jUQC4I1yE2c9CEwXfAS._3HDHfIW-5V2j3qdUcRiaMD ._2eB5NM0D15e1HQWl3AHa8q:before{\\\\n content: '💡';\\\\n}\\\\n\\\\n.JNjvwXXuHnb_zjhkwPzBD {\\\\n background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);\\\\n}\\\\n\\\\na[href=''] {\\\\n color: red;\\\\n}\\\\n\\\\na[href='' i] {\\\\n color: red;\\\\n}\\\\n\\\\na[href=\\\\\\"\\\\\\"] {\\\\n color: blue;\\\\n}\\\\n\\\\na[href=\\\\\\"\\\\\\" i] {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"class\\": \\"_1PSZ4tK4URrenXyNSoawrx\\",
+ \\"class-duplicate-url\\": \\"_3YYoEr128Gk7ZgfRycu4tr\\",
+ \\"two\\": \\"_1LWD9ZV4XMmN23IPiMONS3\\",
+ \\"u-m+\\": \\"_3i3CD1fyX8bvzRt1H0IV-f\\",
+ \\"-top\\": \\"_1fWEySWrY44TvDnJ8JNxnE\\",
+ \\"#test\\": \\"Zmuw5k7Gg4hpgd6CVBEkq\\",
+ \\"grid\\": \\"nz2GDQ2B9PRi6GmzRwbUM\\",
+ \\"-middle\\": \\"_12Sbi_HmVVsUl9TM-zo3h-\\",
+ \\"-bottom\\": \\"gpFhy6a0Dyg4XrktE4jA3\\",
+ \\"u-m00002b\\": \\"YDvxHwoU5TyTmW1oTkKgw\\",
+ \\"myStyle\\": \\"_3txeRUnk43pQ_ialOcI-1F\\",
+ \\"♫\\": \\"_3Zu4uw_Urs6mU3AHN6h0NV\\",
+ \\":\`(\\": \\"_4_pn9LmAb2XtAy0kg4FN_\\",
+ \\"1a2b3c\\": \\"_2LEttkwzH7jRE93Ku8MGqY\\",
+ \\"#fake-id\\": \\"_2E85FJStrx25rDG2lYWifC\\",
+ \\"-a-b-c-\\": \\"_2pyPm3oWgKQ-rjECcnFYrX\\",
+ \\"©\\": \\"_2pmolVDQD2g7wt3ejy2doK\\",
+ \\"test\\": \\"_2mQhIWfQwYBHR8C-27Rb-E\\",
+ \\"light\\": \\"_2H1jUQC4I1yE2c9CEwXfAS\\",
+ \\"on\\": \\"_3HDHfIW-5V2j3qdUcRiaMD\\",
+ \\"bulb\\": \\"_2eB5NM0D15e1HQWl3AHa8q\\",
+ \\"base64\\": \\"JNjvwXXuHnb_zjhkwPzBD\\"
+};"
+`;
+
+exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`local\`): warnings 1`] = `Array []`;
+
+exports[`loader should compile with \`css\` entry point: api 1`] = `
+"/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+// css base code, injected by the css-loader
+// eslint-disable-next-line func-names
+module.exports = function(useSourceMap) {
+ const list = [];
+
+ // return the list of modules as css string
+ list.toString = function toString() {
+ return this.map((item) => {
+ const content = cssWithMappingToString(item, useSourceMap);
+
+ if (item[2]) {
+ return \`@media \${item[2]}{\${content}}\`;
+ }
+
+ return content;
+ }).join('');
+ };
+
+ // import a list of modules into the list
+ // eslint-disable-next-line func-names
+ list.i = function(modules, mediaQuery) {
+ if (typeof modules === 'string') {
+ // eslint-disable-next-line no-param-reassign
+ modules = [[null, modules, '']];
+ }
+
+ const alreadyImportedModules = {};
+
+ for (let i = 0; i < this.length; i++) {
+ // eslint-disable-next-line prefer-destructuring
+ const id = this[i][0];
+
+ if (id != null) {
+ alreadyImportedModules[id] = true;
+ }
+ }
+
+ for (let i = 0; i < modules.length; i++) {
+ const item = modules[i];
+
+ // skip already imported module
+ // this implementation is not 100% perfect for weird media query combinations
+ // when a module is imported multiple times with different media queries.
+ // I hope this will never occur (Hey this way we have smaller bundles)
+ if (item[0] == null || !alreadyImportedModules[item[0]]) {
+ if (mediaQuery && !item[2]) {
+ item[2] = mediaQuery;
+ } else if (mediaQuery) {
+ item[2] = \`(\${item[2]}) and (\${mediaQuery})\`;
+ }
+
+ list.push(item);
+ }
+ }
+ };
+
+ return list;
+};
+
+function cssWithMappingToString(item, useSourceMap) {
+ const content = item[1] || '';
+ // eslint-disable-next-line prefer-destructuring
+ const cssMapping = item[3];
+
+ if (!cssMapping) {
+ return content;
+ }
+
+ if (useSourceMap && typeof btoa === 'function') {
+ const sourceMapping = toComment(cssMapping);
+ const sourceURLs = cssMapping.sources.map(
+ (source) => \`/*# sourceURL=\${cssMapping.sourceRoot}\${source} */\`
+ );
+
+ return [content]
+ .concat(sourceURLs)
+ .concat([sourceMapping])
+ .join('\\\\n');
+ }
+
+ return [content].join('\\\\n');
+}
+
+// Adapted from convert-source-map (MIT)
+function toComment(sourceMap) {
+ // eslint-disable-next-line no-undef
+ const base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
+ const data = \`sourceMappingURL=data:application/json;charset=utf-8;base64,\${base64}\`;
+
+ return \`/*# \${data} */\`;
+}
+"
+`;
+
+exports[`loader should compile with \`css\` entry point: errors 1`] = `Array []`;
+
+exports[`loader should compile with \`css\` entry point: escape 1`] = `
+"module.exports = (url, needQuotes) => {
+ // eslint-disable-next-line no-underscore-dangle, no-param-reassign
+ url = url.__esModule ? url.default : url;
+
+ if (typeof url !== 'string') {
+ return url;
+ }
+
+ // If url is already wrapped in quotes, remove them
+ if (/^['\\"].*['\\"]$/.test(url)) {
+ // eslint-disable-next-line no-param-reassign
+ url = url.slice(1, -1);
+ }
+
+ // Should url be wrapped?
+ // See https://drafts.csswg.org/css-values-3/#urls
+ if (/[\\"'() \\\\t\\\\n]/.test(url) || needQuotes) {
+ return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`;
+ }
+
+ return url;
+};
+"
+`;
+
+exports[`loader should compile with \`css\` entry point: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".foo {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@charset \\"UTF-8\\";
+
+/* Comment */
+
+.class {
+ color: red;
+ background: url(/webpack/public/path/img.png);
+}
+
+.class-duplicate-url {
+ background: url(/webpack/public/path/img.png);
+}
+
+:root {
+ --foo: 1px;
+ --bar: 2px;
+}
+
+.class { a: b c d; }
+
+.two {}
+
+.u-m\\\\+ { a: b c d; }
+
+.class { content: \\"\\\\F10C\\" }
+
+@media only screen and (max-width: 600px) {
+ body {
+ background-color: lightblue;
+ }
+}
+
+.class {
+ content: \\"\\\\2193\\";
+ content: \\"\\\\2193\\\\2193\\";
+ content: \\"\\\\2193 \\\\2193\\";
+ content: \\"\\\\2193\\\\2193\\\\2193\\";
+ content: \\"\\\\2193 \\\\2193 \\\\2193\\";
+}
+
+.-top {}
+.\\\\-top {}
+
+#\\\\#test {}
+
+.grid {
+ display: flex;
+ flex-wrap: wrap;
+}
+.grid.\\\\-top {
+ align-items: flex-start;
+}
+.grid.-top {
+ align-items: flex-start;
+}
+.grid.\\\\-middle {
+ align-items: center;
+}
+.grid.\\\\-bottom {
+ align-items: flex-end;
+}
+
+.u-m\\\\00002b {}
+
+.u-m00002b {}
+
+#u-m\\\\+ {}
+
+body {
+ font-family: '微软雅黑'; /* some chinese font name */
+}
+
+.myStyle {
+ content: '\\\\e901';
+}
+
+.myStyle {
+ content: '\\\\E901';
+}
+
+.♫ {}
+
+.\\\\3A \\\\\`\\\\( {} /* matches elements with class=\\":\`(\\" */
+.\\\\31 a2b3c {} /* matches elements with class=\\"1a2b3c\\" */
+#\\\\#fake-id {} /* matches the element with id=\\"#fake-id\\" */
+#-a-b-c- {} /* matches the element with id=\\"-a-b-c-\\" */
+#© {} /* matches the element with id=\\"©\\" */
+
+:root {
+ --title-align: center;
+ --sr-only: {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0,0,0,0);
+ white-space: nowrap;
+ clip-path: inset(50%);
+ border: 0;
+ };
+}
+
+.test {
+ content: \\"\\\\2014\\\\A0\\";
+ content: \\"\\\\2014 \\\\A0\\";
+ content: \\"\\\\A0 \\\\2014\\";
+ content: \\"\\\\A0\\\\2014\\";
+ margin-top: 1px\\\\9;
+ background-color: #000\\\\9;
+}
+
+.light.on .bulb:before{
+ content: '💡';
+}
+
+.base64 {
+ background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);
+}
+
+a[href=''] {
+ color: red;
+}
+
+a[href='' i] {
+ color: red;
+}
+
+a[href=\\"\\"] {
+ color: blue;
+}
+
+a[href=\\"\\" i] {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`loader should compile with \`css\` entry point: module 1`] = `
+"exports = module.exports = require(\\"../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./url/img.png\\"));
+// Module
+exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n:root {\\\\n --foo: 1px;\\\\n --bar: 2px;\\\\n}\\\\n\\\\n.class { a: b c d; }\\\\n\\\\n.two {}\\\\n\\\\n.u-m\\\\\\\\+ { a: b c d; }\\\\n\\\\n.class { content: \\\\\\"\\\\\\\\F10C\\\\\\" }\\\\n\\\\n@media only screen and (max-width: 600px) {\\\\n body {\\\\n background-color: lightblue;\\\\n }\\\\n}\\\\n\\\\n.class {\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193 \\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\\\2193\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193 \\\\\\\\2193 \\\\\\\\2193\\\\\\";\\\\n}\\\\n\\\\n.-top {}\\\\n.\\\\\\\\-top {}\\\\n\\\\n#\\\\\\\\#test {}\\\\n\\\\n.grid {\\\\n display: flex;\\\\n flex-wrap: wrap;\\\\n}\\\\n.grid.\\\\\\\\-top {\\\\n align-items: flex-start;\\\\n}\\\\n.grid.-top {\\\\n align-items: flex-start;\\\\n}\\\\n.grid.\\\\\\\\-middle {\\\\n align-items: center;\\\\n}\\\\n.grid.\\\\\\\\-bottom {\\\\n align-items: flex-end;\\\\n}\\\\n\\\\n.u-m\\\\\\\\00002b {}\\\\n\\\\n.u-m00002b {}\\\\n\\\\n#u-m\\\\\\\\+ {}\\\\n\\\\nbody {\\\\n font-family: '微软雅黑'; /* some chinese font name */\\\\n}\\\\n\\\\n.myStyle {\\\\n content: '\\\\\\\\e901';\\\\n}\\\\n\\\\n.myStyle {\\\\n content: '\\\\\\\\E901';\\\\n}\\\\n\\\\n.♫ {}\\\\n\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {} /* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.\\\\\\\\31 a2b3c {} /* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n#\\\\\\\\#fake-id {} /* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#-a-b-c- {} /* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#© {} /* matches the element with id=\\\\\\"©\\\\\\" */\\\\n\\\\n:root {\\\\n --title-align: center;\\\\n --sr-only: {\\\\n position: absolute;\\\\n width: 1px;\\\\n height: 1px;\\\\n padding: 0;\\\\n overflow: hidden;\\\\n clip: rect(0,0,0,0);\\\\n white-space: nowrap;\\\\n clip-path: inset(50%);\\\\n border: 0;\\\\n };\\\\n}\\\\n\\\\n.test {\\\\n content: \\\\\\"\\\\\\\\2014\\\\\\\\A0\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2014 \\\\\\\\A0\\\\\\";\\\\n content: \\\\\\"\\\\\\\\A0 \\\\\\\\2014\\\\\\";\\\\n content: \\\\\\"\\\\\\\\A0\\\\\\\\2014\\\\\\";\\\\n margin-top: 1px\\\\\\\\9;\\\\n background-color: #000\\\\\\\\9;\\\\n}\\\\n\\\\n.light.on .bulb:before{\\\\n content: '💡';\\\\n}\\\\n\\\\n.base64 {\\\\n background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);\\\\n}\\\\n\\\\na[href=''] {\\\\n color: red;\\\\n}\\\\n\\\\na[href='' i] {\\\\n color: red;\\\\n}\\\\n\\\\na[href=\\\\\\"\\\\\\"] {\\\\n color: blue;\\\\n}\\\\n\\\\na[href=\\\\\\"\\\\\\" i] {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`loader should compile with \`css\` entry point: warnings 1`] = `Array []`;
+
+exports[`loader should compile with \`js\` entry point: api 1`] = `
+"/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+// css base code, injected by the css-loader
+// eslint-disable-next-line func-names
+module.exports = function(useSourceMap) {
+ const list = [];
+
+ // return the list of modules as css string
+ list.toString = function toString() {
+ return this.map((item) => {
+ const content = cssWithMappingToString(item, useSourceMap);
+
+ if (item[2]) {
+ return \`@media \${item[2]}{\${content}}\`;
+ }
+
+ return content;
+ }).join('');
+ };
+
+ // import a list of modules into the list
+ // eslint-disable-next-line func-names
+ list.i = function(modules, mediaQuery) {
+ if (typeof modules === 'string') {
+ // eslint-disable-next-line no-param-reassign
+ modules = [[null, modules, '']];
+ }
+
+ const alreadyImportedModules = {};
+
+ for (let i = 0; i < this.length; i++) {
+ // eslint-disable-next-line prefer-destructuring
+ const id = this[i][0];
+
+ if (id != null) {
+ alreadyImportedModules[id] = true;
+ }
+ }
+
+ for (let i = 0; i < modules.length; i++) {
+ const item = modules[i];
+
+ // skip already imported module
+ // this implementation is not 100% perfect for weird media query combinations
+ // when a module is imported multiple times with different media queries.
+ // I hope this will never occur (Hey this way we have smaller bundles)
+ if (item[0] == null || !alreadyImportedModules[item[0]]) {
+ if (mediaQuery && !item[2]) {
+ item[2] = mediaQuery;
+ } else if (mediaQuery) {
+ item[2] = \`(\${item[2]}) and (\${mediaQuery})\`;
+ }
+
+ list.push(item);
+ }
+ }
+ };
+
+ return list;
+};
+
+function cssWithMappingToString(item, useSourceMap) {
+ const content = item[1] || '';
+ // eslint-disable-next-line prefer-destructuring
+ const cssMapping = item[3];
+
+ if (!cssMapping) {
+ return content;
+ }
+
+ if (useSourceMap && typeof btoa === 'function') {
+ const sourceMapping = toComment(cssMapping);
+ const sourceURLs = cssMapping.sources.map(
+ (source) => \`/*# sourceURL=\${cssMapping.sourceRoot}\${source} */\`
+ );
+
+ return [content]
+ .concat(sourceURLs)
+ .concat([sourceMapping])
+ .join('\\\\n');
+ }
+
+ return [content].join('\\\\n');
+}
+
+// Adapted from convert-source-map (MIT)
+function toComment(sourceMap) {
+ // eslint-disable-next-line no-undef
+ const base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
+ const data = \`sourceMappingURL=data:application/json;charset=utf-8;base64,\${base64}\`;
+
+ return \`/*# \${data} */\`;
+}
+"
+`;
+
+exports[`loader should compile with \`js\` entry point: errors 1`] = `Array []`;
+
+exports[`loader should compile with \`js\` entry point: escape 1`] = `
+"module.exports = (url, needQuotes) => {
+ // eslint-disable-next-line no-underscore-dangle, no-param-reassign
+ url = url.__esModule ? url.default : url;
+
+ if (typeof url !== 'string') {
+ return url;
+ }
+
+ // If url is already wrapped in quotes, remove them
+ if (/^['\\"].*['\\"]$/.test(url)) {
+ // eslint-disable-next-line no-param-reassign
+ url = url.slice(1, -1);
+ }
+
+ // Should url be wrapped?
+ // See https://drafts.csswg.org/css-values-3/#urls
+ if (/[\\"'() \\\\t\\\\n]/.test(url) || needQuotes) {
+ return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`;
+ }
+
+ return url;
+};
+"
+`;
+
+exports[`loader should compile with \`js\` entry point: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".foo {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@charset \\"UTF-8\\";
+
+/* Comment */
+
+.class {
+ color: red;
+ background: url(/webpack/public/path/img.png);
+}
+
+.class-duplicate-url {
+ background: url(/webpack/public/path/img.png);
+}
+
+:root {
+ --foo: 1px;
+ --bar: 2px;
+}
+
+.class { a: b c d; }
+
+.two {}
+
+.u-m\\\\+ { a: b c d; }
+
+.class { content: \\"\\\\F10C\\" }
+
+@media only screen and (max-width: 600px) {
+ body {
+ background-color: lightblue;
+ }
+}
+
+.class {
+ content: \\"\\\\2193\\";
+ content: \\"\\\\2193\\\\2193\\";
+ content: \\"\\\\2193 \\\\2193\\";
+ content: \\"\\\\2193\\\\2193\\\\2193\\";
+ content: \\"\\\\2193 \\\\2193 \\\\2193\\";
+}
+
+.-top {}
+.\\\\-top {}
+
+#\\\\#test {}
+
+.grid {
+ display: flex;
+ flex-wrap: wrap;
+}
+.grid.\\\\-top {
+ align-items: flex-start;
+}
+.grid.-top {
+ align-items: flex-start;
+}
+.grid.\\\\-middle {
+ align-items: center;
+}
+.grid.\\\\-bottom {
+ align-items: flex-end;
+}
+
+.u-m\\\\00002b {}
+
+.u-m00002b {}
+
+#u-m\\\\+ {}
+
+body {
+ font-family: '微软雅黑'; /* some chinese font name */
+}
+
+.myStyle {
+ content: '\\\\e901';
+}
+
+.myStyle {
+ content: '\\\\E901';
+}
+
+.♫ {}
+
+.\\\\3A \\\\\`\\\\( {} /* matches elements with class=\\":\`(\\" */
+.\\\\31 a2b3c {} /* matches elements with class=\\"1a2b3c\\" */
+#\\\\#fake-id {} /* matches the element with id=\\"#fake-id\\" */
+#-a-b-c- {} /* matches the element with id=\\"-a-b-c-\\" */
+#© {} /* matches the element with id=\\"©\\" */
+
+:root {
+ --title-align: center;
+ --sr-only: {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0,0,0,0);
+ white-space: nowrap;
+ clip-path: inset(50%);
+ border: 0;
+ };
+}
+
+.test {
+ content: \\"\\\\2014\\\\A0\\";
+ content: \\"\\\\2014 \\\\A0\\";
+ content: \\"\\\\A0 \\\\2014\\";
+ content: \\"\\\\A0\\\\2014\\";
+ margin-top: 1px\\\\9;
+ background-color: #000\\\\9;
+}
+
+.light.on .bulb:before{
+ content: '💡';
+}
+
+.base64 {
+ background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);
+}
+
+a[href=''] {
+ color: red;
+}
+
+a[href='' i] {
+ color: red;
+}
+
+a[href=\\"\\"] {
+ color: blue;
+}
+
+a[href=\\"\\" i] {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`loader should compile with \`js\` entry point: module 1`] = `
+"exports = module.exports = require(\\"../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./url/img.png\\"));
+// Module
+exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n:root {\\\\n --foo: 1px;\\\\n --bar: 2px;\\\\n}\\\\n\\\\n.class { a: b c d; }\\\\n\\\\n.two {}\\\\n\\\\n.u-m\\\\\\\\+ { a: b c d; }\\\\n\\\\n.class { content: \\\\\\"\\\\\\\\F10C\\\\\\" }\\\\n\\\\n@media only screen and (max-width: 600px) {\\\\n body {\\\\n background-color: lightblue;\\\\n }\\\\n}\\\\n\\\\n.class {\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193 \\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193\\\\\\\\2193\\\\\\\\2193\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2193 \\\\\\\\2193 \\\\\\\\2193\\\\\\";\\\\n}\\\\n\\\\n.-top {}\\\\n.\\\\\\\\-top {}\\\\n\\\\n#\\\\\\\\#test {}\\\\n\\\\n.grid {\\\\n display: flex;\\\\n flex-wrap: wrap;\\\\n}\\\\n.grid.\\\\\\\\-top {\\\\n align-items: flex-start;\\\\n}\\\\n.grid.-top {\\\\n align-items: flex-start;\\\\n}\\\\n.grid.\\\\\\\\-middle {\\\\n align-items: center;\\\\n}\\\\n.grid.\\\\\\\\-bottom {\\\\n align-items: flex-end;\\\\n}\\\\n\\\\n.u-m\\\\\\\\00002b {}\\\\n\\\\n.u-m00002b {}\\\\n\\\\n#u-m\\\\\\\\+ {}\\\\n\\\\nbody {\\\\n font-family: '微软雅黑'; /* some chinese font name */\\\\n}\\\\n\\\\n.myStyle {\\\\n content: '\\\\\\\\e901';\\\\n}\\\\n\\\\n.myStyle {\\\\n content: '\\\\\\\\E901';\\\\n}\\\\n\\\\n.♫ {}\\\\n\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {} /* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.\\\\\\\\31 a2b3c {} /* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n#\\\\\\\\#fake-id {} /* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#-a-b-c- {} /* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#© {} /* matches the element with id=\\\\\\"©\\\\\\" */\\\\n\\\\n:root {\\\\n --title-align: center;\\\\n --sr-only: {\\\\n position: absolute;\\\\n width: 1px;\\\\n height: 1px;\\\\n padding: 0;\\\\n overflow: hidden;\\\\n clip: rect(0,0,0,0);\\\\n white-space: nowrap;\\\\n clip-path: inset(50%);\\\\n border: 0;\\\\n };\\\\n}\\\\n\\\\n.test {\\\\n content: \\\\\\"\\\\\\\\2014\\\\\\\\A0\\\\\\";\\\\n content: \\\\\\"\\\\\\\\2014 \\\\\\\\A0\\\\\\";\\\\n content: \\\\\\"\\\\\\\\A0 \\\\\\\\2014\\\\\\";\\\\n content: \\\\\\"\\\\\\\\A0\\\\\\\\2014\\\\\\";\\\\n margin-top: 1px\\\\\\\\9;\\\\n background-color: #000\\\\\\\\9;\\\\n}\\\\n\\\\n.light.on .bulb:before{\\\\n content: '💡';\\\\n}\\\\n\\\\n.base64 {\\\\n background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);\\\\n}\\\\n\\\\na[href=''] {\\\\n color: red;\\\\n}\\\\n\\\\na[href='' i] {\\\\n color: red;\\\\n}\\\\n\\\\na[href=\\\\\\"\\\\\\"] {\\\\n color: blue;\\\\n}\\\\n\\\\na[href=\\\\\\"\\\\\\" i] {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`loader should compile with \`js\` entry point: warnings 1`] = `Array []`;
+
+exports[`loader should compile with empty css entry point: errors 1`] = `Array []`;
+
+exports[`loader should compile with empty css entry point: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "",
+ "",
+ ],
+]
+`;
+
+exports[`loader should compile with empty css entry point: module 1`] = `
+"exports = module.exports = require(\\"../../src/runtime/api.js\\")(false);
+// Module
+exports.push([module.id, \\"\\", \\"\\"]);
+"
+`;
+
+exports[`loader should compile with empty css entry point: warnings 1`] = `Array []`;
+
+exports[`loader should compile with empty options: errors 1`] = `Array []`;
+
+exports[`loader should compile with empty options: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "",
+ "",
+ ],
+]
+`;
+
+exports[`loader should compile with empty options: module 1`] = `
+"exports = module.exports = require(\\"../../src/runtime/api.js\\")(false);
+// Module
+exports.push([module.id, \\"\\", \\"\\"]);
+"
+`;
+
+exports[`loader should compile with empty options: warnings 1`] = `Array []`;
+
+exports[`loader should throw error on invalid css syntax: errors 1`] = `
+Array [
+ "ModuleBuildError: Module build failed (from \`replaced original path\`):
+CssSyntaxError
+
+(2:3) Unknown word
+
+ 1 | .some {
+> 2 | invalid css;
+ | ^
+ 3 | }
+ 4 |
+",
+]
+`;
+
+exports[`loader should throw error on invalid css syntax: warnings 1`] = `Array []`;
+
+exports[`loader should throws error when no loader for assets: errors 1`] = `
+Array [
+ "ModuleParseError: Module parse failed: Unexpected character '�' (1:0)
+You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
+(Source code omitted for this binary file)",
+]
+`;
+
+exports[`loader should throws error when no loader for assets: warnings 1`] = `Array []`;
+
+exports[`loader using together with "postcss-loader" and reuse \`ast\`: errors 1`] = `Array []`;
+
+exports[`loader using together with "postcss-loader" and reuse \`ast\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":root {
+ --fontSize: 1rem;
+ --mainColor: rgba(18,52,86,0.47059);
+ --secondaryColor: rgba(102, 51, 153, 0.9);
+}
+
+html {
+ overflow-x: hidden;
+ overflow-y: auto;
+ overflow: hidden auto;
+}
+
+@media (max-width: 50rem) {
+ body {
+ color: rgba(18,52,86,0.47059);
+ color: var(--mainColor);
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;
+ font-size: 1rem;
+ font-size: var(--fontSize);
+ line-height: calc(1rem * 1.5);
+ line-height: calc(var(--fontSize) * 1.5);
+ word-wrap: break-word;
+ padding-left: calc(1rem / 2 + 1px);
+ padding-right: calc(1rem / 2 + 1px);
+ padding-left: calc(var(--fontSize) / 2 + 1px);
+ padding-right: calc(var(--fontSize) / 2 + 1px);
+ }
+}
+
+h1,h2,h3,h4,h5,h6 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+main.hero, .hero.main {
+ background-image: url(/webpack/public/path/img1x.png);
+}
+
+@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
+
+main.hero, .hero.main {
+ background-image: url(/webpack/public/path/img2x.png);
+}
+}
+
+main.hero, .hero.main {
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+}
+
+a {
+ color: rgba(0, 0, 255, 0.9)
+}
+
+a:hover {
+ color: #639;
+ }
+",
+ "",
+ ],
+]
+`;
+
+exports[`loader using together with "postcss-loader" and reuse \`ast\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img1x.png\\"));
+var ___CSS_LOADER_URL___1___ = getUrl(require(\\"./img2x.png\\"));
+// Module
+exports.push([module.id, \\":root {\\\\n --fontSize: 1rem;\\\\n --mainColor: rgba(18,52,86,0.47059);\\\\n --secondaryColor: rgba(102, 51, 153, 0.9);\\\\n}\\\\n\\\\nhtml {\\\\n overflow-x: hidden;\\\\n overflow-y: auto;\\\\n overflow: hidden auto;\\\\n}\\\\n\\\\n@media (max-width: 50rem) {\\\\n body {\\\\n color: rgba(18,52,86,0.47059);\\\\n color: var(--mainColor);\\\\n font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;\\\\n font-size: 1rem;\\\\n font-size: var(--fontSize);\\\\n line-height: calc(1rem * 1.5);\\\\n line-height: calc(var(--fontSize) * 1.5);\\\\n word-wrap: break-word;\\\\n padding-left: calc(1rem / 2 + 1px);\\\\n padding-right: calc(1rem / 2 + 1px);\\\\n padding-left: calc(var(--fontSize) / 2 + 1px);\\\\n padding-right: calc(var(--fontSize) / 2 + 1px);\\\\n }\\\\n}\\\\n\\\\nh1,h2,h3,h4,h5,h6 {\\\\n margin-top: 0;\\\\n margin-bottom: 0;\\\\n}\\\\n\\\\nmain.hero, .hero.main {\\\\n background-image: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\\\\n\\\\nmain.hero, .hero.main {\\\\n background-image: url(\\" + ___CSS_LOADER_URL___1___ + \\");\\\\n}\\\\n}\\\\n\\\\nmain.hero, .hero.main {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___0___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___1___ + \\") 2x);\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___0___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___1___ + \\") 2x);\\\\n}\\\\n\\\\na {\\\\n color: rgba(0, 0, 255, 0.9)\\\\n}\\\\n\\\\na:hover {\\\\n color: #639;\\\\n }\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`loader using together with "postcss-loader" and reuse \`ast\`: warnings 1`] = `Array []`;
+
+exports[`loader using together with "sass-loader": errors 1`] = `Array []`;
+
+exports[`loader using together with "sass-loader": module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body {
+ font: 100% Helvetica, sans-serif;
+ color: #333;
+}",
+ "",
+ ],
+]
+`;
+
+exports[`loader using together with "sass-loader": module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Module
+exports.push([module.id, \\"body {\\\\n font: 100% Helvetica, sans-serif;\\\\n color: #333;\\\\n}\\", \\"\\"]);
+"
+`;
+
+exports[`loader using together with "sass-loader": warnings 1`] = `Array []`;
diff --git a/test/__snapshots__/localsConvention-option.test.js.snap b/test/__snapshots__/localsConvention-option.test.js.snap
new file mode 100644
index 00000000..4925e0ac
--- /dev/null
+++ b/test/__snapshots__/localsConvention-option.test.js.snap
@@ -0,0 +1,241 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`localsConvention option asIs: errors 1`] = `Array []`;
+
+exports[`localsConvention option asIs: locals 1`] = `
+Object {
+ "btn--info_is-disabled_1": "aF9yrid0BHOaiL3bSWCyJ",
+ "btn-info_is-disabled": "_2HovG-ymIjf-Q-jdQr_LQ-",
+ "foo": "bar",
+ "my-btn-info_is-disabled": "value",
+ "simple": "_2UqJ0qi8H2Q5R46tr_dUvz",
+}
+`;
+
+exports[`localsConvention option asIs: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2HovG-ymIjf-Q-jdQr_LQ- {
+ color: blue;
+}
+
+.aF9yrid0BHOaiL3bSWCyJ {
+ color: blue;
+}
+
+._2UqJ0qi8H2Q5R46tr_dUvz {
+ color: red;
+}
+
+a {
+ color: yellow;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`localsConvention option asIs: warnings 1`] = `Array []`;
+
+exports[`localsConvention option camelCase: errors 1`] = `Array []`;
+
+exports[`localsConvention option camelCase: locals 1`] = `
+Object {
+ "btn--info_is-disabled_1": "aF9yrid0BHOaiL3bSWCyJ",
+ "btn-info_is-disabled": "_2HovG-ymIjf-Q-jdQr_LQ-",
+ "btnInfoIsDisabled": "_2HovG-ymIjf-Q-jdQr_LQ-",
+ "btnInfoIsDisabled1": "aF9yrid0BHOaiL3bSWCyJ",
+ "foo": "bar",
+ "my-btn-info_is-disabled": "value",
+ "myBtnInfoIsDisabled": "value",
+ "simple": "_2UqJ0qi8H2Q5R46tr_dUvz",
+}
+`;
+
+exports[`localsConvention option camelCase: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2HovG-ymIjf-Q-jdQr_LQ- {
+ color: blue;
+}
+
+.aF9yrid0BHOaiL3bSWCyJ {
+ color: blue;
+}
+
+._2UqJ0qi8H2Q5R46tr_dUvz {
+ color: red;
+}
+
+a {
+ color: yellow;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`localsConvention option camelCase: warnings 1`] = `Array []`;
+
+exports[`localsConvention option camelCaseOnly: errors 1`] = `Array []`;
+
+exports[`localsConvention option camelCaseOnly: locals 1`] = `
+Object {
+ "btnInfoIsDisabled": "_2HovG-ymIjf-Q-jdQr_LQ-",
+ "btnInfoIsDisabled1": "aF9yrid0BHOaiL3bSWCyJ",
+ "foo": "bar",
+ "myBtnInfoIsDisabled": "value",
+ "simple": "_2UqJ0qi8H2Q5R46tr_dUvz",
+}
+`;
+
+exports[`localsConvention option camelCaseOnly: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2HovG-ymIjf-Q-jdQr_LQ- {
+ color: blue;
+}
+
+.aF9yrid0BHOaiL3bSWCyJ {
+ color: blue;
+}
+
+._2UqJ0qi8H2Q5R46tr_dUvz {
+ color: red;
+}
+
+a {
+ color: yellow;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`localsConvention option camelCaseOnly: warnings 1`] = `Array []`;
+
+exports[`localsConvention option dashes: errors 1`] = `Array []`;
+
+exports[`localsConvention option dashes: locals 1`] = `
+Object {
+ "btn--info_is-disabled_1": "aF9yrid0BHOaiL3bSWCyJ",
+ "btn-info_is-disabled": "_2HovG-ymIjf-Q-jdQr_LQ-",
+ "btnInfo_isDisabled": "_2HovG-ymIjf-Q-jdQr_LQ-",
+ "btnInfo_isDisabled_1": "aF9yrid0BHOaiL3bSWCyJ",
+ "foo": "bar",
+ "my-btn-info_is-disabled": "value",
+ "myBtnInfo_isDisabled": "value",
+ "simple": "_2UqJ0qi8H2Q5R46tr_dUvz",
+}
+`;
+
+exports[`localsConvention option dashes: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2HovG-ymIjf-Q-jdQr_LQ- {
+ color: blue;
+}
+
+.aF9yrid0BHOaiL3bSWCyJ {
+ color: blue;
+}
+
+._2UqJ0qi8H2Q5R46tr_dUvz {
+ color: red;
+}
+
+a {
+ color: yellow;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`localsConvention option dashes: warnings 1`] = `Array []`;
+
+exports[`localsConvention option dashesOnly: errors 1`] = `Array []`;
+
+exports[`localsConvention option dashesOnly: locals 1`] = `
+Object {
+ "btnInfo_isDisabled": "_2HovG-ymIjf-Q-jdQr_LQ-",
+ "btnInfo_isDisabled_1": "aF9yrid0BHOaiL3bSWCyJ",
+ "foo": "bar",
+ "myBtnInfo_isDisabled": "value",
+ "simple": "_2UqJ0qi8H2Q5R46tr_dUvz",
+}
+`;
+
+exports[`localsConvention option dashesOnly: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2HovG-ymIjf-Q-jdQr_LQ- {
+ color: blue;
+}
+
+.aF9yrid0BHOaiL3bSWCyJ {
+ color: blue;
+}
+
+._2UqJ0qi8H2Q5R46tr_dUvz {
+ color: red;
+}
+
+a {
+ color: yellow;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`localsConvention option dashesOnly: warnings 1`] = `Array []`;
+
+exports[`localsConvention option not specified: errors 1`] = `Array []`;
+
+exports[`localsConvention option not specified: locals 1`] = `
+Object {
+ "btn--info_is-disabled_1": "aF9yrid0BHOaiL3bSWCyJ",
+ "btn-info_is-disabled": "_2HovG-ymIjf-Q-jdQr_LQ-",
+ "foo": "bar",
+ "my-btn-info_is-disabled": "value",
+ "simple": "_2UqJ0qi8H2Q5R46tr_dUvz",
+}
+`;
+
+exports[`localsConvention option not specified: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2HovG-ymIjf-Q-jdQr_LQ- {
+ color: blue;
+}
+
+.aF9yrid0BHOaiL3bSWCyJ {
+ color: blue;
+}
+
+._2UqJ0qi8H2Q5R46tr_dUvz {
+ color: red;
+}
+
+a {
+ color: yellow;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`localsConvention option not specified: warnings 1`] = `Array []`;
diff --git a/test/__snapshots__/modules-option.test.js.snap b/test/__snapshots__/modules-option.test.js.snap
new file mode 100644
index 00000000..2070086f
--- /dev/null
+++ b/test/__snapshots__/modules-option.test.js.snap
@@ -0,0 +1,7999 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`modules case \`animation\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "a {
+ animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out;
+
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "a {
+ animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out;
+
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "fade-in": "_3XZSV759G141XcbTZgtQkF",
+ "slide-right": "_2jinakhsfBWcUNZSsOxUHz",
+}
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "a {
+ animation: _2jinakhsfBWcUNZSsOxUHz 300ms forwards ease-out, _3XZSV759G141XcbTZgtQkF 300ms forwards ease-out;
+
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "a {
+ animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out;
+
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "fade-in": "_fade-in",
+ "slide-right": "_slide-right",
+}
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "a {
+ animation: _slide-right 300ms forwards ease-out, _fade-in 300ms forwards ease-out;
+
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "fade-in": "_3XZSV759G141XcbTZgtQkF",
+ "slide-right": "_2jinakhsfBWcUNZSsOxUHz",
+}
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "a {
+ animation: _2jinakhsfBWcUNZSsOxUHz 300ms forwards ease-out, _3XZSV759G141XcbTZgtQkF 300ms forwards ease-out;
+
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`animation\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class-1, .class-10 .bar-1 {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class-1, .class-10 .bar-1 {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "bar-1": "_3GpM4NK17tELexNK1Szvws",
+ "class-1": "_1GNZOTxutjEX7cZ3Ec7knU",
+ "class-10": "_15N9BXxWirSgwhYficwysK",
+}
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1GNZOTxutjEX7cZ3Ec7knU, ._15N9BXxWirSgwhYficwysK ._3GpM4NK17tELexNK1Szvws {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class-1, .class-10 .bar-1 {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "bar-1": "_bar-1",
+ "class-1": "_class-1",
+ "class-10": "_class-10",
+}
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._class-1, ._class-10 ._bar-1 {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "bar-1": "_3GpM4NK17tELexNK1Szvws",
+ "class-1": "_1GNZOTxutjEX7cZ3Ec7knU",
+ "class-10": "_15N9BXxWirSgwhYficwysK",
+}
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1GNZOTxutjEX7cZ3Ec7knU, ._15N9BXxWirSgwhYficwysK ._3GpM4NK17tELexNK1Szvws {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`class-names\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.c1/*.c2*/.c3) { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "c1": "_1xn1UbV-5a_s7ig53fR7Lz",
+ "c3": "_36mr1nZ1pdjd1s5j3RV-z7",
+}
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "c1": "_1xn1UbV-5a_s7ig53fR7Lz",
+ "c3": "_36mr1nZ1pdjd1s5j3RV-z7",
+}
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "c1": "_c1",
+ "c3": "_c3",
+}
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._c1/*.c2*/._c3 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "c1": "_c1",
+ "c3": "_c3",
+}
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._c1/*.c2*/._c3 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "c1": "_1xn1UbV-5a_s7ig53fR7Lz",
+ "c3": "_36mr1nZ1pdjd1s5j3RV-z7",
+}
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comment-in-local\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "/*
+ * a ' above
+ */
+
+.bg {
+ background-image: url(/webpack/public/path/img.png);
+}
+
+/*
+ * a ' below
+ */
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "/*
+ * a ' above
+ */
+
+.bg {
+ background-image: url(/webpack/public/path/img.png);
+}
+
+/*
+ * a ' below
+ */
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "bg": "_28-VAWbJ8gQCgX50Jcqtzs",
+}
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "/*
+ * a ' above
+ */
+
+._28-VAWbJ8gQCgX50Jcqtzs {
+ background-image: url(/webpack/public/path/img.png);
+}
+
+/*
+ * a ' below
+ */
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "/*
+ * a ' above
+ */
+
+.bg {
+ background-image: url(/webpack/public/path/img.png);
+}
+
+/*
+ * a ' below
+ */
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "bg": "_bg",
+}
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "/*
+ * a ' above
+ */
+
+._bg {
+ background-image: url(/webpack/public/path/img.png);
+}
+
+/*
+ * a ' below
+ */
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "bg": "_28-VAWbJ8gQCgX50Jcqtzs",
+}
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "/*
+ * a ' above
+ */
+
+._28-VAWbJ8gQCgX50Jcqtzs {
+ background-image: url(/webpack/public/path/img.png);
+}
+
+/*
+ * a ' below
+ */
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`comments\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.c1) { a: 1; }
+:local(.c2) { composes: c1; b: 1; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "c1": "_2lVGKlfYXzywV6_acW1a3J",
+ "c2": "_2FPXZHdIWogtLWkFQcjYj7 _2lVGKlfYXzywV6_acW1a3J",
+}
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2lVGKlfYXzywV6_acW1a3J { a: 1; }
+._2FPXZHdIWogtLWkFQcjYj7 { b: 1; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "c1": "_2lVGKlfYXzywV6_acW1a3J",
+ "c2": "_2FPXZHdIWogtLWkFQcjYj7 _2lVGKlfYXzywV6_acW1a3J",
+}
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2lVGKlfYXzywV6_acW1a3J { a: 1; }
+._2FPXZHdIWogtLWkFQcjYj7 { b: 1; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "c1": "_c1",
+ "c2": "_c2 _c1",
+}
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._c1 { a: 1; }
+._c2 { b: 1; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "c1": "_c1",
+ "c2": "_c2 _c1",
+}
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._c1 { a: 1; }
+._c2 { b: 1; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "c1": "_2lVGKlfYXzywV6_acW1a3J",
+ "c2": "_2FPXZHdIWogtLWkFQcjYj7 _2lVGKlfYXzywV6_acW1a3J",
+}
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2lVGKlfYXzywV6_acW1a3J { a: 1; }
+._2FPXZHdIWogtLWkFQcjYj7 { b: 1; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.c1) { composes: c2 from \\"./file.css\\"; b: 1; }
+:local(.c3) { composes: c1; b: 3; }
+:local(.c5) { composes: c2 c4 from \\"./file.css\\"; b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "c1": "_1DZQbqp1oX8etdFa5oSOnV _1xYJRliqpSHYzUvktbdaCo",
+ "c3": "_1PKuwglb3xQB3gwJBZx6_G _1DZQbqp1oX8etdFa5oSOnV _1xYJRliqpSHYzUvktbdaCo",
+ "c5": "_1MtdK0_soIbU20fcYBbRAe _1xYJRliqpSHYzUvktbdaCo _1jdJRc6HaM3lHykxBSOeII",
+}
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._1xYJRliqpSHYzUvktbdaCo {
+ color: red;
+}
+
+._1jdJRc6HaM3lHykxBSOeII {
+ color: blue;
+}
+
+.test{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1DZQbqp1oX8etdFa5oSOnV { b: 1; }
+._1PKuwglb3xQB3gwJBZx6_G { b: 3; }
+._1MtdK0_soIbU20fcYBbRAe { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "c1": "_1DZQbqp1oX8etdFa5oSOnV _1xYJRliqpSHYzUvktbdaCo",
+ "c3": "_1PKuwglb3xQB3gwJBZx6_G _1DZQbqp1oX8etdFa5oSOnV _1xYJRliqpSHYzUvktbdaCo",
+ "c5": "_1MtdK0_soIbU20fcYBbRAe _1xYJRliqpSHYzUvktbdaCo _1jdJRc6HaM3lHykxBSOeII",
+}
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._1xYJRliqpSHYzUvktbdaCo {
+ color: red;
+}
+
+._1jdJRc6HaM3lHykxBSOeII {
+ color: blue;
+}
+
+._3YdnDqqBfyyJ_9JKWIle3X{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1DZQbqp1oX8etdFa5oSOnV { b: 1; }
+._1PKuwglb3xQB3gwJBZx6_G { b: 3; }
+._1MtdK0_soIbU20fcYBbRAe { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "c1": "_c1 _c2",
+ "c3": "_c3 _c1 _c2",
+ "c5": "_c5 _c2 _c4",
+}
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._c2 {
+ color: red;
+}
+
+._c4 {
+ color: blue;
+}
+
+.test{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._c1 { b: 1; }
+._c3 { b: 3; }
+._c5 { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "c1": "_c1 _c2",
+ "c3": "_c3 _c1 _c2",
+ "c5": "_c5 _c2 _c4",
+}
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._c2 {
+ color: red;
+}
+
+._c4 {
+ color: blue;
+}
+
+._test{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._c1 { b: 1; }
+._c3 { b: 3; }
+._c5 { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "c1": "_1DZQbqp1oX8etdFa5oSOnV _1xYJRliqpSHYzUvktbdaCo",
+ "c3": "_1PKuwglb3xQB3gwJBZx6_G _1DZQbqp1oX8etdFa5oSOnV _1xYJRliqpSHYzUvktbdaCo",
+ "c5": "_1MtdK0_soIbU20fcYBbRAe _1xYJRliqpSHYzUvktbdaCo _1jdJRc6HaM3lHykxBSOeII",
+}
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._1xYJRliqpSHYzUvktbdaCo {
+ color: red;
+}
+
+._1jdJRc6HaM3lHykxBSOeII {
+ color: blue;
+}
+
+._3YdnDqqBfyyJ_9JKWIle3X{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1DZQbqp1oX8etdFa5oSOnV { b: 1; }
+._1PKuwglb3xQB3gwJBZx6_G { b: 3; }
+._1MtdK0_soIbU20fcYBbRAe { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-1\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.c1) { composes: c-2 from \\"./file.css\\"; b: 1; }
+:local(.c3) { composes: c1; b: 3; }
+:local(.c5) { composes: c-2 c4 from \\"./file.css\\"; b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "c1": "_2tj5Xzv7Ei8HGFvkrlGXyv _3CxjkH18CkEkRZ4FO4v-NQ",
+ "c3": "_1TPNBQGz_snQ6aGvXARYo0 _2tj5Xzv7Ei8HGFvkrlGXyv _3CxjkH18CkEkRZ4FO4v-NQ",
+ "c5": "rkDOmH5RkgZGaQ5Fey09Z _3CxjkH18CkEkRZ4FO4v-NQ G8VU3XI3HtOvZPlSEb9S3",
+}
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._3CxjkH18CkEkRZ4FO4v-NQ {
+ color: red;
+}
+
+.G8VU3XI3HtOvZPlSEb9S3 {
+ color: blue;
+}
+
+.test{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; }
+._1TPNBQGz_snQ6aGvXARYo0 { b: 3; }
+.rkDOmH5RkgZGaQ5Fey09Z { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "c1": "_2tj5Xzv7Ei8HGFvkrlGXyv _3CxjkH18CkEkRZ4FO4v-NQ",
+ "c3": "_1TPNBQGz_snQ6aGvXARYo0 _2tj5Xzv7Ei8HGFvkrlGXyv _3CxjkH18CkEkRZ4FO4v-NQ",
+ "c5": "rkDOmH5RkgZGaQ5Fey09Z _3CxjkH18CkEkRZ4FO4v-NQ G8VU3XI3HtOvZPlSEb9S3",
+}
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._3CxjkH18CkEkRZ4FO4v-NQ {
+ color: red;
+}
+
+.G8VU3XI3HtOvZPlSEb9S3 {
+ color: blue;
+}
+
+._10rrqoQ7Mb3ZcY6LixlnpR{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; }
+._1TPNBQGz_snQ6aGvXARYo0 { b: 3; }
+.rkDOmH5RkgZGaQ5Fey09Z { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "c1": "_c1 _c-2",
+ "c3": "_c3 _c1 _c-2",
+ "c5": "_c5 _c-2 _c4",
+}
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._c-2 {
+ color: red;
+}
+
+._c4 {
+ color: blue;
+}
+
+.test{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._c1 { b: 1; }
+._c3 { b: 3; }
+._c5 { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "c1": "_c1 _c-2",
+ "c3": "_c3 _c1 _c-2",
+ "c5": "_c5 _c-2 _c4",
+}
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._c-2 {
+ color: red;
+}
+
+._c4 {
+ color: blue;
+}
+
+._test{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._c1 { b: 1; }
+._c3 { b: 3; }
+._c5 { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "c1": "_2tj5Xzv7Ei8HGFvkrlGXyv _3CxjkH18CkEkRZ4FO4v-NQ",
+ "c3": "_1TPNBQGz_snQ6aGvXARYo0 _2tj5Xzv7Ei8HGFvkrlGXyv _3CxjkH18CkEkRZ4FO4v-NQ",
+ "c5": "rkDOmH5RkgZGaQ5Fey09Z _3CxjkH18CkEkRZ4FO4v-NQ G8VU3XI3HtOvZPlSEb9S3",
+}
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._3CxjkH18CkEkRZ4FO4v-NQ {
+ color: red;
+}
+
+.G8VU3XI3HtOvZPlSEb9S3 {
+ color: blue;
+}
+
+._10rrqoQ7Mb3ZcY6LixlnpR{
+ c: d
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; }
+._1TPNBQGz_snQ6aGvXARYo0 { b: 3; }
+.rkDOmH5RkgZGaQ5Fey09Z { b: 5; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.abc) {
+ composes: def1 from \\"./file1.css\\";
+ composes: def2 from \\"./file2.css\\";
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "abc": "_1bAv4bLL8-hE3a7MyZXrT- _3hEvHUTrMHercKPgTBsK6W _1UYEX_kWsPgokwmdBHI8pU",
+}
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._3hEvHUTrMHercKPgTBsK6W {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ "._1UYEX_kWsPgokwmdBHI8pU {
+ color: blue;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1bAv4bLL8-hE3a7MyZXrT- {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "abc": "_1bAv4bLL8-hE3a7MyZXrT- _3hEvHUTrMHercKPgTBsK6W _1UYEX_kWsPgokwmdBHI8pU",
+}
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._3hEvHUTrMHercKPgTBsK6W {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ "._1UYEX_kWsPgokwmdBHI8pU {
+ color: blue;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1bAv4bLL8-hE3a7MyZXrT- {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "abc": "_abc _def1 _def2",
+}
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._def1 {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ "._def2 {
+ color: blue;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._abc {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "abc": "_abc _def1 _def2",
+}
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._def1 {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ "._def2 {
+ color: blue;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._abc {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "abc": "_1bAv4bLL8-hE3a7MyZXrT- _3hEvHUTrMHercKPgTBsK6W _1UYEX_kWsPgokwmdBHI8pU",
+}
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._3hEvHUTrMHercKPgTBsK6W {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ "._1UYEX_kWsPgokwmdBHI8pU {
+ color: blue;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1bAv4bLL8-hE3a7MyZXrT- {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-multiple\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.abc) {
+ composes: def from \\"./file.css\\";
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "abc": "_3sT-Lzs6aj6TM9J3mM7_Cj zu3DT3PNuTYdVravHX310",
+}
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".zu3DT3PNuTYdVravHX310 {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._3sT-Lzs6aj6TM9J3mM7_Cj {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "abc": "_3sT-Lzs6aj6TM9J3mM7_Cj zu3DT3PNuTYdVravHX310",
+}
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".zu3DT3PNuTYdVravHX310 {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._3sT-Lzs6aj6TM9J3mM7_Cj {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "abc": "_abc _def",
+}
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._def {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._abc {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "abc": "_abc _def",
+}
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._def {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._abc {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "abc": "_3sT-Lzs6aj6TM9J3mM7_Cj zu3DT3PNuTYdVravHX310",
+}
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".zu3DT3PNuTYdVravHX310 {
+ color: red;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._3sT-Lzs6aj6TM9J3mM7_Cj {
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`composes-with-importing\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value blue: red;
+
+.a {
+ border: 1px solid blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "blue": "red",
+}
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ border: 1px solid red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "a": "rUmYXW8EUSiAHIrtvLLrL",
+ "blue": "red",
+}
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".rUmYXW8EUSiAHIrtvLLrL {
+ border: 1px solid red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "blue": "red",
+}
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ border: 1px solid red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "a": "_a",
+ "blue": "red",
+}
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._a {
+ border: 1px solid red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "a": "rUmYXW8EUSiAHIrtvLLrL",
+ "blue": "red",
+}
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".rUmYXW8EUSiAHIrtvLLrL {
+ border: 1px solid red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`declaration-value\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body:before {
+ content: '';
+ background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body:before {
+ content: '';
+ background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`local)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body:before {
+ content: '';
+ background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body:before {
+ content: '';
+ background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body:before {
+ content: '';
+ background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`true)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body:before {
+ content: '';
+ background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`issue-589\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ color: green;
+}
+
+@keyframes bounce {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+@-webkit-keyframes bounce2 {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+.bounce {
+ animation-name: bounce;
+ animation: bounce2 1s ease;
+}
+
+.bounce2 {
+ color: green;
+ animation: bounce 1s ease;
+ animation-name: bounce2;
+}
+
+.bounce3 {
+ animation: bounce 1s ease, bounce2
+}
+
+.bounce4 {
+ animation: bounce 1s ease, bounce2;
+}
+
+.b {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ color: green;
+}
+
+@keyframes bounce {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+@-webkit-keyframes bounce2 {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+.bounce {
+ animation-name: bounce;
+ animation: bounce2 1s ease;
+}
+
+.bounce2 {
+ color: green;
+ animation: bounce 1s ease;
+ animation-name: bounce2;
+}
+
+.bounce3 {
+ animation: bounce 1s ease, bounce2
+}
+
+.bounce4 {
+ animation: bounce 1s ease, bounce2;
+}
+
+.b {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "a": "_1AzRoWem1zBzZ9hLlF5IJC",
+ "b": "_1eH5GHM6EfKYOklEd2mhle",
+ "bounce": "_355y8MvF-ilfLoMa6xQMuq",
+ "bounce2": "_20oF72x8NQuWNrNLEjvczE",
+ "bounce3": "_3OQHSo2d42CWSR-npTXaic",
+ "bounce4": "_3bL1lmhMKE-Qlk83VSMCHN",
+}
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1AzRoWem1zBzZ9hLlF5IJC {
+ color: green;
+}
+
+@keyframes _355y8MvF-ilfLoMa6xQMuq {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+@-webkit-keyframes _20oF72x8NQuWNrNLEjvczE {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+._355y8MvF-ilfLoMa6xQMuq {
+ animation-name: _355y8MvF-ilfLoMa6xQMuq;
+ animation: _20oF72x8NQuWNrNLEjvczE 1s ease;
+}
+
+._20oF72x8NQuWNrNLEjvczE {
+ color: green;
+ animation: _355y8MvF-ilfLoMa6xQMuq 1s ease;
+ animation-name: _20oF72x8NQuWNrNLEjvczE;
+}
+
+._3OQHSo2d42CWSR-npTXaic {
+ animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE
+}
+
+._3bL1lmhMKE-Qlk83VSMCHN {
+ animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE;
+}
+
+._1eH5GHM6EfKYOklEd2mhle {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ color: green;
+}
+
+@keyframes bounce {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+@-webkit-keyframes bounce2 {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+.bounce {
+ animation-name: bounce;
+ animation: bounce2 1s ease;
+}
+
+.bounce2 {
+ color: green;
+ animation: bounce 1s ease;
+ animation-name: bounce2;
+}
+
+.bounce3 {
+ animation: bounce 1s ease, bounce2
+}
+
+.bounce4 {
+ animation: bounce 1s ease, bounce2;
+}
+
+.b {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "a": "_a",
+ "b": "_b",
+ "bounce": "_bounce",
+ "bounce2": "_bounce2",
+ "bounce3": "_bounce3",
+ "bounce4": "_bounce4",
+}
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._a {
+ color: green;
+}
+
+@keyframes _bounce {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+@-webkit-keyframes _bounce2 {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+._bounce {
+ animation-name: _bounce;
+ animation: _bounce2 1s ease;
+}
+
+._bounce2 {
+ color: green;
+ animation: _bounce 1s ease;
+ animation-name: _bounce2;
+}
+
+._bounce3 {
+ animation: _bounce 1s ease, _bounce2
+}
+
+._bounce4 {
+ animation: _bounce 1s ease, _bounce2;
+}
+
+._b {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "a": "_1AzRoWem1zBzZ9hLlF5IJC",
+ "b": "_1eH5GHM6EfKYOklEd2mhle",
+ "bounce": "_355y8MvF-ilfLoMa6xQMuq",
+ "bounce2": "_20oF72x8NQuWNrNLEjvczE",
+ "bounce3": "_3OQHSo2d42CWSR-npTXaic",
+ "bounce4": "_3bL1lmhMKE-Qlk83VSMCHN",
+}
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1AzRoWem1zBzZ9hLlF5IJC {
+ color: green;
+}
+
+@keyframes _355y8MvF-ilfLoMa6xQMuq {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+@-webkit-keyframes _20oF72x8NQuWNrNLEjvczE {
+ 0% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+ 5% {
+ transform: translateY(-100%);
+ opacity: 0;
+ }
+}
+
+._355y8MvF-ilfLoMa6xQMuq {
+ animation-name: _355y8MvF-ilfLoMa6xQMuq;
+ animation: _20oF72x8NQuWNrNLEjvczE 1s ease;
+}
+
+._20oF72x8NQuWNrNLEjvczE {
+ color: green;
+ animation: _355y8MvF-ilfLoMa6xQMuq 1s ease;
+ animation-name: _20oF72x8NQuWNrNLEjvczE;
+}
+
+._3OQHSo2d42CWSR-npTXaic {
+ animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE
+}
+
+._3bL1lmhMKE-Qlk83VSMCHN {
+ animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE;
+}
+
+._1eH5GHM6EfKYOklEd2mhle {
+ color: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ color: green;
+ animation: a;
+}
+
+@keyframes b {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.b {
+ animation: b;
+}
+
+@keyframes :global(c) {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.c {
+ animation: c1;
+ animation: c2, c3, c4;
+}
+
+@keyframes :global(d) {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+:global .d1 {
+ animation: d1;
+ animation: d2, d3, d4;
+}
+
+:global(.d2) {
+ animation: d2;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ color: green;
+ animation: a;
+}
+
+@keyframes b {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.b {
+ animation: b;
+}
+
+@keyframes c {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.c {
+ animation: c1;
+ animation: c2, c3, c4;
+}
+
+@keyframes d {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.d1 {
+ animation: d1;
+ animation: d2, d3, d4;
+}
+
+.d2 {
+ animation: d2;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "a": "_1OjK2G7L6Ypn9Qqa8lly-H",
+ "b": "_2cTRWn5QG4xtPeFL2wrKvv",
+ "c": "_3MHGI9_Tl4A_kJUxXx1q2j",
+ "c1": "_1PQ8UpcdVbFbAcYs6wdRXj",
+ "c2": "_3JhTjOsNov-pQXnd3o0JJ",
+ "c3": "_9skQ6KRXi6qCorV5zNSyV",
+ "c4": "_1Gh6Pqr28qXCExbnssOGX9",
+ "d2": "_35GAwk8Rb2LyIN0pSAXjyy",
+}
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1OjK2G7L6Ypn9Qqa8lly-H {
+ color: green;
+ animation: _1OjK2G7L6Ypn9Qqa8lly-H;
+}
+
+@keyframes _2cTRWn5QG4xtPeFL2wrKvv {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+._2cTRWn5QG4xtPeFL2wrKvv {
+ animation: _2cTRWn5QG4xtPeFL2wrKvv;
+}
+
+@keyframes c {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+._3MHGI9_Tl4A_kJUxXx1q2j {
+ animation: _1PQ8UpcdVbFbAcYs6wdRXj;
+ animation: _3JhTjOsNov-pQXnd3o0JJ, _9skQ6KRXi6qCorV5zNSyV, _1Gh6Pqr28qXCExbnssOGX9;
+}
+
+@keyframes d {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.d1 {
+ animation: d1;
+ animation: d2, d3, d4;
+}
+
+.d2 {
+ animation: _35GAwk8Rb2LyIN0pSAXjyy;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ color: green;
+ animation: a;
+}
+
+@keyframes b {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.b {
+ animation: b;
+}
+
+@keyframes c {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.c {
+ animation: c1;
+ animation: c2, c3, c4;
+}
+
+@keyframes d {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.d1 {
+ animation: d1;
+ animation: d2, d3, d4;
+}
+
+.d2 {
+ animation: d2;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "a": "_a",
+ "b": "_b",
+ "c": "_c",
+ "c1": "_c1",
+ "c2": "_c2",
+ "c3": "_c3",
+ "c4": "_c4",
+ "d2": "_d2",
+}
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._a {
+ color: green;
+ animation: _a;
+}
+
+@keyframes _b {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+._b {
+ animation: _b;
+}
+
+@keyframes c {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+._c {
+ animation: _c1;
+ animation: _c2, _c3, _c4;
+}
+
+@keyframes d {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.d1 {
+ animation: d1;
+ animation: d2, d3, d4;
+}
+
+.d2 {
+ animation: _d2;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "a": "_1OjK2G7L6Ypn9Qqa8lly-H",
+ "b": "_2cTRWn5QG4xtPeFL2wrKvv",
+ "c": "_3MHGI9_Tl4A_kJUxXx1q2j",
+ "c1": "_1PQ8UpcdVbFbAcYs6wdRXj",
+ "c2": "_3JhTjOsNov-pQXnd3o0JJ",
+ "c3": "_9skQ6KRXi6qCorV5zNSyV",
+ "c4": "_1Gh6Pqr28qXCExbnssOGX9",
+ "d2": "_35GAwk8Rb2LyIN0pSAXjyy",
+}
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1OjK2G7L6Ypn9Qqa8lly-H {
+ color: green;
+ animation: _1OjK2G7L6Ypn9Qqa8lly-H;
+}
+
+@keyframes _2cTRWn5QG4xtPeFL2wrKvv {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+._2cTRWn5QG4xtPeFL2wrKvv {
+ animation: _2cTRWn5QG4xtPeFL2wrKvv;
+}
+
+@keyframes c {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+._3MHGI9_Tl4A_kJUxXx1q2j {
+ animation: _1PQ8UpcdVbFbAcYs6wdRXj;
+ animation: _3JhTjOsNov-pQXnd3o0JJ, _9skQ6KRXi6qCorV5zNSyV, _1Gh6Pqr28qXCExbnssOGX9;
+}
+
+@keyframes d {
+ 0% { left: 10px; }
+ 100% { left: 20px; }
+}
+
+.d1 {
+ animation: d1;
+ animation: d2, d3, d4;
+}
+
+.d2 {
+ animation: _35GAwk8Rb2LyIN0pSAXjyy;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`leak-scope\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`local\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".abc :local(.def) {
+ color: red;
+}
+
+:local .ghi .jkl {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "def": "_1UnGDcMVVYIU_547CDqQJU",
+ "ghi": "_1k8c5svlAtK4vFkSsZdl4o",
+ "jkl": "pRQR9FSSkxNL6roex-uGp",
+}
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".abc ._1UnGDcMVVYIU_547CDqQJU {
+ color: red;
+}
+
+._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "abc": "_2EPIUiYqPKxP0HS9Vgqa8e",
+ "def": "_1UnGDcMVVYIU_547CDqQJU",
+ "ghi": "_1k8c5svlAtK4vFkSsZdl4o",
+ "jkl": "pRQR9FSSkxNL6roex-uGp",
+}
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2EPIUiYqPKxP0HS9Vgqa8e ._1UnGDcMVVYIU_547CDqQJU {
+ color: red;
+}
+
+._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "def": "_def",
+ "ghi": "_ghi",
+ "jkl": "_jkl",
+}
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".abc ._def {
+ color: red;
+}
+
+._ghi ._jkl {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "abc": "_abc",
+ "def": "_def",
+ "ghi": "_ghi",
+ "jkl": "_jkl",
+}
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._abc ._def {
+ color: red;
+}
+
+._ghi ._jkl {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "abc": "_2EPIUiYqPKxP0HS9Vgqa8e",
+ "def": "_1UnGDcMVVYIU_547CDqQJU",
+ "ghi": "_1k8c5svlAtK4vFkSsZdl4o",
+ "jkl": "pRQR9FSSkxNL6roex-uGp",
+}
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2EPIUiYqPKxP0HS9Vgqa8e ._1UnGDcMVVYIU_547CDqQJU {
+ color: red;
+}
+
+._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.className) { background: red; }
+:local(#someId) { background: green; }
+:local(.className .subClass) { color: green; }
+:local(#someId .subClass) { color: blue; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "className": "PTH0TZDPxpREaV5cxtahd",
+ "someId": "_1XQl0Np_jYcDGudXKxmL8A",
+ "subClass": "_2MrzTmc8jtF-E5FfuMPQie",
+}
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".PTH0TZDPxpREaV5cxtahd { background: red; }
+#_1XQl0Np_jYcDGudXKxmL8A { background: green; }
+.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; }
+#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "className": "PTH0TZDPxpREaV5cxtahd",
+ "someId": "_1XQl0Np_jYcDGudXKxmL8A",
+ "subClass": "_2MrzTmc8jtF-E5FfuMPQie",
+}
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".PTH0TZDPxpREaV5cxtahd { background: red; }
+#_1XQl0Np_jYcDGudXKxmL8A { background: green; }
+.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; }
+#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "className": "_className",
+ "someId": "_someId",
+ "subClass": "_subClass",
+}
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._className { background: red; }
+#_someId { background: green; }
+._className ._subClass { color: green; }
+#_someId ._subClass { color: blue; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "className": "_className",
+ "someId": "_someId",
+ "subClass": "_subClass",
+}
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._className { background: red; }
+#_someId { background: green; }
+._className ._subClass { color: green; }
+#_someId ._subClass { color: blue; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "className": "PTH0TZDPxpREaV5cxtahd",
+ "someId": "_1XQl0Np_jYcDGudXKxmL8A",
+ "subClass": "_2MrzTmc8jtF-E5FfuMPQie",
+}
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".PTH0TZDPxpREaV5cxtahd { background: red; }
+#_1XQl0Np_jYcDGudXKxmL8A { background: green; }
+.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; }
+#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.abc) {
+ color: red;
+}
+:local(.def) {
+ composes: abc;
+ background: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "abc": "_1wzWGMZGmVz3uhGAmwbXwR",
+ "def": "_3zcEXyCxYPLdb_6bVqY6Df _1wzWGMZGmVz3uhGAmwbXwR",
+}
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1wzWGMZGmVz3uhGAmwbXwR {
+ color: red;
+}
+._3zcEXyCxYPLdb_6bVqY6Df {
+ background: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "abc": "_1wzWGMZGmVz3uhGAmwbXwR",
+ "def": "_3zcEXyCxYPLdb_6bVqY6Df _1wzWGMZGmVz3uhGAmwbXwR",
+}
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1wzWGMZGmVz3uhGAmwbXwR {
+ color: red;
+}
+._3zcEXyCxYPLdb_6bVqY6Df {
+ background: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "abc": "_abc",
+ "def": "_def _abc",
+}
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._abc {
+ color: red;
+}
+._def {
+ background: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "abc": "_abc",
+ "def": "_def _abc",
+}
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._abc {
+ color: red;
+}
+._def {
+ background: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "abc": "_1wzWGMZGmVz3uhGAmwbXwR",
+ "def": "_3zcEXyCxYPLdb_6bVqY6Df _1wzWGMZGmVz3uhGAmwbXwR",
+}
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1wzWGMZGmVz3uhGAmwbXwR {
+ color: red;
+}
+._3zcEXyCxYPLdb_6bVqY6Df {
+ background: green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-and-composes\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":local(.c1[data-attr=\\".c2)]'\\"]:not(.c3):not(.c4)) {
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "c1": "_1sz8PE1ejGPcGRSnIAWKZt",
+ "c3": "_2DFDxRic974g-wJ7S9rbP1",
+ "c4": "xo8O_am1gQUkHa-_J-WSe",
+}
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) {
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "c1": "_1sz8PE1ejGPcGRSnIAWKZt",
+ "c3": "_2DFDxRic974g-wJ7S9rbP1",
+ "c4": "xo8O_am1gQUkHa-_J-WSe",
+}
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) {
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "c1": "_c1",
+ "c3": "_c3",
+ "c4": "_c4",
+}
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._c1[data-attr=\\".c2)]'\\"]:not(._c3):not(._c4) {
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "c1": "_c1",
+ "c3": "_c3",
+ "c4": "_c4",
+}
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._c1[data-attr=\\".c2)]'\\"]:not(._c3):not(._c4) {
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "c1": "_1sz8PE1ejGPcGRSnIAWKZt",
+ "c3": "_2DFDxRic974g-wJ7S9rbP1",
+ "c4": "xo8O_am1gQUkHa-_J-WSe",
+}
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) {
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`local-with-string\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`media\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value small: (max-width: 599px);
+
+@media small {
+ .header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ .header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "header": "_1wyVAJXtjGZLoQNO_yG8b3",
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ ._1wyVAJXtjGZLoQNO_yG8b3 {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ .header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "header": "_header",
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ ._header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "header": "_1wyVAJXtjGZLoQNO_yG8b3",
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ ._1wyVAJXtjGZLoQNO_yG8b3 {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value small from './file.css';
+@media small {
+ .header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ .header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "header": "UbDEjEuweJXO7yHMpC8qp",
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ .UbDEjEuweJXO7yHMpC8qp {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ .header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "header": "_header",
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ ._header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "header": "UbDEjEuweJXO7yHMpC8qp",
+ "small": "(max-width: 599px)",
+}
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "@media (max-width: 599px) {
+ .UbDEjEuweJXO7yHMpC8qp {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`media-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".c1 :local .c2 .c3 :global .c4 :local .c5, .c6 :local .c7 { background: red; }
+.c8 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "c2": "LgC5kpXZK3IOCPWWctF7f",
+ "c3": "_2ZTY7KJ2nkQND4VqlaSz9a",
+ "c5": "tEu6_PTqhxImp1tyYQTWz",
+ "c7": "FBEuAfqI8VKhU-w-9RNH",
+}
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".c1 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .c6 .FBEuAfqI8VKhU-w-9RNH { background: red; }
+.c8 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "c1": "_sSeqF3tTS8i-oJLOiW66",
+ "c2": "LgC5kpXZK3IOCPWWctF7f",
+ "c3": "_2ZTY7KJ2nkQND4VqlaSz9a",
+ "c5": "tEu6_PTqhxImp1tyYQTWz",
+ "c6": "sUDXsigYAAb8sNlOMs_Oc",
+ "c7": "FBEuAfqI8VKhU-w-9RNH",
+ "c8": "_1JUWq0LIxk9cx-H1cbqyAD",
+}
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._sSeqF3tTS8i-oJLOiW66 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .sUDXsigYAAb8sNlOMs_Oc .FBEuAfqI8VKhU-w-9RNH { background: red; }
+._1JUWq0LIxk9cx-H1cbqyAD { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "c2": "_c2",
+ "c3": "_c3",
+ "c5": "_c5",
+ "c7": "_c7",
+}
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".c1 ._c2 ._c3 .c4 ._c5, .c6 ._c7 { background: red; }
+.c8 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "c1": "_c1",
+ "c2": "_c2",
+ "c3": "_c3",
+ "c5": "_c5",
+ "c6": "_c6",
+ "c7": "_c7",
+ "c8": "_c8",
+}
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._c1 ._c2 ._c3 .c4 ._c5, ._c6 ._c7 { background: red; }
+._c8 { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "c1": "_sSeqF3tTS8i-oJLOiW66",
+ "c2": "LgC5kpXZK3IOCPWWctF7f",
+ "c3": "_2ZTY7KJ2nkQND4VqlaSz9a",
+ "c5": "tEu6_PTqhxImp1tyYQTWz",
+ "c6": "sUDXsigYAAb8sNlOMs_Oc",
+ "c7": "FBEuAfqI8VKhU-w-9RNH",
+ "c8": "_1JUWq0LIxk9cx-H1cbqyAD",
+}
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._sSeqF3tTS8i-oJLOiW66 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .sUDXsigYAAb8sNlOMs_Oc .FBEuAfqI8VKhU-w-9RNH { background: red; }
+._1JUWq0LIxk9cx-H1cbqyAD { background: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`mode-switching\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a .b, .c .d, #id {
+ color: green;
+ font-size: 1.5pt;
+}
+a[href=\\"#b.c\\"].x.y {
+ color: green;
+ font-size: 1.5pt;
+}
+@keyframes z {
+ 2.5% {color: green;}
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a .b, .c .d, #id {
+ color: green;
+ font-size: 1.5pt;
+}
+a[href=\\"#b.c\\"].x.y {
+ color: green;
+ font-size: 1.5pt;
+}
+@keyframes z {
+ 2.5% {color: green;}
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "a": "_3Usq4DWpHHUfARGj76o2W1",
+ "b": "_2sE42PHfIbHjbGigpdA5M2",
+ "c": "_3JN7IxYrHx5fpD-QuNH8Vg",
+ "d": "_169FAY78xdP6MpwfqxWVlS",
+ "id": "_2w6DrNK6drHoI8na0s2YJu",
+ "x": "_3jqDKJEcQhMnSj5LXFzCMT",
+ "y": "_2CdavzdbxA-_uaXjgT2eG",
+ "z": "eawDxhAAUQ-HvrUhhwSML",
+}
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._3Usq4DWpHHUfARGj76o2W1 ._2sE42PHfIbHjbGigpdA5M2, ._3JN7IxYrHx5fpD-QuNH8Vg ._169FAY78xdP6MpwfqxWVlS, #_2w6DrNK6drHoI8na0s2YJu {
+ color: green;
+ font-size: 1.5pt;
+}
+a[href=\\"#b.c\\"]._3jqDKJEcQhMnSj5LXFzCMT._2CdavzdbxA-_uaXjgT2eG {
+ color: green;
+ font-size: 1.5pt;
+}
+@keyframes eawDxhAAUQ-HvrUhhwSML {
+ 2.5% {color: green;}
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a .b, .c .d, #id {
+ color: green;
+ font-size: 1.5pt;
+}
+a[href=\\"#b.c\\"].x.y {
+ color: green;
+ font-size: 1.5pt;
+}
+@keyframes z {
+ 2.5% {color: green;}
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "a": "_a",
+ "b": "_b",
+ "c": "_c",
+ "d": "_d",
+ "id": "_id",
+ "x": "_x",
+ "y": "_y",
+ "z": "_z",
+}
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._a ._b, ._c ._d, #_id {
+ color: green;
+ font-size: 1.5pt;
+}
+a[href=\\"#b.c\\"]._x._y {
+ color: green;
+ font-size: 1.5pt;
+}
+@keyframes _z {
+ 2.5% {color: green;}
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "a": "_3Usq4DWpHHUfARGj76o2W1",
+ "b": "_2sE42PHfIbHjbGigpdA5M2",
+ "c": "_3JN7IxYrHx5fpD-QuNH8Vg",
+ "d": "_169FAY78xdP6MpwfqxWVlS",
+ "id": "_2w6DrNK6drHoI8na0s2YJu",
+ "x": "_3jqDKJEcQhMnSj5LXFzCMT",
+ "y": "_2CdavzdbxA-_uaXjgT2eG",
+ "z": "eawDxhAAUQ-HvrUhhwSML",
+}
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._3Usq4DWpHHUfARGj76o2W1 ._2sE42PHfIbHjbGigpdA5M2, ._3JN7IxYrHx5fpD-QuNH8Vg ._169FAY78xdP6MpwfqxWVlS, #_2w6DrNK6drHoI8na0s2YJu {
+ color: green;
+ font-size: 1.5pt;
+}
+a[href=\\"#b.c\\"]._3jqDKJEcQhMnSj5LXFzCMT._2CdavzdbxA-_uaXjgT2eG {
+ color: green;
+ font-size: 1.5pt;
+}
+@keyframes eawDxhAAUQ-HvrUhhwSML {
+ 2.5% {color: green;}
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`simple\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png);
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png#?iefix);
+ background: url(\\"#hash\\");
+ background: url(\\"#\\");
+ background: url(data:image/png;base64,AAA);
+ background: url(http://example.com/image.jpg);
+ background: url(//example.com/image.png);
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(/webpack/public/path/img.png) url(\\"/webpack/public/path/img img.png\\") xyz;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png);
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png#?iefix);
+ background: url(\\"#hash\\");
+ background: url(\\"#\\");
+ background: url(data:image/png;base64,AAA);
+ background: url(http://example.com/image.jpg);
+ background: url(//example.com/image.png);
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(/webpack/public/path/img.png) url(\\"/webpack/public/path/img img.png\\") xyz;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "a": "_1goi1QVFtUMjX82JoFfLLJ",
+}
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1goi1QVFtUMjX82JoFfLLJ {
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png);
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png#?iefix);
+ background: url(\\"#hash\\");
+ background: url(\\"#\\");
+ background: url(data:image/png;base64,AAA);
+ background: url(http://example.com/image.jpg);
+ background: url(//example.com/image.png);
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(/webpack/public/path/img.png) url(\\"/webpack/public/path/img img.png\\") xyz;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png);
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png#?iefix);
+ background: url(\\"#hash\\");
+ background: url(\\"#\\");
+ background: url(data:image/png;base64,AAA);
+ background: url(http://example.com/image.jpg);
+ background: url(//example.com/image.png);
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(/webpack/public/path/img.png) url(\\"/webpack/public/path/img img.png\\") xyz;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "a": "_a",
+}
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._a {
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png);
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png#?iefix);
+ background: url(\\"#hash\\");
+ background: url(\\"#\\");
+ background: url(data:image/png;base64,AAA);
+ background: url(http://example.com/image.jpg);
+ background: url(//example.com/image.png);
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(/webpack/public/path/img.png) url(\\"/webpack/public/path/img img.png\\") xyz;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "a": "_1goi1QVFtUMjX82JoFfLLJ",
+}
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1goi1QVFtUMjX82JoFfLLJ {
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png);
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(\\"/webpack/public/path/img img.png\\");
+ background: url(/webpack/public/path/img.png);
+ background: url(/webpack/public/path/img.png#?iefix);
+ background: url(\\"#hash\\");
+ background: url(\\"#\\");
+ background: url(data:image/png;base64,AAA);
+ background: url(http://example.com/image.jpg);
+ background: url(//example.com/image.png);
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(/webpack/public/path/img.png) url(\\"/webpack/public/path/img img.png\\") xyz;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`urls\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value aaa: red;
+@value bbb: green;
+@value ccc: aaa;
+
+.a {
+ background: aaa;
+ background: bbb;
+ background: ccc;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "aaa": "red",
+ "bbb": "green",
+ "ccc": "red",
+}
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ background: red;
+ background: green;
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "a": "_18yRHBx_s3xK1t_zOjEfo",
+ "aaa": "red",
+ "bbb": "green",
+ "ccc": "red",
+}
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._18yRHBx_s3xK1t_zOjEfo {
+ background: red;
+ background: green;
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "aaa": "red",
+ "bbb": "green",
+ "ccc": "red",
+}
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".a {
+ background: red;
+ background: green;
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "a": "_a",
+ "aaa": "red",
+ "bbb": "green",
+ "ccc": "red",
+}
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._a {
+ background: red;
+ background: green;
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "a": "_18yRHBx_s3xK1t_zOjEfo",
+ "aaa": "red",
+ "bbb": "green",
+ "ccc": "red",
+}
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._18yRHBx_s3xK1t_zOjEfo {
+ background: red;
+ background: green;
+ background: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value def: red;
+@value ghi: 1px solid black;
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "1px solid black",
+}
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "1px solid black",
+}
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "1px solid black",
+}
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "1px solid black",
+}
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "1px solid black",
+}
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-1\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value def: red;
+.ghi { color: def; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "def": "red",
+}
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".ghi { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "_2aKAT4pAinaabqEIFgdhTC",
+}
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2aKAT4pAinaabqEIFgdhTC { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "def": "red",
+}
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".ghi { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "_ghi",
+}
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._ghi { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "_2aKAT4pAinaabqEIFgdhTC",
+}
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._2aKAT4pAinaabqEIFgdhTC { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value def from './file.css';
+.ghi { color: def; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "def": "red",
+}
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "_29ART3-NNe4DU1X-5_7419",
+}
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._29ART3-NNe4DU1X-5_7419 { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "def": "red",
+}
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "_ghi",
+}
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._ghi { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "ghi": "_29ART3-NNe4DU1X-5_7419",
+}
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._29ART3-NNe4DU1X-5_7419 { color: red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-3\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value def as aaa from './file1.css';
+@value def as bbb from './file2.css';
+.ghi { background: aaa, bbb, def; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "aaa": "red",
+ "bbb": "green",
+}
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 3,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { background: red, green, def; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "aaa": "red",
+ "bbb": "green",
+ "ghi": "_1vGjNPdz_qWrUvzTY2pCsS",
+}
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 3,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1vGjNPdz_qWrUvzTY2pCsS { background: red, green, def; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "aaa": "red",
+ "bbb": "green",
+}
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 3,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { background: red, green, def; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "aaa": "red",
+ "bbb": "green",
+ "ghi": "_ghi",
+}
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 3,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._ghi { background: red, green, def; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "aaa": "red",
+ "bbb": "green",
+ "ghi": "_1vGjNPdz_qWrUvzTY2pCsS",
+}
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 3,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1vGjNPdz_qWrUvzTY2pCsS { background: red, green, def; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-4\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value color from './file1.css';
+@value shadow: 0 0 color,0 0 color;
+.ghi { box-shadow: shadow; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "shadow": "0 0 red,0 0 red",
+}
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { box-shadow: 0 0 red,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_3Uw-A6Tr2LkIED6NTqwFvj",
+ "shadow": "0 0 red,0 0 red",
+}
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._3Uw-A6Tr2LkIED6NTqwFvj { box-shadow: 0 0 red,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "shadow": "0 0 red,0 0 red",
+}
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { box-shadow: 0 0 red,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_ghi",
+ "shadow": "0 0 red,0 0 red",
+}
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._ghi { box-shadow: 0 0 red,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_3Uw-A6Tr2LkIED6NTqwFvj",
+ "shadow": "0 0 red,0 0 red",
+}
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._3Uw-A6Tr2LkIED6NTqwFvj { box-shadow: 0 0 red,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-5\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value color from './file1.css';
+@value shadow: 0 0 color ,0 0 color;
+.ghi { box-shadow: shadow; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "shadow": "0 0 red ,0 0 red",
+}
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { box-shadow: 0 0 red ,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_2qKjolC-wu9Dp8-RCkWiLN",
+ "shadow": "0 0 red ,0 0 red",
+}
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._2qKjolC-wu9Dp8-RCkWiLN { box-shadow: 0 0 red ,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "shadow": "0 0 red ,0 0 red",
+}
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { box-shadow: 0 0 red ,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_ghi",
+ "shadow": "0 0 red ,0 0 red",
+}
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._ghi { box-shadow: 0 0 red ,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_2qKjolC-wu9Dp8-RCkWiLN",
+ "shadow": "0 0 red ,0 0 red",
+}
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._2qKjolC-wu9Dp8-RCkWiLN { box-shadow: 0 0 red ,0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-6\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value color from './file1.css';
+@value shadow: 0 0 color, 0 0 color;
+.ghi { box-shadow: shadow; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "shadow": "0 0 red, 0 0 red",
+}
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { box-shadow: 0 0 red, 0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_1SVUxnI1T0vYEcq2VXU5pr",
+ "shadow": "0 0 red, 0 0 red",
+}
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1SVUxnI1T0vYEcq2VXU5pr { box-shadow: 0 0 red, 0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "shadow": "0 0 red, 0 0 red",
+}
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".ghi { box-shadow: 0 0 red, 0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_ghi",
+ "shadow": "0 0 red, 0 0 red",
+}
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._ghi { box-shadow: 0 0 red, 0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "color": "red",
+ "ghi": "_1SVUxnI1T0vYEcq2VXU5pr",
+ "shadow": "0 0 red, 0 0 red",
+}
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._1SVUxnI1T0vYEcq2VXU5pr { box-shadow: 0 0 red, 0 0 red; }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-7\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value shadow-color: rgba(0, 0, 0, 0.5);
+
+.shadow {
+ box-shadow: 0 10px 10px shadow-color,
+ 10px 0px 5px shadow-color;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "shadow-color": "rgba(0, 0, 0, 0.5)",
+}
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".shadow {
+ box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),
+ 10px 0px 5px rgba(0, 0, 0, 0.5);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "shadow": "_3fhB2YwAmhjTmtcd6ofBQH",
+ "shadow-color": "rgba(0, 0, 0, 0.5)",
+}
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._3fhB2YwAmhjTmtcd6ofBQH {
+ box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),
+ 10px 0px 5px rgba(0, 0, 0, 0.5);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "shadow-color": "rgba(0, 0, 0, 0.5)",
+}
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".shadow {
+ box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),
+ 10px 0px 5px rgba(0, 0, 0, 0.5);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "shadow": "_shadow",
+ "shadow-color": "rgba(0, 0, 0, 0.5)",
+}
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._shadow {
+ box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),
+ 10px 0px 5px rgba(0, 0, 0, 0.5);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "shadow": "_3fhB2YwAmhjTmtcd6ofBQH",
+ "shadow-color": "rgba(0, 0, 0, 0.5)",
+}
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._3fhB2YwAmhjTmtcd6ofBQH {
+ box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),
+ 10px 0px 5px rgba(0, 0, 0, 0.5);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-8\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value def: red;
+
+.foo1 {
+ prop: func(def);
+}
+
+.foo2 {
+ prop: func(10px def);
+}
+
+.foo3 {
+ prop: func(def 10px);
+}
+
+.foo4 {
+ prop: func(10px def 10px);
+}
+
+.foo5 {
+ prop: func(10px, def);
+}
+
+.foo6 {
+ prop: func(def, 10px);
+}
+
+.foo7 {
+ prop: func(10px, def, 10px);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "def": "red",
+}
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".foo1 {
+ prop: func(red);
+}
+
+.foo2 {
+ prop: func(10px red);
+}
+
+.foo3 {
+ prop: func(red 10px);
+}
+
+.foo4 {
+ prop: func(10px red 10px);
+}
+
+.foo5 {
+ prop: func(10px, red);
+}
+
+.foo6 {
+ prop: func(red, 10px);
+}
+
+.foo7 {
+ prop: func(10px, red, 10px);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "foo1": "_1V2U7x4U8oxxooLcDA25iL",
+ "foo2": "_3E1mOwwzg7yDREAM1sTqrf",
+ "foo3": "_1jURUggvUGFLzQ1zAWjNep",
+ "foo4": "_2gTeanreYt1oKNw6pvYDuQ",
+ "foo5": "_1FHimE7YIOvZ66qJzb5oD7",
+ "foo6": "_2ZsNKxzBYz6NW_ITMiAbSo",
+ "foo7": "_18TpSE38_jlCbLotZMXh67",
+}
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1V2U7x4U8oxxooLcDA25iL {
+ prop: func(red);
+}
+
+._3E1mOwwzg7yDREAM1sTqrf {
+ prop: func(10px red);
+}
+
+._1jURUggvUGFLzQ1zAWjNep {
+ prop: func(red 10px);
+}
+
+._2gTeanreYt1oKNw6pvYDuQ {
+ prop: func(10px red 10px);
+}
+
+._1FHimE7YIOvZ66qJzb5oD7 {
+ prop: func(10px, red);
+}
+
+._2ZsNKxzBYz6NW_ITMiAbSo {
+ prop: func(red, 10px);
+}
+
+._18TpSE38_jlCbLotZMXh67 {
+ prop: func(10px, red, 10px);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "def": "red",
+}
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".foo1 {
+ prop: func(red);
+}
+
+.foo2 {
+ prop: func(10px red);
+}
+
+.foo3 {
+ prop: func(red 10px);
+}
+
+.foo4 {
+ prop: func(10px red 10px);
+}
+
+.foo5 {
+ prop: func(10px, red);
+}
+
+.foo6 {
+ prop: func(red, 10px);
+}
+
+.foo7 {
+ prop: func(10px, red, 10px);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "foo1": "_foo1",
+ "foo2": "_foo2",
+ "foo3": "_foo3",
+ "foo4": "_foo4",
+ "foo5": "_foo5",
+ "foo6": "_foo6",
+ "foo7": "_foo7",
+}
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._foo1 {
+ prop: func(red);
+}
+
+._foo2 {
+ prop: func(10px red);
+}
+
+._foo3 {
+ prop: func(red 10px);
+}
+
+._foo4 {
+ prop: func(10px red 10px);
+}
+
+._foo5 {
+ prop: func(10px, red);
+}
+
+._foo6 {
+ prop: func(red, 10px);
+}
+
+._foo7 {
+ prop: func(10px, red, 10px);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "def": "red",
+ "foo1": "_1V2U7x4U8oxxooLcDA25iL",
+ "foo2": "_3E1mOwwzg7yDREAM1sTqrf",
+ "foo3": "_1jURUggvUGFLzQ1zAWjNep",
+ "foo4": "_2gTeanreYt1oKNw6pvYDuQ",
+ "foo5": "_1FHimE7YIOvZ66qJzb5oD7",
+ "foo6": "_2ZsNKxzBYz6NW_ITMiAbSo",
+ "foo7": "_18TpSE38_jlCbLotZMXh67",
+}
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1V2U7x4U8oxxooLcDA25iL {
+ prop: func(red);
+}
+
+._3E1mOwwzg7yDREAM1sTqrf {
+ prop: func(10px red);
+}
+
+._1jURUggvUGFLzQ1zAWjNep {
+ prop: func(red 10px);
+}
+
+._2gTeanreYt1oKNw6pvYDuQ {
+ prop: func(10px red 10px);
+}
+
+._1FHimE7YIOvZ66qJzb5oD7 {
+ prop: func(10px, red);
+}
+
+._2ZsNKxzBYz6NW_ITMiAbSo {
+ prop: func(red, 10px);
+}
+
+._18TpSE38_jlCbLotZMXh67 {
+ prop: func(10px, red, 10px);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-9\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "@value v-primary: #BF4040;
+@value s-black: black-selector;
+@value m-large: (min-width: 960px);
+
+.header {
+ color: v-primary;
+ padding: 0 10px;
+}
+
+.s-black {
+ color: black;
+}
+
+@media m-large {
+ .header {
+ padding: 0 20px;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`global)\`: locals 1`] = `
+Object {
+ "m-large": "(min-width: 960px)",
+ "s-black": "black-selector",
+ "v-primary": "#BF4040",
+}
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".header {
+ color: #BF4040;
+ padding: 0 10px;
+}
+
+.black-selector {
+ color: black;
+}
+
+@media (min-width: 960px) {
+ .header {
+ padding: 0 20px;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`local)\`: locals 1`] = `
+Object {
+ "black-selector": "_3xId28FIeFVmNWx5IWeWqN",
+ "header": "ODvOrT6QaJbrNxuVwTgHn",
+ "m-large": "(min-width: 960px)",
+ "s-black": "black-selector",
+ "v-primary": "#BF4040",
+}
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".ODvOrT6QaJbrNxuVwTgHn {
+ color: #BF4040;
+ padding: 0 10px;
+}
+
+._3xId28FIeFVmNWx5IWeWqN {
+ color: black;
+}
+
+@media (min-width: 960px) {
+ .ODvOrT6QaJbrNxuVwTgHn {
+ padding: 0 20px;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `
+Object {
+ "m-large": "(min-width: 960px)",
+ "s-black": "black-selector",
+ "v-primary": "#BF4040",
+}
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".header {
+ color: #BF4040;
+ padding: 0 10px;
+}
+
+.black-selector {
+ color: black;
+}
+
+@media (min-width: 960px) {
+ .header {
+ padding: 0 20px;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `
+Object {
+ "black-selector": "_black-selector",
+ "header": "_header",
+ "m-large": "(min-width: 960px)",
+ "s-black": "black-selector",
+ "v-primary": "#BF4040",
+}
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._header {
+ color: #BF4040;
+ padding: 0 10px;
+}
+
+._black-selector {
+ color: black;
+}
+
+@media (min-width: 960px) {
+ ._header {
+ padding: 0 20px;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`true)\`: locals 1`] = `
+Object {
+ "black-selector": "_3xId28FIeFVmNWx5IWeWqN",
+ "header": "ODvOrT6QaJbrNxuVwTgHn",
+ "m-large": "(min-width: 960px)",
+ "s-black": "black-selector",
+ "v-primary": "#BF4040",
+}
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".ODvOrT6QaJbrNxuVwTgHn {
+ color: #BF4040;
+ padding: 0 10px;
+}
+
+._3xId28FIeFVmNWx5IWeWqN {
+ color: black;
+}
+
+@media (min-width: 960px) {
+ .ODvOrT6QaJbrNxuVwTgHn {
+ padding: 0 20px;
+ }
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules case \`values-10\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`;
+
+exports[`modules composes should supports resolving: errors 1`] = `Array []`;
+
+exports[`modules composes should supports resolving: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 3,
+ "
+",
+ "",
+ ],
+ Array [
+ 4,
+ "._22ETk3ZhhvjVe-4dAULcsF {
+ display: block;
+}
+",
+ "",
+ ],
+ Array [
+ 5,
+ ".dSGVakTZ8YY-XNW64tg9F {
+ display: inline;
+}
+",
+ "",
+ ],
+ Array [
+ 6,
+ "._1SUuyapRQ82dAPS8r7zmpY {
+ display: flex;
+}
+",
+ "",
+ ],
+ Array [
+ 7,
+ "._2n5szs-7uGKzfFTp9NTK64 {
+ display: inline-block;
+}
+",
+ "",
+ ],
+ Array [
+ 8,
+ "._37nzOIvIANGnEtP1lWjZDN {
+ display: table;
+}
+",
+ "",
+ ],
+ Array [
+ 9,
+ "._2Nehoi0wFTN-8p0fEfvUYd {
+ d: d;
+}
+",
+ "(min-width: 100px)",
+ ],
+ Array [
+ 1,
+ "._14uFt0lIVKKAlKTTT29IIQ {
+ color: red;
+}
+
+._3XDgIzfUIQkaUInpEdo7fN {
+ color: blue;
+}
+
+._1wABXM_RabWHj--wsPrhvM {
+ display: block;
+}
+
+._1DFEYnAfn9LZyk4fErI86e {
+ width: 2112moon;
+}
+
+.Ywv5coVC2RU-pIFhN9O4w {
+ color: green;
+}
+
+._1tAbIwITRWAdZZE6wKNk9O {
+ prop: red;
+ duplicate: green;
+}
+
+.Q3SQ3BwtBwUFLlg6adzOI {
+ color: red;
+}
+
+._1n5XhXj4SFnYrwziC3un0d {
+ color: yellow;
+}
+
+._3dnFnGkAVAiMA6etF-naHc {
+ color: gray;
+}
+
+._1xUePnlnafMQ1cExy3PUWT {
+ color: gray;
+}
+
+._26Jdfenl9Xn8HXwb2jipvt {
+ color: gainsboro;
+}
+
+._1ya4VhsDkuPhQeVHQydw2Y {
+ color: #BF4040;
+}
+
+.sGE1Q_LliVEZU2Q4q9j4K {
+ color: black;
+}
+
+@media (min-width: 960px) {
+ ._2zSMJ4hQh0FesbZjiKW_ya {
+ padding: 0 20px;
+ }
+}
+
+.white {
+ color: white;
+}
+
+@media (min-width: 320px) {
+ ._2zSMJ4hQh0FesbZjiKW_ya {
+ padding: 20px 20px;
+ }
+}
+@value v-comment: /* comment */;
+
+._3qS0_85PLYhk_pNQ69KfSo {
+ v-ident: validIdent;
+ v-pre-defined-ident: left;
+ v-string: 'content';
+ v-string-1: '';
+ v-url: url(https://www.exammple.com/images/my-background.png);
+ v-url-1: url('https://www.exammple.com/images/my-background.png');
+ v-url-2: url(\\"https://www.exammple.com/images/my-background.png\\");
+ v-integer: 100;
+ v-integer-1: -100;
+ v-integer-2: +100;
+ v-number: .60;
+ v-number-1: -456.8;
+ v-number-2: -3.4e-2;
+ v-dimension: 12px;
+ v-percentage: 100%;
+ v-hex: #fff;
+ v-comment: v-comment 10px v-comment;
+ v-function: rgb(0,0,0);
+ v-unicode-range: U+0025-00FF;
+ mutliple: #fff .60 100%;
+}
+
+
+a {
+ content: 'content';
+}
+
+@supports (content: 'content') {
+ a {
+ content: 'content';
+ }
+}
+
+[class~='content'] {
+ color:green;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules composes should supports resolving: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./values.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./something.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported-simple.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!../modules/top-relative.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!package/style.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!aliasesComposes/alias.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"), \\"(min-width: 100px)\\");
+// Module
+exports.push([module.id, \\"._14uFt0lIVKKAlKTTT29IIQ {\\\\n color: \\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"v-def\\"] + \\";\\\\n}\\\\n\\\\n._3XDgIzfUIQkaUInpEdo7fN {\\\\n color: blue;\\\\n}\\\\n\\\\n._1wABXM_RabWHj--wsPrhvM {\\\\n display: block;\\\\n}\\\\n\\\\n._1DFEYnAfn9LZyk4fErI86e {\\\\n width: \\" + require(\\"-!../../../src/index.js??ref--4-0!./something.css\\").locals[\\"v-something\\"] + \\";\\\\n}\\\\n\\\\n.Ywv5coVC2RU-pIFhN9O4w {\\\\n color: \\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n._1tAbIwITRWAdZZE6wKNk9O {\\\\n prop: \\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"v-def\\"] + \\";\\\\n duplicate: \\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n.Q3SQ3BwtBwUFLlg6adzOI {\\\\n color: red;\\\\n}\\\\n\\\\n._1n5XhXj4SFnYrwziC3un0d {\\\\n color: yellow;\\\\n}\\\\n\\\\n._3dnFnGkAVAiMA6etF-naHc {\\\\n color: gray;\\\\n}\\\\n\\\\n._1xUePnlnafMQ1cExy3PUWT {\\\\n color: gray;\\\\n}\\\\n\\\\n._26Jdfenl9Xn8HXwb2jipvt {\\\\n color: gainsboro;\\\\n}\\\\n\\\\n._1ya4VhsDkuPhQeVHQydw2Y {\\\\n color: #BF4040;\\\\n}\\\\n\\\\n.sGE1Q_LliVEZU2Q4q9j4K {\\\\n color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n ._2zSMJ4hQh0FesbZjiKW_ya {\\\\n padding: 0 20px;\\\\n }\\\\n}\\\\n\\\\n.\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"s-white\\"] + \\" {\\\\n color: white;\\\\n}\\\\n\\\\n@media \\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"m-small\\"] + \\" {\\\\n ._2zSMJ4hQh0FesbZjiKW_ya {\\\\n padding: 20px 20px;\\\\n }\\\\n}\\\\n@value v-comment: /* comment */;\\\\n\\\\n._3qS0_85PLYhk_pNQ69KfSo {\\\\n v-ident: validIdent;\\\\n v-pre-defined-ident: left;\\\\n v-string: 'content';\\\\n v-string-1: '';\\\\n v-url: url(https://www.exammple.com/images/my-background.png);\\\\n v-url-1: url('https://www.exammple.com/images/my-background.png');\\\\n v-url-2: url(\\\\\\"https://www.exammple.com/images/my-background.png\\\\\\");\\\\n v-integer: 100;\\\\n v-integer-1: -100;\\\\n v-integer-2: +100;\\\\n v-number: .60;\\\\n v-number-1: -456.8;\\\\n v-number-2: -3.4e-2;\\\\n v-dimension: 12px;\\\\n v-percentage: 100%;\\\\n v-hex: #fff;\\\\n v-comment: v-comment 10px v-comment;\\\\n v-function: rgb(0,0,0);\\\\n v-unicode-range: U+0025-00FF;\\\\n mutliple: #fff .60 100%;\\\\n}\\\\n\\\\n\\\\na {\\\\n content: 'content';\\\\n}\\\\n\\\\n@supports (content: 'content') {\\\\n a {\\\\n content: 'content';\\\\n }\\\\n}\\\\n\\\\n[class~='content'] {\\\\n color:green;\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"v-def\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"v-def\\"] + \\"\\",
+ \\"v-other\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"v-other\\"] + \\"\\",
+ \\"s-white\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"s-white\\"] + \\"\\",
+ \\"m-small\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\").locals[\\"m-small\\"] + \\"\\",
+ \\"v-something\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./something.css\\").locals[\\"v-something\\"] + \\"\\",
+ \\"v-foo\\": \\"blue\\",
+ \\"v-bar\\": \\"block\\",
+ \\"v-primary\\": \\"#BF4040\\",
+ \\"s-black\\": \\"black-selector\\",
+ \\"m-large\\": \\"(min-width: 960px)\\",
+ \\"v-ident\\": \\"validIdent\\",
+ \\"v-pre-defined-ident\\": \\"left\\",
+ \\"v-string\\": \\"'content'\\",
+ \\"v-string-1\\": \\"''\\",
+ \\"v-url\\": \\"url(https://www.exammple.com/images/my-background.png)\\",
+ \\"v-url-1\\": \\"url('https://www.exammple.com/images/my-background.png')\\",
+ \\"v-url-2\\": \\"url(\\\\\\"https://www.exammple.com/images/my-background.png\\\\\\")\\",
+ \\"v-integer\\": \\"100\\",
+ \\"v-integer-1\\": \\"-100\\",
+ \\"v-integer-2\\": \\"+100\\",
+ \\"v-number\\": \\".60\\",
+ \\"v-number-1\\": \\"-456.8\\",
+ \\"v-number-2\\": \\"-3.4e-2\\",
+ \\"v-dimension\\": \\"12px\\",
+ \\"v-percentage\\": \\"100%\\",
+ \\"v-hex\\": \\"#fff\\",
+ \\"v-function\\": \\"rgb(0,0,0)\\",
+ \\"v-unicode-range\\": \\"U+0025-00FF\\",
+ \\"ghi\\": \\"_14uFt0lIVKKAlKTTT29IIQ\\",
+ \\"class\\": \\"_3XDgIzfUIQkaUInpEdo7fN\\",
+ \\"other\\": \\"_1wABXM_RabWHj--wsPrhvM\\",
+ \\"other-other\\": \\"_1DFEYnAfn9LZyk4fErI86e\\",
+ \\"green\\": \\"Ywv5coVC2RU-pIFhN9O4w\\",
+ \\"foo\\": \\"_1tAbIwITRWAdZZE6wKNk9O\\",
+ \\"simple\\": \\"Q3SQ3BwtBwUFLlg6adzOI \\" + require(\\"-!../../../src/index.js??ref--4-0!./imported-simple.css\\").locals[\\"imported-simple\\"] + \\"\\",
+ \\"relative\\": \\"_1n5XhXj4SFnYrwziC3un0d \\" + require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\").locals[\\"imported-relative\\"] + \\"\\",
+ \\"top-relative\\": \\"_3dnFnGkAVAiMA6etF-naHc \\" + require(\\"-!../../../src/index.js??ref--4-0!../modules/top-relative.css\\").locals[\\"imported-relative\\"] + \\"\\",
+ \\"module\\": \\"_1xUePnlnafMQ1cExy3PUWT \\" + require(\\"-!../../../src/index.js??ref--4-0!package/style.css\\").locals[\\"imported-module\\"] + \\"\\",
+ \\"alias\\": \\"_26Jdfenl9Xn8HXwb2jipvt \\" + require(\\"-!../../../src/index.js??ref--4-0!aliasesComposes/alias.css\\").locals[\\"imported-alias\\"] + \\"\\",
+ \\"primary-selector\\": \\"_1ya4VhsDkuPhQeVHQydw2Y\\",
+ \\"black-selector\\": \\"sGE1Q_LliVEZU2Q4q9j4K\\",
+ \\"header\\": \\"_2zSMJ4hQh0FesbZjiKW_ya\\",
+ \\"foobarbaz\\": \\"_3qS0_85PLYhk_pNQ69KfSo\\"
+};"
+`;
+
+exports[`modules composes should supports resolving: warnings 1`] = `Array []`;
+
+exports[`modules getLocalIdent should be allowed to return false: errors 1`] = `Array []`;
+
+exports[`modules getLocalIdent should be allowed to return false: locals 1`] = `
+Object {
+ "abc": "abc",
+ "def": "def",
+ "ghi": "ghi",
+ "jkl": "jkl",
+}
+`;
+
+exports[`modules getLocalIdent should be allowed to return false: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".abc .def {
+ color: red;
+}
+
+.ghi .jkl {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules getLocalIdent should be allowed to return false: warnings 1`] = `Array []`;
+
+exports[`modules issue #286: errors 1`] = `Array []`;
+
+exports[`modules issue #286: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".a--red { color: red }
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".b--main { }
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules issue #286: module 1`] = `
+"exports = module.exports = require(\\"../../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"./dep.css\\"), \\"\\");
+// Module
+exports.push([module.id, \\".b--main { }\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"main\\": \\"b--main \\" + require(\\"./dep.css\\").locals[\\"red\\"] + \\"\\"
+};"
+`;
+
+exports[`modules issue #286: warnings 1`] = `Array []`;
+
+exports[`modules issue #636: errors 1`] = `Array []`;
+
+exports[`modules issue #636: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".prefix-foo {
+ color: red;
+}",
+ "",
+ ],
+ Array [
+ 1,
+ ".prefix-bar {
+}",
+ "",
+ ],
+]
+`;
+
+exports[`modules issue #636: module 1`] = `
+"exports = module.exports = require(\\"../../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../../src/index.js??ref--4-0!../../../../node_modules/sass-loader/lib/loader.js??ref--4-1!./foo.scss\\"), \\"\\");
+// Module
+exports.push([module.id, \\".prefix-bar {\\\\n}\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"bar\\": \\"prefix-bar \\" + require(\\"-!../../../../src/index.js??ref--4-0!../../../../node_modules/sass-loader/lib/loader.js??ref--4-1!./foo.scss\\").locals[\\"foo\\"] + \\"\\"
+};"
+`;
+
+exports[`modules issue #636: warnings 1`] = `Array []`;
+
+exports[`modules issue #861: errors 1`] = `Array []`;
+
+exports[`modules issue #861: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "
+",
+ "",
+ ],
+ Array [
+ 4,
+ "._1ef5Heix1Kf4k0qYvyWRRO {
+ display: flex;
+}
+",
+ "",
+ ],
+ Array [
+ 3,
+ ".L8pnpYm5VAu49S290uPMA {
+ color: red;
+ margin: 0;
+ padding: 0;
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._2gV2e6TcHcPgyDTzxbvkKa {
+ color: gray;
+ margin: 0;
+ padding: 0;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules issue #861: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!@localpackage/color.css\\"), \\"\\");
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!@localpackage/style.css\\"), \\"\\");
+// Module
+exports.push([module.id, \\"._2gV2e6TcHcPgyDTzxbvkKa {\\\\n color: \\" + require(\\"-!../../../src/index.js??ref--4-0!@localpackage/color.css\\").locals[\\"color-grey\\"] + \\";\\\\n margin: 0;\\\\n padding: 0;\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"color-grey\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!@localpackage/color.css\\").locals[\\"color-grey\\"] + \\"\\",
+ \\"copyright\\": \\"_2gV2e6TcHcPgyDTzxbvkKa \\" + require(\\"-!../../../src/index.js??ref--4-0!@localpackage/style.css\\").locals[\\"type-heading\\"] + \\"\\"
+};"
+`;
+
+exports[`modules issue #861: warnings 1`] = `Array []`;
+
+exports[`modules issue #966: errors 1`] = `Array []`;
+
+exports[`modules issue #966: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".button.hey {
+ color: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules issue #966: module 1`] = `
+"exports = module.exports = require(\\"../../../../src/runtime/api.js\\")(false);
+// Module
+exports.push([module.id, \\".button.hey {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"button\\": \\"button.hey\\"
+};"
+`;
+
+exports[`modules issue #966: warnings 1`] = `Array []`;
+
+exports[`modules issue #967: errors 1`] = `Array []`;
+
+exports[`modules issue #967: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".modules-path-placeholder__foo__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {
+ color: red;
+}
+
+.modules-path-placeholder__foo\\\\/bar__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {
+ color: blue;
+}
+
+.modules-path-placeholder__\\\\[\\\\/\\\\?\\\\<\\\\>\\\\\\\\\\\\\\\\\\\\3A \\\\*\\\\|\\\\\\"\\\\3A \\\\]__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {
+ color: yellow;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules issue #967: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Module
+exports.push([module.id, \\".modules-path-placeholder__foo__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {\\\\n color: red;\\\\n}\\\\n\\\\n.modules-path-placeholder__foo\\\\\\\\/bar__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {\\\\n color: blue;\\\\n}\\\\n\\\\n.modules-path-placeholder__\\\\\\\\[\\\\\\\\/\\\\\\\\?\\\\\\\\<\\\\\\\\>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\3A \\\\\\\\*\\\\\\\\|\\\\\\\\\\\\\\"\\\\\\\\3A \\\\\\\\]__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {\\\\n color: yellow;\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"foo\\": \\"modules-path-placeholder__foo__--sep---sep---sep---sep----sep---sep---sep---sep---sep--\\",
+ \\"foo/bar\\": \\"modules-path-placeholder__foo/bar__--sep---sep---sep---sep----sep---sep---sep---sep---sep--\\",
+ \\"[/?<>\\\\\\\\\\\\\\\\:*|\\\\\\":]\\": \\"modules-path-placeholder__[/?<>\\\\\\\\\\\\\\\\:*|\\\\\\":]__--sep---sep---sep---sep----sep---sep---sep---sep---sep--\\"
+};"
+`;
+
+exports[`modules issue #967: warnings 1`] = `Array []`;
+
+exports[`modules issue #980: errors 1`] = `Array []`;
+
+exports[`modules issue #980: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".file-with-many-dots-in-name_a_1j0Lw {
+ color: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules issue #980: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Module
+exports.push([module.id, \\".file-with-many-dots-in-name_a_1j0Lw {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"a\\": \\"file-with-many-dots-in-name_a_1j0Lw\\"
+};"
+`;
+
+exports[`modules issue #980: warnings 1`] = `Array []`;
+
+exports[`modules should accepts all arguments for getLocalIdent option: errors 1`] = `Array []`;
+
+exports[`modules should accepts all arguments for getLocalIdent option: locals 1`] = `
+Object {
+ "abc": "foo",
+ "def": "foo",
+ "ghi": "foo",
+ "jkl": "foo",
+}
+`;
+
+exports[`modules should accepts all arguments for getLocalIdent option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".foo .foo {
+ color: red;
+}
+
+.foo .foo {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should accepts all arguments for getLocalIdent option: warnings 1`] = `Array []`;
+
+exports[`modules should correctly replace escaped symbols in selector with localIdentName option: errors 1`] = `Array []`;
+
+exports[`modules should correctly replace escaped symbols in selector with localIdentName option: locals 1`] = `
+Object {
+ "#": "#--1cQh",
+ "##": "##--1u97",
+ "#.#.#": "#.#.#--2QoP",
+ "#fake-id": "#fake-id--1d23",
+ "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.": "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.--2vJ9",
+ "-a-b-c-": "-a-b-c---opia",
+ "-a0-34a___f": "-a0-34a___f--2nJ5",
+ ".": ".--2hyg",
+ "123": "123--jOxY",
+ "1a2b3c": "1a2b3c--1_Xs",
+ ":)": ":)--2tSN",
+ ":\`(": ":\`(--3G_T",
+ ":hover": ":hover--1EAJ",
+ ":hover:focus:active": ":hover:focus:active--1v8f",
+ "<><<<>><>": "<><<<>><>--2mic",
+ "": "
--dDVm",
+ "?": "?--2DX4",
+ "@": "@--mE1z",
+ "B&W?": "B&W?--1s8i",
+ "[attr=value]": "[attr=value]--2y3U",
+ "_": "_--2vOX",
+ "_test": "_test--23te",
+ "className": "className--1E8H",
+ "f!o!o": "f!o!o--3x3B",
+ "f'o'o": "f'o'o--2fVl",
+ "f*o*o": "f*o*o--3sRc",
+ "f+o+o": "f+o+o--38BA",
+ "f/o/o": "f/o/o--OYOz",
+ "f\\\\o\\\\o": "f\\\\o\\\\o--1Knj",
+ "foo.bar": "foo.bar--3ZJa",
+ "foo/bar": "foo/bar--36uD",
+ "foo/bar/baz": "foo/bar/baz--oTEb",
+ "foo\\\\bar": "foo\\\\bar--2KL0",
+ "foo\\\\bar\\\\baz": "foo\\\\bar\\\\baz--2Id2",
+ "f~o~o": "f~o~o--lYb3",
+ "m_x_@": "m_x_@--2G3b",
+ "someId": "someId--3w7J",
+ "subClass": "subClass--3lo0",
+ "test": "test--NW9Y",
+ "{}": "{}--3lRh",
+ "©": "©--143H",
+ "“‘’”": "“‘’”--2yW9",
+ "⌘⌥": "⌘⌥--6z9v",
+ "☺☃": "☺☃--3sW7",
+ "♥": "♥--8xlN",
+ "𝄞♪♩♫♬": "𝄞♪♩♫♬--1JEq",
+ "💩": "💩--2i25",
+}
+`;
+
+exports[`modules should correctly replace escaped symbols in selector with localIdentName option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".test--NW9Y {
+ background: red;
+}
+
+._test--23te {
+ background: blue;
+}
+
+.className--1E8H {
+ background: red;
+}
+
+#someId--3w7J {
+ background: green;
+}
+
+.className--1E8H .subClass--3lo0 {
+ color: green;
+}
+
+#someId--3w7J .subClass--3lo0 {
+ color: blue;
+}
+
+.-a0-34a___f--2nJ5 {
+ color: red;
+}
+
+.m_x_\\\\@--2G3b {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+.B\\\\&W\\\\?--1s8i {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=\\":\`(\\" */
+.\\\\3A \\\\\`\\\\(--3G_T {
+ color: aqua;
+}
+
+/* matches elements with class=\\"1a2b3c\\" */
+.\\\\31 a2b3c--1_Xs {
+ color: aliceblue;
+}
+
+/* matches the element with id=\\"#fake-id\\" */
+#\\\\#fake-id--1d23 {
+ color: antiquewhite;
+}
+
+/* matches the element with id=\\"-a-b-c-\\" */
+#-a-b-c---opia {
+ color: azure;
+}
+
+/* matches the element with id=\\"©\\" */
+#©--143H {
+ color: black;
+}
+
+.♥--8xlN { background: lime; }
+.©--143H { background: lime; }
+.“‘’”--2yW9 { background: lime; }
+.☺☃--3sW7 { background: lime; }
+.⌘⌥--6z9v { background: lime; }
+.𝄞♪♩♫♬--1JEq { background: lime; }
+.💩--2i25 { background: lime; }
+.\\\\?--2DX4 { background: lime; }
+.\\\\@--mE1z { background: lime; }
+.\\\\.--2hyg { background: lime; }
+.\\\\3A \\\\)--2tSN { background: lime; }
+.\\\\3A \\\\\`\\\\(--3G_T { background: lime; }
+.\\\\31 23--jOxY { background: lime; }
+.\\\\31 a2b3c--1_Xs { background: lime; }
+.\\\\
--dDVm { background: lime; }
+.\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\>--2mic { background: lime; }
+.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\.--2vJ9 { background: lime; }
+.\\\\#--1cQh { background: lime; }
+.\\\\#\\\\#--1u97 { background: lime; }
+.\\\\#\\\\.\\\\#\\\\.\\\\#--2QoP { background: lime; }
+.\\\\_--2vOX { background: lime; }
+.\\\\{\\\\}--3lRh { background: lime; }
+.\\\\#fake\\\\-id--1d23 { background: lime; }
+.foo\\\\.bar--3ZJa { background: lime; }
+.\\\\3A hover--1EAJ { background: lime; }
+.\\\\3A hover\\\\3A focus\\\\3A active--1v8f { background: lime; }
+.\\\\[attr\\\\=value\\\\]--2y3U { background: lime; }
+.f\\\\/o\\\\/o--OYOz { background: lime; }
+.f\\\\\\\\o\\\\\\\\o--1Knj { background: lime; }
+.f\\\\*o\\\\*o--3sRc { background: lime; }
+.f\\\\!o\\\\!o--3x3B { background: lime; }
+.f\\\\'o\\\\'o--2fVl { background: lime; }
+.f\\\\~o\\\\~o--lYb3 { background: lime; }
+.f\\\\+o\\\\+o--38BA { background: lime; }
+
+.foo\\\\/bar--36uD {
+ background: hotpink;
+}
+
+.foo\\\\\\\\bar--2KL0 {
+ background: hotpink;
+}
+
+.foo\\\\/bar\\\\/baz--oTEb {
+ background: hotpink;
+}
+
+.foo\\\\\\\\bar\\\\\\\\baz--2Id2 {
+ background: hotpink;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should correctly replace escaped symbols in selector with localIdentName option: warnings 1`] = `Array []`;
+
+exports[`modules should have an undefined context if no context was given: errors 1`] = `Array []`;
+
+exports[`modules should have an undefined context if no context was given: locals 1`] = `
+Object {
+ "abc": "foo",
+ "def": "foo",
+ "ghi": "foo",
+ "jkl": "foo",
+}
+`;
+
+exports[`modules should have an undefined context if no context was given: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".foo .foo {
+ color: red;
+}
+
+.foo .foo {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should have an undefined context if no context was given: warnings 1`] = `Array []`;
+
+exports[`modules should prefixes leading hyphen + digit with underscore with localIdentName option: errors 1`] = `Array []`;
+
+exports[`modules should prefixes leading hyphen + digit with underscore with localIdentName option: locals 1`] = `
+Object {
+ "#": "_-1#",
+ "##": "_-1##",
+ "#.#.#": "_-1#.#.#",
+ "#fake-id": "_-1#fake-id",
+ "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.": "_-1++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.",
+ "-a-b-c-": "_-1-a-b-c-",
+ "-a0-34a___f": "_-1-a0-34a___f",
+ ".": "_-1.",
+ "123": "_-1123",
+ "1a2b3c": "_-11a2b3c",
+ ":)": "_-1:)",
+ ":\`(": "_-1:\`(",
+ ":hover": "_-1:hover",
+ ":hover:focus:active": "_-1:hover:focus:active",
+ "<><<<>><>": "_-1<><<<>><>",
+ "
": "_-1
",
+ "?": "_-1?",
+ "@": "_-1@",
+ "B&W?": "_-1B&W?",
+ "[attr=value]": "_-1[attr=value]",
+ "_": "_-1_",
+ "_test": "_-1_test",
+ "className": "_-1className",
+ "f!o!o": "_-1f!o!o",
+ "f'o'o": "_-1f'o'o",
+ "f*o*o": "_-1f*o*o",
+ "f+o+o": "_-1f+o+o",
+ "f/o/o": "_-1f/o/o",
+ "f\\\\o\\\\o": "_-1f\\\\o\\\\o",
+ "foo.bar": "_-1foo.bar",
+ "foo/bar": "_-1foo/bar",
+ "foo/bar/baz": "_-1foo/bar/baz",
+ "foo\\\\bar": "_-1foo\\\\bar",
+ "foo\\\\bar\\\\baz": "_-1foo\\\\bar\\\\baz",
+ "f~o~o": "_-1f~o~o",
+ "m_x_@": "_-1m_x_@",
+ "someId": "_-1someId",
+ "subClass": "_-1subClass",
+ "test": "_-1test",
+ "{}": "_-1{}",
+ "©": "_-1©",
+ "“‘’”": "_-1“‘’”",
+ "⌘⌥": "_-1⌘⌥",
+ "☺☃": "_-1☺☃",
+ "♥": "_-1♥",
+ "𝄞♪♩♫♬": "_-1𝄞♪♩♫♬",
+ "💩": "_-1💩",
+}
+`;
+
+exports[`modules should prefixes leading hyphen + digit with underscore with localIdentName option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._-1test {
+ background: red;
+}
+
+._-1_test {
+ background: blue;
+}
+
+._-1className {
+ background: red;
+}
+
+#_-1someId {
+ background: green;
+}
+
+._-1className ._-1subClass {
+ color: green;
+}
+
+#_-1someId ._-1subClass {
+ color: blue;
+}
+
+._-1-a0-34a___f {
+ color: red;
+}
+
+._-1m_x_\\\\@ {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+._-1B\\\\&W\\\\? {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=\\":\`(\\" */
+._-1\\\\3A \\\\\`\\\\( {
+ color: aqua;
+}
+
+/* matches elements with class=\\"1a2b3c\\" */
+._-1\\\\31 a2b3c {
+ color: aliceblue;
+}
+
+/* matches the element with id=\\"#fake-id\\" */
+#_-1\\\\#fake-id {
+ color: antiquewhite;
+}
+
+/* matches the element with id=\\"-a-b-c-\\" */
+#_-1-a-b-c- {
+ color: azure;
+}
+
+/* matches the element with id=\\"©\\" */
+#_-1© {
+ color: black;
+}
+
+._-1♥ { background: lime; }
+._-1© { background: lime; }
+._-1“‘’” { background: lime; }
+._-1☺☃ { background: lime; }
+._-1⌘⌥ { background: lime; }
+._-1𝄞♪♩♫♬ { background: lime; }
+._-1💩 { background: lime; }
+._-1\\\\? { background: lime; }
+._-1\\\\@ { background: lime; }
+._-1\\\\. { background: lime; }
+._-1\\\\3A \\\\) { background: lime; }
+._-1\\\\3A \\\\\`\\\\( { background: lime; }
+._-1\\\\31 23 { background: lime; }
+._-1\\\\31 a2b3c { background: lime; }
+._-1\\\\
{ background: lime; }
+._-1\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\> { background: lime; }
+._-1\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\. { background: lime; }
+._-1\\\\# { background: lime; }
+._-1\\\\#\\\\# { background: lime; }
+._-1\\\\#\\\\.\\\\#\\\\.\\\\# { background: lime; }
+._-1\\\\_ { background: lime; }
+._-1\\\\{\\\\} { background: lime; }
+._-1\\\\#fake\\\\-id { background: lime; }
+._-1foo\\\\.bar { background: lime; }
+._-1\\\\3A hover { background: lime; }
+._-1\\\\3A hover\\\\3A focus\\\\3A active { background: lime; }
+._-1\\\\[attr\\\\=value\\\\] { background: lime; }
+._-1f\\\\/o\\\\/o { background: lime; }
+._-1f\\\\\\\\o\\\\\\\\o { background: lime; }
+._-1f\\\\*o\\\\*o { background: lime; }
+._-1f\\\\!o\\\\!o { background: lime; }
+._-1f\\\\'o\\\\'o { background: lime; }
+._-1f\\\\~o\\\\~o { background: lime; }
+._-1f\\\\+o\\\\+o { background: lime; }
+
+._-1foo\\\\/bar {
+ background: hotpink;
+}
+
+._-1foo\\\\\\\\bar {
+ background: hotpink;
+}
+
+._-1foo\\\\/bar\\\\/baz {
+ background: hotpink;
+}
+
+._-1foo\\\\\\\\bar\\\\\\\\baz {
+ background: hotpink;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should prefixes leading hyphen + digit with underscore with localIdentName option: warnings 1`] = `Array []`;
+
+exports[`modules should prefixes two leading hyphens with underscore with localIdentName option: errors 1`] = `Array []`;
+
+exports[`modules should prefixes two leading hyphens with underscore with localIdentName option: locals 1`] = `
+Object {
+ "#": "_--#",
+ "##": "_--##",
+ "#.#.#": "_--#.#.#",
+ "#fake-id": "_--#fake-id",
+ "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.": "_--++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.",
+ "-a-b-c-": "_---a-b-c-",
+ "-a0-34a___f": "_---a0-34a___f",
+ ".": "_--.",
+ "123": "_--123",
+ "1a2b3c": "_--1a2b3c",
+ ":)": "_--:)",
+ ":\`(": "_--:\`(",
+ ":hover": "_--:hover",
+ ":hover:focus:active": "_--:hover:focus:active",
+ "<><<<>><>": "_--<><<<>><>",
+ "
": "_--
",
+ "?": "_--?",
+ "@": "_--@",
+ "B&W?": "_--B&W?",
+ "[attr=value]": "_--[attr=value]",
+ "_": "_--_",
+ "_test": "_--_test",
+ "className": "_--className",
+ "f!o!o": "_--f!o!o",
+ "f'o'o": "_--f'o'o",
+ "f*o*o": "_--f*o*o",
+ "f+o+o": "_--f+o+o",
+ "f/o/o": "_--f/o/o",
+ "f\\\\o\\\\o": "_--f\\\\o\\\\o",
+ "foo.bar": "_--foo.bar",
+ "foo/bar": "_--foo/bar",
+ "foo/bar/baz": "_--foo/bar/baz",
+ "foo\\\\bar": "_--foo\\\\bar",
+ "foo\\\\bar\\\\baz": "_--foo\\\\bar\\\\baz",
+ "f~o~o": "_--f~o~o",
+ "m_x_@": "_--m_x_@",
+ "someId": "_--someId",
+ "subClass": "_--subClass",
+ "test": "_--test",
+ "{}": "_--{}",
+ "©": "_--©",
+ "“‘’”": "_--“‘’”",
+ "⌘⌥": "_--⌘⌥",
+ "☺☃": "_--☺☃",
+ "♥": "_--♥",
+ "𝄞♪♩♫♬": "_--𝄞♪♩♫♬",
+ "💩": "_--💩",
+}
+`;
+
+exports[`modules should prefixes two leading hyphens with underscore with localIdentName option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._--test {
+ background: red;
+}
+
+._--_test {
+ background: blue;
+}
+
+._--className {
+ background: red;
+}
+
+#_--someId {
+ background: green;
+}
+
+._--className ._--subClass {
+ color: green;
+}
+
+#_--someId ._--subClass {
+ color: blue;
+}
+
+._---a0-34a___f {
+ color: red;
+}
+
+._--m_x_\\\\@ {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+._--B\\\\&W\\\\? {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=\\":\`(\\" */
+._--\\\\3A \\\\\`\\\\( {
+ color: aqua;
+}
+
+/* matches elements with class=\\"1a2b3c\\" */
+._--\\\\31 a2b3c {
+ color: aliceblue;
+}
+
+/* matches the element with id=\\"#fake-id\\" */
+#_--\\\\#fake-id {
+ color: antiquewhite;
+}
+
+/* matches the element with id=\\"-a-b-c-\\" */
+#_---a-b-c- {
+ color: azure;
+}
+
+/* matches the element with id=\\"©\\" */
+#_--© {
+ color: black;
+}
+
+._--♥ { background: lime; }
+._--© { background: lime; }
+._--“‘’” { background: lime; }
+._--☺☃ { background: lime; }
+._--⌘⌥ { background: lime; }
+._--𝄞♪♩♫♬ { background: lime; }
+._--💩 { background: lime; }
+._--\\\\? { background: lime; }
+._--\\\\@ { background: lime; }
+._--\\\\. { background: lime; }
+._--\\\\3A \\\\) { background: lime; }
+._--\\\\3A \\\\\`\\\\( { background: lime; }
+._--\\\\31 23 { background: lime; }
+._--\\\\31 a2b3c { background: lime; }
+._--\\\\
{ background: lime; }
+._--\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\> { background: lime; }
+._--\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\. { background: lime; }
+._--\\\\# { background: lime; }
+._--\\\\#\\\\# { background: lime; }
+._--\\\\#\\\\.\\\\#\\\\.\\\\# { background: lime; }
+._--\\\\_ { background: lime; }
+._--\\\\{\\\\} { background: lime; }
+._--\\\\#fake\\\\-id { background: lime; }
+._--foo\\\\.bar { background: lime; }
+._--\\\\3A hover { background: lime; }
+._--\\\\3A hover\\\\3A focus\\\\3A active { background: lime; }
+._--\\\\[attr\\\\=value\\\\] { background: lime; }
+._--f\\\\/o\\\\/o { background: lime; }
+._--f\\\\\\\\o\\\\\\\\o { background: lime; }
+._--f\\\\*o\\\\*o { background: lime; }
+._--f\\\\!o\\\\!o { background: lime; }
+._--f\\\\'o\\\\'o { background: lime; }
+._--f\\\\~o\\\\~o { background: lime; }
+._--f\\\\+o\\\\+o { background: lime; }
+
+._--foo\\\\/bar {
+ background: hotpink;
+}
+
+._--foo\\\\\\\\bar {
+ background: hotpink;
+}
+
+._--foo\\\\/bar\\\\/baz {
+ background: hotpink;
+}
+
+._--foo\\\\\\\\bar\\\\\\\\baz {
+ background: hotpink;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should prefixes two leading hyphens with underscore with localIdentName option: warnings 1`] = `Array []`;
+
+exports[`modules should respects context option: errors 1`] = `Array []`;
+
+exports[`modules should respects context option: locals 1`] = `
+Object {
+ "#": "O8Yw611P",
+ "##": "_3er0DBiz",
+ "#.#.#": "_22RlZfs4",
+ "#fake-id": "_3i_zUQNU",
+ "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.": "_3hmdGGWi",
+ "-a-b-c-": "_1cY1s7c1",
+ "-a0-34a___f": "_3RHUZpqp",
+ ".": "nfd9MoI8",
+ "123": "_3JQcZq0t",
+ "1a2b3c": "_3IsxVsEE",
+ ":)": "_3EKgIWue",
+ ":\`(": "_3oWIzQc7",
+ ":hover": "B2whyhV4",
+ ":hover:focus:active": "_3R7r57b4",
+ "<><<<>><>": "Tr9vNLcW",
+ "
": "_3Lowms-R",
+ "?": "mRRxxKEQ",
+ "@": "_3ZlTEPhx",
+ "B&W?": "_3d3wghvo",
+ "[attr=value]": "_3GgRcos7",
+ "_": "_2V6oBdW4",
+ "_test": "_3Q--BATR",
+ "className": "_3wBIH6Tw",
+ "f!o!o": "_2pDEJqK-",
+ "f'o'o": "_3297Sjlr",
+ "f*o*o": "MI6DPcI5",
+ "f+o+o": "_3aNwyLoj",
+ "f/o/o": "jbPgrxdZ",
+ "f\\\\o\\\\o": "_3x1WTWOH",
+ "foo.bar": "_2FVtFG40",
+ "foo/bar": "_13Q-TIeR",
+ "foo/bar/baz": "_1I8mGSan",
+ "foo\\\\bar": "LKTPJkpW",
+ "foo\\\\bar\\\\baz": "xcAsBCbt",
+ "f~o~o": "_1TY6Bok1",
+ "m_x_@": "_3SfN7O2q",
+ "someId": "mxosG-Ww",
+ "subClass": "_3jIM-zUk",
+ "test": "_1Os7JVOf",
+ "{}": "_2ZR3d8gm",
+ "©": "_3QaoFt--",
+ "“‘’”": "_3xI9AT1p",
+ "⌘⌥": "_1V-to4Of",
+ "☺☃": "uy8uve6R",
+ "♥": "kO1_7SYu",
+ "𝄞♪♩♫♬": "_1tfs0VJo",
+ "💩": "_2Cl61yWh",
+}
+`;
+
+exports[`modules should respects context option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "._1Os7JVOf {
+ background: red;
+}
+
+._3Q--BATR {
+ background: blue;
+}
+
+._3wBIH6Tw {
+ background: red;
+}
+
+#mxosG-Ww {
+ background: green;
+}
+
+._3wBIH6Tw ._3jIM-zUk {
+ color: green;
+}
+
+#mxosG-Ww ._3jIM-zUk {
+ color: blue;
+}
+
+._3RHUZpqp {
+ color: red;
+}
+
+._3SfN7O2q {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+._3d3wghvo {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=\\":\`(\\" */
+._3oWIzQc7 {
+ color: aqua;
+}
+
+/* matches elements with class=\\"1a2b3c\\" */
+._3IsxVsEE {
+ color: aliceblue;
+}
+
+/* matches the element with id=\\"#fake-id\\" */
+#_3i_zUQNU {
+ color: antiquewhite;
+}
+
+/* matches the element with id=\\"-a-b-c-\\" */
+#_1cY1s7c1 {
+ color: azure;
+}
+
+/* matches the element with id=\\"©\\" */
+#_3QaoFt-- {
+ color: black;
+}
+
+.kO1_7SYu { background: lime; }
+._3QaoFt-- { background: lime; }
+._3xI9AT1p { background: lime; }
+.uy8uve6R { background: lime; }
+._1V-to4Of { background: lime; }
+._1tfs0VJo { background: lime; }
+._2Cl61yWh { background: lime; }
+.mRRxxKEQ { background: lime; }
+._3ZlTEPhx { background: lime; }
+.nfd9MoI8 { background: lime; }
+._3EKgIWue { background: lime; }
+._3oWIzQc7 { background: lime; }
+._3JQcZq0t { background: lime; }
+._3IsxVsEE { background: lime; }
+._3Lowms-R { background: lime; }
+.Tr9vNLcW { background: lime; }
+._3hmdGGWi { background: lime; }
+.O8Yw611P { background: lime; }
+._3er0DBiz { background: lime; }
+._22RlZfs4 { background: lime; }
+._2V6oBdW4 { background: lime; }
+._2ZR3d8gm { background: lime; }
+._3i_zUQNU { background: lime; }
+._2FVtFG40 { background: lime; }
+.B2whyhV4 { background: lime; }
+._3R7r57b4 { background: lime; }
+._3GgRcos7 { background: lime; }
+.jbPgrxdZ { background: lime; }
+._3x1WTWOH { background: lime; }
+.MI6DPcI5 { background: lime; }
+._2pDEJqK- { background: lime; }
+._3297Sjlr { background: lime; }
+._1TY6Bok1 { background: lime; }
+._3aNwyLoj { background: lime; }
+
+._13Q-TIeR {
+ background: hotpink;
+}
+
+.LKTPJkpW {
+ background: hotpink;
+}
+
+._1I8mGSan {
+ background: hotpink;
+}
+
+.xcAsBCbt {
+ background: hotpink;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should respects context option: warnings 1`] = `Array []`;
+
+exports[`modules should respects getLocalIdent option (global mode): errors 1`] = `Array []`;
+
+exports[`modules should respects getLocalIdent option (global mode): locals 1`] = `
+Object {
+ "abc": "foo",
+ "def": "foo",
+ "ghi": "foo",
+ "jkl": "foo",
+}
+`;
+
+exports[`modules should respects getLocalIdent option (global mode): module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".foo .foo {
+ color: red;
+}
+
+.foo .foo {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should respects getLocalIdent option (global mode): warnings 1`] = `Array []`;
+
+exports[`modules should respects getLocalIdent option (local mode): errors 1`] = `Array []`;
+
+exports[`modules should respects getLocalIdent option (local mode): locals 1`] = `
+Object {
+ "abc": "foo",
+ "def": "foo",
+ "ghi": "foo",
+ "jkl": "foo",
+}
+`;
+
+exports[`modules should respects getLocalIdent option (local mode): module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".foo .foo {
+ color: red;
+}
+
+.foo .foo {
+ color: blue;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should respects getLocalIdent option (local mode): warnings 1`] = `Array []`;
+
+exports[`modules should respects hashPrefix option with localIdentName option: errors 1`] = `Array []`;
+
+exports[`modules should respects hashPrefix option with localIdentName option: locals 1`] = `
+Object {
+ "#": "#--8caa1febb853c79bc5740a51d69b0603",
+ "##": "##--e6e70cede894cf8ecef86891b00438fa",
+ "#.#.#": "#.#.#--f93b20473b91262c9634348506fe36fe",
+ "#fake-id": "#fake-id--a0d1d29b3c920aa3985fb11586f994e6",
+ "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.": "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.--937528d96919903e5a5172d04ced259a",
+ "-a-b-c-": "-a-b-c---5b1d694462fbb9af324bb0ed2a08d755",
+ "-a0-34a___f": "-a0-34a___f--e99d667fe0ceff9363b011302ac3f508",
+ ".": ".--12cd2fe5f9c81510bf687df3b6461cb1",
+ "123": "123--e5bcdf25b52ca483d65894eae427ccff",
+ "1a2b3c": "1a2b3c--165cab18879cee9a48ae4cbb5fdd39a8",
+ ":)": ":)--2f61aa454a9e7fd205da87e665dff51b",
+ ":\`(": ":\`(--612466e663a46fe230e6db648089b4c4",
+ ":hover": ":hover--af8b669c2dc29371d450d428f0bfa5d2",
+ ":hover:focus:active": ":hover:focus:active--5c55d7a925c8ee5de2e8f175badce4d6",
+ "<><<<>><>": "<><<<>><>--ac5886bfd5b1a8264bdda01deaf52762",
+ "
": "
--c168cd4e00ec053d5bd509da80f5db38",
+ "?": "?--4f09eb0a56c6b8f25f7ef4def006df7e",
+ "@": "@--254139a6858615f890093da92bb4c90b",
+ "B&W?": "B&W?--8c20b8856e47b8157bf47451b1b6d9a6",
+ "[attr=value]": "[attr=value]--db83b30c2535d713bd9f8fd195909f24",
+ "_": "_--f18cdd3b2ff360c3f4c10cc7559ff003",
+ "_test": "_test--d745495d407559ef605c9072243801fd",
+ "className": "className--eab624d1bc6b9c6b6a4278d1030dd690",
+ "f!o!o": "f!o!o--ea3b21fd9d4327fbc9d8b949a2bd5823",
+ "f'o'o": "f'o'o--95fe160ec21a5b70221e47b09b21fcd2",
+ "f*o*o": "f*o*o--a5f60f217da867c314860c5b2e28bbfd",
+ "f+o+o": "f+o+o--1e99689a1b3985adff358f3bd4aea7ed",
+ "f/o/o": "f/o/o--5de918433a006304ca487065b8626dd4",
+ "f\\\\o\\\\o": "f\\\\o\\\\o--e9ae2e1857289425acfa40a3f741babd",
+ "foo.bar": "foo.bar--e1dfb05dd5c7c36228cc87fe2cd0c6b1",
+ "foo/bar": "foo/bar--5b852e67587217ab19651f30a9b4df53",
+ "foo/bar/baz": "foo/bar/baz--d917a2cf9531290fbf3aa43e0cc0520f",
+ "foo\\\\bar": "foo\\\\bar--6cf70ff94feb1257af10e9ddcc47d54f",
+ "foo\\\\bar\\\\baz": "foo\\\\bar\\\\baz--1900aa5b4b5b2443299cc5e8afa9b3b4",
+ "f~o~o": "f~o~o--b9707d2eae11417a88a3f638b64eca30",
+ "m_x_@": "m_x_@--de463fc45a1e6dd0ed23f26a568f1d61",
+ "someId": "someId--a0ce220cc9bbb1ee0e85cc0d1f0c6aa9",
+ "subClass": "subClass--2c82998be8a2b2e94ad7be56c9e685cd",
+ "test": "test--307c32aa793aaec9aecded85a9fdd448",
+ "{}": "{}--6db4a8e6a78415e8209253db0c3dd7c5",
+ "©": "©--074c8458dd077a052783bb5f4c5b5911",
+ "“‘’”": "“‘’”--00f526c32cd5eec8f5de2965f2ca9457",
+ "⌘⌥": "⌘⌥--c42685a7cfeb3b510a6d8169d58bf02d",
+ "☺☃": "☺☃--0ea31e7c348b5949a05bce4eebcb59eb",
+ "♥": "♥--37952b59a9aa684be1d91192f863babf",
+ "𝄞♪♩♫♬": "𝄞♪♩♫♬--ece85fb9868788feab6a8f1259b9ff9d",
+ "💩": "💩--1c19fe6dd9ca556af34bbda8a2cbbbdf",
+}
+`;
+
+exports[`modules should respects hashPrefix option with localIdentName option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".test--307c32aa793aaec9aecded85a9fdd448 {
+ background: red;
+}
+
+._test--d745495d407559ef605c9072243801fd {
+ background: blue;
+}
+
+.className--eab624d1bc6b9c6b6a4278d1030dd690 {
+ background: red;
+}
+
+#someId--a0ce220cc9bbb1ee0e85cc0d1f0c6aa9 {
+ background: green;
+}
+
+.className--eab624d1bc6b9c6b6a4278d1030dd690 .subClass--2c82998be8a2b2e94ad7be56c9e685cd {
+ color: green;
+}
+
+#someId--a0ce220cc9bbb1ee0e85cc0d1f0c6aa9 .subClass--2c82998be8a2b2e94ad7be56c9e685cd {
+ color: blue;
+}
+
+.-a0-34a___f--e99d667fe0ceff9363b011302ac3f508 {
+ color: red;
+}
+
+.m_x_\\\\@--de463fc45a1e6dd0ed23f26a568f1d61 {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+.B\\\\&W\\\\?--8c20b8856e47b8157bf47451b1b6d9a6 {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=\\":\`(\\" */
+.\\\\3A \\\\\`\\\\(--612466e663a46fe230e6db648089b4c4 {
+ color: aqua;
+}
+
+/* matches elements with class=\\"1a2b3c\\" */
+.\\\\31 a2b3c--165cab18879cee9a48ae4cbb5fdd39a8 {
+ color: aliceblue;
+}
+
+/* matches the element with id=\\"#fake-id\\" */
+#\\\\#fake-id--a0d1d29b3c920aa3985fb11586f994e6 {
+ color: antiquewhite;
+}
+
+/* matches the element with id=\\"-a-b-c-\\" */
+#-a-b-c---5b1d694462fbb9af324bb0ed2a08d755 {
+ color: azure;
+}
+
+/* matches the element with id=\\"©\\" */
+#©--074c8458dd077a052783bb5f4c5b5911 {
+ color: black;
+}
+
+.♥--37952b59a9aa684be1d91192f863babf { background: lime; }
+.©--074c8458dd077a052783bb5f4c5b5911 { background: lime; }
+.“‘’”--00f526c32cd5eec8f5de2965f2ca9457 { background: lime; }
+.☺☃--0ea31e7c348b5949a05bce4eebcb59eb { background: lime; }
+.⌘⌥--c42685a7cfeb3b510a6d8169d58bf02d { background: lime; }
+.𝄞♪♩♫♬--ece85fb9868788feab6a8f1259b9ff9d { background: lime; }
+.💩--1c19fe6dd9ca556af34bbda8a2cbbbdf { background: lime; }
+.\\\\?--4f09eb0a56c6b8f25f7ef4def006df7e { background: lime; }
+.\\\\@--254139a6858615f890093da92bb4c90b { background: lime; }
+.\\\\.--12cd2fe5f9c81510bf687df3b6461cb1 { background: lime; }
+.\\\\3A \\\\)--2f61aa454a9e7fd205da87e665dff51b { background: lime; }
+.\\\\3A \\\\\`\\\\(--612466e663a46fe230e6db648089b4c4 { background: lime; }
+.\\\\31 23--e5bcdf25b52ca483d65894eae427ccff { background: lime; }
+.\\\\31 a2b3c--165cab18879cee9a48ae4cbb5fdd39a8 { background: lime; }
+.\\\\
--c168cd4e00ec053d5bd509da80f5db38 { background: lime; }
+.\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\>--ac5886bfd5b1a8264bdda01deaf52762 { background: lime; }
+.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\.--937528d96919903e5a5172d04ced259a { background: lime; }
+.\\\\#--8caa1febb853c79bc5740a51d69b0603 { background: lime; }
+.\\\\#\\\\#--e6e70cede894cf8ecef86891b00438fa { background: lime; }
+.\\\\#\\\\.\\\\#\\\\.\\\\#--f93b20473b91262c9634348506fe36fe { background: lime; }
+.\\\\_--f18cdd3b2ff360c3f4c10cc7559ff003 { background: lime; }
+.\\\\{\\\\}--6db4a8e6a78415e8209253db0c3dd7c5 { background: lime; }
+.\\\\#fake\\\\-id--a0d1d29b3c920aa3985fb11586f994e6 { background: lime; }
+.foo\\\\.bar--e1dfb05dd5c7c36228cc87fe2cd0c6b1 { background: lime; }
+.\\\\3A hover--af8b669c2dc29371d450d428f0bfa5d2 { background: lime; }
+.\\\\3A hover\\\\3A focus\\\\3A active--5c55d7a925c8ee5de2e8f175badce4d6 { background: lime; }
+.\\\\[attr\\\\=value\\\\]--db83b30c2535d713bd9f8fd195909f24 { background: lime; }
+.f\\\\/o\\\\/o--5de918433a006304ca487065b8626dd4 { background: lime; }
+.f\\\\\\\\o\\\\\\\\o--e9ae2e1857289425acfa40a3f741babd { background: lime; }
+.f\\\\*o\\\\*o--a5f60f217da867c314860c5b2e28bbfd { background: lime; }
+.f\\\\!o\\\\!o--ea3b21fd9d4327fbc9d8b949a2bd5823 { background: lime; }
+.f\\\\'o\\\\'o--95fe160ec21a5b70221e47b09b21fcd2 { background: lime; }
+.f\\\\~o\\\\~o--b9707d2eae11417a88a3f638b64eca30 { background: lime; }
+.f\\\\+o\\\\+o--1e99689a1b3985adff358f3bd4aea7ed { background: lime; }
+
+.foo\\\\/bar--5b852e67587217ab19651f30a9b4df53 {
+ background: hotpink;
+}
+
+.foo\\\\\\\\bar--6cf70ff94feb1257af10e9ddcc47d54f {
+ background: hotpink;
+}
+
+.foo\\\\/bar\\\\/baz--d917a2cf9531290fbf3aa43e0cc0520f {
+ background: hotpink;
+}
+
+.foo\\\\\\\\bar\\\\\\\\baz--1900aa5b4b5b2443299cc5e8afa9b3b4 {
+ background: hotpink;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should respects hashPrefix option with localIdentName option: warnings 1`] = `Array []`;
+
+exports[`modules should respects localIdentName option: errors 1`] = `Array []`;
+
+exports[`modules should respects localIdentName option: locals 1`] = `
+Object {
+ "#": "localIdentName--#--O8Yw6",
+ "##": "localIdentName--##--3er0D",
+ "#.#.#": "localIdentName--#.#.#--22RlZ",
+ "#fake-id": "localIdentName--#fake-id--3i_zU",
+ "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.": "localIdentName--++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.--3hmdG",
+ "-a-b-c-": "localIdentName---a-b-c---1cY1s",
+ "-a0-34a___f": "localIdentName---a0-34a___f--3RHUZ",
+ ".": "localIdentName--.--nfd9M",
+ "123": "localIdentName--123--3JQcZ",
+ "1a2b3c": "localIdentName--1a2b3c--3IsxV",
+ ":)": "localIdentName--:)--3EKgI",
+ ":\`(": "localIdentName--:\`(--3oWIz",
+ ":hover": "localIdentName--:hover--B2why",
+ ":hover:focus:active": "localIdentName--:hover:focus:active--3R7r5",
+ "<><<<>><>": "localIdentName--<><<<>><>--Tr9vN",
+ "
": "localIdentName--
--3Lowm",
+ "?": "localIdentName--?--mRRxx",
+ "@": "localIdentName--@--3ZlTE",
+ "B&W?": "localIdentName--B&W?--3d3wg",
+ "[attr=value]": "localIdentName--[attr=value]--3GgRc",
+ "_": "localIdentName--_--2V6oB",
+ "_test": "localIdentName--_test--3Q--B",
+ "className": "localIdentName--className--3wBIH",
+ "f!o!o": "localIdentName--f!o!o--2pDEJ",
+ "f'o'o": "localIdentName--f'o'o--3297S",
+ "f*o*o": "localIdentName--f*o*o--MI6DP",
+ "f+o+o": "localIdentName--f+o+o--3aNwy",
+ "f/o/o": "localIdentName--f/o/o--jbPgr",
+ "f\\\\o\\\\o": "localIdentName--f\\\\o\\\\o--3x1WT",
+ "foo.bar": "localIdentName--foo.bar--2FVtF",
+ "foo/bar": "localIdentName--foo/bar--13Q-T",
+ "foo/bar/baz": "localIdentName--foo/bar/baz--1I8mG",
+ "foo\\\\bar": "localIdentName--foo\\\\bar--LKTPJ",
+ "foo\\\\bar\\\\baz": "localIdentName--foo\\\\bar\\\\baz--xcAsB",
+ "f~o~o": "localIdentName--f~o~o--1TY6B",
+ "m_x_@": "localIdentName--m_x_@--3SfN7",
+ "someId": "localIdentName--someId--mxosG",
+ "subClass": "localIdentName--subClass--3jIM-",
+ "test": "localIdentName--test--1Os7J",
+ "{}": "localIdentName--{}--2ZR3d",
+ "©": "localIdentName--©--3QaoF",
+ "“‘’”": "localIdentName--“‘’”--3xI9A",
+ "⌘⌥": "localIdentName--⌘⌥--1V-to",
+ "☺☃": "localIdentName--☺☃--uy8uv",
+ "♥": "localIdentName--♥--kO1_7",
+ "𝄞♪♩♫♬": "localIdentName--𝄞♪♩♫♬--1tfs0",
+ "💩": "localIdentName--💩--2Cl61",
+}
+`;
+
+exports[`modules should respects localIdentName option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".localIdentName--test--1Os7J {
+ background: red;
+}
+
+.localIdentName--_test--3Q--B {
+ background: blue;
+}
+
+.localIdentName--className--3wBIH {
+ background: red;
+}
+
+#localIdentName--someId--mxosG {
+ background: green;
+}
+
+.localIdentName--className--3wBIH .localIdentName--subClass--3jIM- {
+ color: green;
+}
+
+#localIdentName--someId--mxosG .localIdentName--subClass--3jIM- {
+ color: blue;
+}
+
+.localIdentName---a0-34a___f--3RHUZ {
+ color: red;
+}
+
+.localIdentName--m_x_\\\\@--3SfN7 {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+.localIdentName--B\\\\&W\\\\?--3d3wg {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=\\":\`(\\" */
+.localIdentName--\\\\3A \\\\\`\\\\(--3oWIz {
+ color: aqua;
+}
+
+/* matches elements with class=\\"1a2b3c\\" */
+.localIdentName--\\\\31 a2b3c--3IsxV {
+ color: aliceblue;
+}
+
+/* matches the element with id=\\"#fake-id\\" */
+#localIdentName--\\\\#fake-id--3i_zU {
+ color: antiquewhite;
+}
+
+/* matches the element with id=\\"-a-b-c-\\" */
+#localIdentName---a-b-c---1cY1s {
+ color: azure;
+}
+
+/* matches the element with id=\\"©\\" */
+#localIdentName--©--3QaoF {
+ color: black;
+}
+
+.localIdentName--♥--kO1_7 { background: lime; }
+.localIdentName--©--3QaoF { background: lime; }
+.localIdentName--“‘’”--3xI9A { background: lime; }
+.localIdentName--☺☃--uy8uv { background: lime; }
+.localIdentName--⌘⌥--1V-to { background: lime; }
+.localIdentName--𝄞♪♩♫♬--1tfs0 { background: lime; }
+.localIdentName--💩--2Cl61 { background: lime; }
+.localIdentName--\\\\?--mRRxx { background: lime; }
+.localIdentName--\\\\@--3ZlTE { background: lime; }
+.localIdentName--\\\\.--nfd9M { background: lime; }
+.localIdentName--\\\\3A \\\\)--3EKgI { background: lime; }
+.localIdentName--\\\\3A \\\\\`\\\\(--3oWIz { background: lime; }
+.localIdentName--\\\\31 23--3JQcZ { background: lime; }
+.localIdentName--\\\\31 a2b3c--3IsxV { background: lime; }
+.localIdentName--\\\\
--3Lowm { background: lime; }
+.localIdentName--\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\>--Tr9vN { background: lime; }
+.localIdentName--\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\.--3hmdG { background: lime; }
+.localIdentName--\\\\#--O8Yw6 { background: lime; }
+.localIdentName--\\\\#\\\\#--3er0D { background: lime; }
+.localIdentName--\\\\#\\\\.\\\\#\\\\.\\\\#--22RlZ { background: lime; }
+.localIdentName--\\\\_--2V6oB { background: lime; }
+.localIdentName--\\\\{\\\\}--2ZR3d { background: lime; }
+.localIdentName--\\\\#fake\\\\-id--3i_zU { background: lime; }
+.localIdentName--foo\\\\.bar--2FVtF { background: lime; }
+.localIdentName--\\\\3A hover--B2why { background: lime; }
+.localIdentName--\\\\3A hover\\\\3A focus\\\\3A active--3R7r5 { background: lime; }
+.localIdentName--\\\\[attr\\\\=value\\\\]--3GgRc { background: lime; }
+.localIdentName--f\\\\/o\\\\/o--jbPgr { background: lime; }
+.localIdentName--f\\\\\\\\o\\\\\\\\o--3x1WT { background: lime; }
+.localIdentName--f\\\\*o\\\\*o--MI6DP { background: lime; }
+.localIdentName--f\\\\!o\\\\!o--2pDEJ { background: lime; }
+.localIdentName--f\\\\'o\\\\'o--3297S { background: lime; }
+.localIdentName--f\\\\~o\\\\~o--1TY6B { background: lime; }
+.localIdentName--f\\\\+o\\\\+o--3aNwy { background: lime; }
+
+.localIdentName--foo\\\\/bar--13Q-T {
+ background: hotpink;
+}
+
+.localIdentName--foo\\\\\\\\bar--LKTPJ {
+ background: hotpink;
+}
+
+.localIdentName--foo\\\\/bar\\\\/baz--1I8mG {
+ background: hotpink;
+}
+
+.localIdentName--foo\\\\\\\\bar\\\\\\\\baz--xcAsB {
+ background: hotpink;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should respects localIdentName option: warnings 1`] = `Array []`;
+
+exports[`modules should respects path in localIdentName option: errors 1`] = `Array []`;
+
+exports[`modules should respects path in localIdentName option: locals 1`] = `
+Object {
+ "#": "fixtures-modules-localIdentName__#",
+ "##": "fixtures-modules-localIdentName__##",
+ "#.#.#": "fixtures-modules-localIdentName__#.#.#",
+ "#fake-id": "fixtures-modules-localIdentName__#fake-id",
+ "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.": "fixtures-modules-localIdentName__++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.",
+ "-a-b-c-": "fixtures-modules-localIdentName__-a-b-c-",
+ "-a0-34a___f": "fixtures-modules-localIdentName__-a0-34a___f",
+ ".": "fixtures-modules-localIdentName__.",
+ "123": "fixtures-modules-localIdentName__123",
+ "1a2b3c": "fixtures-modules-localIdentName__1a2b3c",
+ ":)": "fixtures-modules-localIdentName__:)",
+ ":\`(": "fixtures-modules-localIdentName__:\`(",
+ ":hover": "fixtures-modules-localIdentName__:hover",
+ ":hover:focus:active": "fixtures-modules-localIdentName__:hover:focus:active",
+ "<><<<>><>": "fixtures-modules-localIdentName__<><<<>><>",
+ "
": "fixtures-modules-localIdentName__
",
+ "?": "fixtures-modules-localIdentName__?",
+ "@": "fixtures-modules-localIdentName__@",
+ "B&W?": "fixtures-modules-localIdentName__B&W?",
+ "[attr=value]": "fixtures-modules-localIdentName__[attr=value]",
+ "_": "fixtures-modules-localIdentName___",
+ "_test": "fixtures-modules-localIdentName___test",
+ "className": "fixtures-modules-localIdentName__className",
+ "f!o!o": "fixtures-modules-localIdentName__f!o!o",
+ "f'o'o": "fixtures-modules-localIdentName__f'o'o",
+ "f*o*o": "fixtures-modules-localIdentName__f*o*o",
+ "f+o+o": "fixtures-modules-localIdentName__f+o+o",
+ "f/o/o": "fixtures-modules-localIdentName__f/o/o",
+ "f\\\\o\\\\o": "fixtures-modules-localIdentName__f\\\\o\\\\o",
+ "foo.bar": "fixtures-modules-localIdentName__foo.bar",
+ "foo/bar": "fixtures-modules-localIdentName__foo/bar",
+ "foo/bar/baz": "fixtures-modules-localIdentName__foo/bar/baz",
+ "foo\\\\bar": "fixtures-modules-localIdentName__foo\\\\bar",
+ "foo\\\\bar\\\\baz": "fixtures-modules-localIdentName__foo\\\\bar\\\\baz",
+ "f~o~o": "fixtures-modules-localIdentName__f~o~o",
+ "m_x_@": "fixtures-modules-localIdentName__m_x_@",
+ "someId": "fixtures-modules-localIdentName__someId",
+ "subClass": "fixtures-modules-localIdentName__subClass",
+ "test": "fixtures-modules-localIdentName__test",
+ "{}": "fixtures-modules-localIdentName__{}",
+ "©": "fixtures-modules-localIdentName__©",
+ "“‘’”": "fixtures-modules-localIdentName__“‘’”",
+ "⌘⌥": "fixtures-modules-localIdentName__⌘⌥",
+ "☺☃": "fixtures-modules-localIdentName__☺☃",
+ "♥": "fixtures-modules-localIdentName__♥",
+ "𝄞♪♩♫♬": "fixtures-modules-localIdentName__𝄞♪♩♫♬",
+ "💩": "fixtures-modules-localIdentName__💩",
+}
+`;
+
+exports[`modules should respects path in localIdentName option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".fixtures-modules-localIdentName__test {
+ background: red;
+}
+
+.fixtures-modules-localIdentName___test {
+ background: blue;
+}
+
+.fixtures-modules-localIdentName__className {
+ background: red;
+}
+
+#fixtures-modules-localIdentName__someId {
+ background: green;
+}
+
+.fixtures-modules-localIdentName__className .fixtures-modules-localIdentName__subClass {
+ color: green;
+}
+
+#fixtures-modules-localIdentName__someId .fixtures-modules-localIdentName__subClass {
+ color: blue;
+}
+
+.fixtures-modules-localIdentName__-a0-34a___f {
+ color: red;
+}
+
+.fixtures-modules-localIdentName__m_x_\\\\@ {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+.fixtures-modules-localIdentName__B\\\\&W\\\\? {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=\\":\`(\\" */
+.fixtures-modules-localIdentName__\\\\3A \\\\\`\\\\( {
+ color: aqua;
+}
+
+/* matches elements with class=\\"1a2b3c\\" */
+.fixtures-modules-localIdentName__\\\\31 a2b3c {
+ color: aliceblue;
+}
+
+/* matches the element with id=\\"#fake-id\\" */
+#fixtures-modules-localIdentName__\\\\#fake-id {
+ color: antiquewhite;
+}
+
+/* matches the element with id=\\"-a-b-c-\\" */
+#fixtures-modules-localIdentName__-a-b-c- {
+ color: azure;
+}
+
+/* matches the element with id=\\"©\\" */
+#fixtures-modules-localIdentName__© {
+ color: black;
+}
+
+.fixtures-modules-localIdentName__♥ { background: lime; }
+.fixtures-modules-localIdentName__© { background: lime; }
+.fixtures-modules-localIdentName__“‘’” { background: lime; }
+.fixtures-modules-localIdentName__☺☃ { background: lime; }
+.fixtures-modules-localIdentName__⌘⌥ { background: lime; }
+.fixtures-modules-localIdentName__𝄞♪♩♫♬ { background: lime; }
+.fixtures-modules-localIdentName__💩 { background: lime; }
+.fixtures-modules-localIdentName__\\\\? { background: lime; }
+.fixtures-modules-localIdentName__\\\\@ { background: lime; }
+.fixtures-modules-localIdentName__\\\\. { background: lime; }
+.fixtures-modules-localIdentName__\\\\3A \\\\) { background: lime; }
+.fixtures-modules-localIdentName__\\\\3A \\\\\`\\\\( { background: lime; }
+.fixtures-modules-localIdentName__\\\\31 23 { background: lime; }
+.fixtures-modules-localIdentName__\\\\31 a2b3c { background: lime; }
+.fixtures-modules-localIdentName__\\\\
{ background: lime; }
+.fixtures-modules-localIdentName__\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\> { background: lime; }
+.fixtures-modules-localIdentName__\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\. { background: lime; }
+.fixtures-modules-localIdentName__\\\\# { background: lime; }
+.fixtures-modules-localIdentName__\\\\#\\\\# { background: lime; }
+.fixtures-modules-localIdentName__\\\\#\\\\.\\\\#\\\\.\\\\# { background: lime; }
+.fixtures-modules-localIdentName__\\\\_ { background: lime; }
+.fixtures-modules-localIdentName__\\\\{\\\\} { background: lime; }
+.fixtures-modules-localIdentName__\\\\#fake\\\\-id { background: lime; }
+.fixtures-modules-localIdentName__foo\\\\.bar { background: lime; }
+.fixtures-modules-localIdentName__\\\\3A hover { background: lime; }
+.fixtures-modules-localIdentName__\\\\3A hover\\\\3A focus\\\\3A active { background: lime; }
+.fixtures-modules-localIdentName__\\\\[attr\\\\=value\\\\] { background: lime; }
+.fixtures-modules-localIdentName__f\\\\/o\\\\/o { background: lime; }
+.fixtures-modules-localIdentName__f\\\\\\\\o\\\\\\\\o { background: lime; }
+.fixtures-modules-localIdentName__f\\\\*o\\\\*o { background: lime; }
+.fixtures-modules-localIdentName__f\\\\!o\\\\!o { background: lime; }
+.fixtures-modules-localIdentName__f\\\\'o\\\\'o { background: lime; }
+.fixtures-modules-localIdentName__f\\\\~o\\\\~o { background: lime; }
+.fixtures-modules-localIdentName__f\\\\+o\\\\+o { background: lime; }
+
+.fixtures-modules-localIdentName__foo\\\\/bar {
+ background: hotpink;
+}
+
+.fixtures-modules-localIdentName__foo\\\\\\\\bar {
+ background: hotpink;
+}
+
+.fixtures-modules-localIdentName__foo\\\\/bar\\\\/baz {
+ background: hotpink;
+}
+
+.fixtures-modules-localIdentName__foo\\\\\\\\bar\\\\\\\\baz {
+ background: hotpink;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should respects path in localIdentName option: warnings 1`] = `Array []`;
+
+exports[`modules should saves underscore prefix in exported class names with localIdentName option: errors 1`] = `Array []`;
+
+exports[`modules should saves underscore prefix in exported class names with localIdentName option: locals 1`] = `
+Object {
+ "#": "#",
+ "##": "##",
+ "#.#.#": "#.#.#",
+ "#fake-id": "#fake-id",
+ "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.": "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.",
+ "-a-b-c-": "-a-b-c-",
+ "-a0-34a___f": "-a0-34a___f",
+ ".": ".",
+ "123": "123",
+ "1a2b3c": "1a2b3c",
+ ":)": ":)",
+ ":\`(": ":\`(",
+ ":hover": ":hover",
+ ":hover:focus:active": ":hover:focus:active",
+ "<><<<>><>": "<><<<>><>",
+ "
": "
",
+ "?": "?",
+ "@": "@",
+ "B&W?": "B&W?",
+ "[attr=value]": "[attr=value]",
+ "_": "_",
+ "_test": "_test",
+ "className": "className",
+ "f!o!o": "f!o!o",
+ "f'o'o": "f'o'o",
+ "f*o*o": "f*o*o",
+ "f+o+o": "f+o+o",
+ "f/o/o": "f/o/o",
+ "f\\\\o\\\\o": "f\\\\o\\\\o",
+ "foo.bar": "foo.bar",
+ "foo/bar": "foo/bar",
+ "foo/bar/baz": "foo/bar/baz",
+ "foo\\\\bar": "foo\\\\bar",
+ "foo\\\\bar\\\\baz": "foo\\\\bar\\\\baz",
+ "f~o~o": "f~o~o",
+ "m_x_@": "m_x_@",
+ "someId": "someId",
+ "subClass": "subClass",
+ "test": "test",
+ "{}": "{}",
+ "©": "©",
+ "“‘’”": "“‘’”",
+ "⌘⌥": "⌘⌥",
+ "☺☃": "☺☃",
+ "♥": "♥",
+ "𝄞♪♩♫♬": "𝄞♪♩♫♬",
+ "💩": "💩",
+}
+`;
+
+exports[`modules should saves underscore prefix in exported class names with localIdentName option: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".test {
+ background: red;
+}
+
+._test {
+ background: blue;
+}
+
+.className {
+ background: red;
+}
+
+#someId {
+ background: green;
+}
+
+.className .subClass {
+ color: green;
+}
+
+#someId .subClass {
+ color: blue;
+}
+
+.-a0-34a___f {
+ color: red;
+}
+
+.m_x_\\\\@ {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+.B\\\\&W\\\\? {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=\\":\`(\\" */
+.\\\\3A \\\\\`\\\\( {
+ color: aqua;
+}
+
+/* matches elements with class=\\"1a2b3c\\" */
+.\\\\31 a2b3c {
+ color: aliceblue;
+}
+
+/* matches the element with id=\\"#fake-id\\" */
+#\\\\#fake-id {
+ color: antiquewhite;
+}
+
+/* matches the element with id=\\"-a-b-c-\\" */
+#-a-b-c- {
+ color: azure;
+}
+
+/* matches the element with id=\\"©\\" */
+#© {
+ color: black;
+}
+
+.♥ { background: lime; }
+.© { background: lime; }
+.“‘’” { background: lime; }
+.☺☃ { background: lime; }
+.⌘⌥ { background: lime; }
+.𝄞♪♩♫♬ { background: lime; }
+.💩 { background: lime; }
+.\\\\? { background: lime; }
+.\\\\@ { background: lime; }
+.\\\\. { background: lime; }
+.\\\\3A \\\\) { background: lime; }
+.\\\\3A \\\\\`\\\\( { background: lime; }
+.\\\\31 23 { background: lime; }
+.\\\\31 a2b3c { background: lime; }
+.\\\\
{ background: lime; }
+.\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\> { background: lime; }
+.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\. { background: lime; }
+.\\\\# { background: lime; }
+.\\\\#\\\\# { background: lime; }
+.\\\\#\\\\.\\\\#\\\\.\\\\# { background: lime; }
+.\\\\_ { background: lime; }
+.\\\\{\\\\} { background: lime; }
+.\\\\#fake\\\\-id { background: lime; }
+.foo\\\\.bar { background: lime; }
+.\\\\3A hover { background: lime; }
+.\\\\3A hover\\\\3A focus\\\\3A active { background: lime; }
+.\\\\[attr\\\\=value\\\\] { background: lime; }
+.f\\\\/o\\\\/o { background: lime; }
+.f\\\\\\\\o\\\\\\\\o { background: lime; }
+.f\\\\*o\\\\*o { background: lime; }
+.f\\\\!o\\\\!o { background: lime; }
+.f\\\\'o\\\\'o { background: lime; }
+.f\\\\~o\\\\~o { background: lime; }
+.f\\\\+o\\\\+o { background: lime; }
+
+.foo\\\\/bar {
+ background: hotpink;
+}
+
+.foo\\\\\\\\bar {
+ background: hotpink;
+}
+
+.foo\\\\/bar\\\\/baz {
+ background: hotpink;
+}
+
+.foo\\\\\\\\bar\\\\\\\\baz {
+ background: hotpink;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`modules should saves underscore prefix in exported class names with localIdentName option: warnings 1`] = `Array []`;
diff --git a/test/__snapshots__/onlyLocals-option.test.js.snap b/test/__snapshots__/onlyLocals-option.test.js.snap
new file mode 100644
index 00000000..3e3eff6f
--- /dev/null
+++ b/test/__snapshots__/onlyLocals-option.test.js.snap
@@ -0,0 +1,64 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`modules true (mode: local): errors 1`] = `Array []`;
+
+exports[`modules true (mode: local): module 1`] = `
+"// Exports
+module.exports = {
+ \\"v-def\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\")[\\"v-def\\"] + \\"\\",
+ \\"v-other\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\")[\\"v-other\\"] + \\"\\",
+ \\"s-white\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\")[\\"s-white\\"] + \\"\\",
+ \\"m-small\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\")[\\"m-small\\"] + \\"\\",
+ \\"v-something\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./something.css\\")[\\"v-something\\"] + \\"\\",
+ \\"v-foo\\": \\"blue\\",
+ \\"v-bar\\": \\"block\\",
+ \\"v-primary\\": \\"#BF4040\\",
+ \\"s-black\\": \\"black-selector\\",
+ \\"m-large\\": \\"(min-width: 960px)\\",
+ \\"v-ident\\": \\"validIdent\\",
+ \\"v-pre-defined-ident\\": \\"left\\",
+ \\"v-string\\": \\"'content'\\",
+ \\"v-string-1\\": \\"''\\",
+ \\"v-url\\": \\"url(https://www.exammple.com/images/my-background.png)\\",
+ \\"v-url-1\\": \\"url('https://www.exammple.com/images/my-background.png')\\",
+ \\"v-url-2\\": \\"url(\\\\\\"https://www.exammple.com/images/my-background.png\\\\\\")\\",
+ \\"v-integer\\": \\"100\\",
+ \\"v-integer-1\\": \\"-100\\",
+ \\"v-integer-2\\": \\"+100\\",
+ \\"v-number\\": \\".60\\",
+ \\"v-number-1\\": \\"-456.8\\",
+ \\"v-number-2\\": \\"-3.4e-2\\",
+ \\"v-dimension\\": \\"12px\\",
+ \\"v-percentage\\": \\"100%\\",
+ \\"v-hex\\": \\"#fff\\",
+ \\"v-function\\": \\"rgb(0,0,0)\\",
+ \\"v-unicode-range\\": \\"U+0025-00FF\\",
+ \\"ghi\\": \\"_ghi\\",
+ \\"class\\": \\"_class\\",
+ \\"other\\": \\"_other\\",
+ \\"other-other\\": \\"_other-other\\",
+ \\"green\\": \\"_green\\",
+ \\"foo\\": \\"_foo\\",
+ \\"simple\\": \\"_simple \\" + require(\\"-!../../../src/index.js??ref--4-0!./imported-simple.css\\")[\\"imported-simple\\"] + \\"\\",
+ \\"relative\\": \\"_relative \\" + require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\")[\\"imported-relative\\"] + \\"\\",
+ \\"top-relative\\": \\"_top-relative \\" + require(\\"-!../../../src/index.js??ref--4-0!../modules/top-relative.css\\")[\\"imported-relative\\"] + \\"\\",
+ \\"module\\": \\"_module \\" + require(\\"-!../../../src/index.js??ref--4-0!package/style.css\\")[\\"imported-module\\"] + \\"\\",
+ \\"alias\\": \\"_alias \\" + require(\\"-!../../../src/index.js??ref--4-0!aliasesComposes/alias.css\\")[\\"imported-alias\\"] + \\"\\",
+ \\"primary-selector\\": \\"_primary-selector\\",
+ \\"black-selector\\": \\"_black-selector\\",
+ \\"header\\": \\"_header\\",
+ \\"foobarbaz\\": \\"_foobarbaz\\"
+};"
+`;
+
+exports[`modules true (mode: local): values module 1`] = `
+"// Exports
+module.exports = {
+ \\"v-def\\": \\"red\\",
+ \\"v-other\\": \\"green\\",
+ \\"s-white\\": \\"white\\",
+ \\"m-small\\": \\"(min-width: 320px)\\"
+};"
+`;
+
+exports[`modules true (mode: local): warnings 1`] = `Array []`;
diff --git a/test/__snapshots__/sourceMap-option.test.js.snap b/test/__snapshots__/sourceMap-option.test.js.snap
new file mode 100644
index 00000000..43c55cae
--- /dev/null
+++ b/test/__snapshots__/sourceMap-option.test.js.snap
@@ -0,0 +1,377 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`sourceMap option false should not generate source map when source map is \`null\` from other loader: errors 1`] = `Array []`;
+
+exports[`sourceMap option false should not generate source map when source map is \`null\` from other loader: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class {
+ color: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`sourceMap option false should not generate source map when source map is \`null\` from other loader: warnings 1`] = `Array []`;
+
+exports[`sourceMap option false should not generate source map when source map is \`undefined\` from other loader: errors 1`] = `Array []`;
+
+exports[`sourceMap option false should not generate source map when source map is \`undefined\` from other loader: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class {
+ color: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`sourceMap option false should not generate source map when source map is \`undefined\` from other loader: warnings 1`] = `Array []`;
+
+exports[`sourceMap option false should not generate source map: errors 1`] = `Array []`;
+
+exports[`sourceMap option false should not generate source map: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class {
+ color: red;
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`sourceMap option false should not generate source map: warnings 1`] = `Array []`;
+
+exports[`sourceMap option should not generate sourceMap when source map is valid from other loader (\`sass-loader\`): errors 1`] = `Array []`;
+
+exports[`sourceMap option should not generate sourceMap when source map is valid from other loader (\`sass-loader\`): module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body {
+ font: 100% Helvetica, sans-serif;
+ color: #333;
+}",
+ "",
+ ],
+]
+`;
+
+exports[`sourceMap option should not generate sourceMap when source map is valid from other loader (\`sass-loader\`): warnings 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is \`null\` from other loader: errors 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is \`null\` from other loader: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class {
+ color: red;
+}
+",
+ "",
+ Object {
+ "file": "../../basic.css",
+ "mappings": "AAAA;EACE,UAAU;AACZ",
+ "names": Array [],
+ "sources": Array [
+ "../../basic.css",
+ ],
+ "sourcesContent": Array [
+ ".class {
+ color: red;
+}
+",
+ ],
+ "version": 3,
+ },
+ ],
+]
+`;
+
+exports[`sourceMap option true should generate source map when source map is \`null\` from other loader: warnings 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is \`undefined\` from other loader: errors 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is \`undefined\` from other loader: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class {
+ color: red;
+}
+",
+ "",
+ Object {
+ "file": "../../basic.css",
+ "mappings": "AAAA;EACE,UAAU;AACZ",
+ "names": Array [],
+ "sources": Array [
+ "../../basic.css",
+ ],
+ "sourcesContent": Array [
+ ".class {
+ color: red;
+}
+",
+ ],
+ "version": 3,
+ },
+ ],
+]
+`;
+
+exports[`sourceMap option true should generate source map when source map is \`undefined\` from other loader: warnings 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is valid and it is string from other loader: errors 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is valid and it is string from other loader: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class {
+ color: red;
+}
+",
+ "",
+ Object {
+ "file": "../../basic.css",
+ "mappings": "AAGA;EACE,UAAA;ACFF",
+ "names": Array [],
+ "sources": Array [
+ "source-map/basic.postcss.css",
+ "../../basic.css",
+ ],
+ "sourcesContent": Array [
+ "@custom-media --viewport-medium (width <= 50rem);
+@custom-selector :--heading h1, h2, h3, h4, h5, h6;
+
+:root {
+ --fontSize: 1rem;
+ --mainColor: #12345678;
+ --secondaryColor: lab(32.5 38.5 -47.6 / 90%);
+}
+
+html {
+ overflow: hidden auto;
+}
+
+@media (--viewport-medium) {
+ body {
+ color: var(--mainColor);
+ font-family: system-ui;
+ font-size: var(--fontSize);
+ line-height: calc(var(--fontSize) * 1.5);
+ overflow-wrap: break-word;
+ padding-inline: calc(var(--fontSize) / 2 + 1px);
+ }
+}
+
+:--heading {
+ margin-block: 0;
+}
+
+a {
+ color: rgb(0 0 100% / 90%);
+
+&:hover {
+ color: rebeccapurple;
+ }
+}
+",
+ ".class {
+ color: red;
+}
+",
+ ],
+ "version": 3,
+ },
+ ],
+]
+`;
+
+exports[`sourceMap option true should generate source map when source map is valid and it is string from other loader: warnings 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is valid from other loader (\`postcss-loader\`): errors 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is valid from other loader (\`postcss-loader\`): module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ":root {
+ --fontSize: 1rem;
+ --mainColor: rgba(18,52,86,0.47059);
+ --secondaryColor: rgba(102, 51, 153, 0.9);
+}
+
+html {
+ overflow-x: hidden;
+ overflow-y: auto;
+ overflow: hidden auto;
+}
+
+@media (max-width: 50rem) {
+ body {
+ color: rgba(18,52,86,0.47059);
+ color: var(--mainColor);
+ font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;
+ font-size: 1rem;
+ font-size: var(--fontSize);
+ line-height: calc(1rem * 1.5);
+ line-height: calc(var(--fontSize) * 1.5);
+ word-wrap: break-word;
+ padding-left: calc(1rem / 2 + 1px);
+ padding-right: calc(1rem / 2 + 1px);
+ padding-left: calc(var(--fontSize) / 2 + 1px);
+ padding-right: calc(var(--fontSize) / 2 + 1px);
+ }
+}
+
+h1,h2,h3,h4,h5,h6 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+a {
+ color: rgba(0, 0, 255, 0.9)
+}
+
+a:hover {
+ color: #639;
+ }
+",
+ "",
+ Object {
+ "file": "../../basic.postcss.css",
+ "mappings": "AAGA;EACE,gBAAgB;EAChB,mCAAsB;EACtB,yCAA4C;AAC9C;;AAEA;EACE,kBAAqB;EAArB,gBAAqB;EAArB,qBAAqB;AACvB;;AAEA;EACE;IACE,6BAAuB;IAAvB,uBAAuB;IACvB,iGAAsB;IACtB,eAA0B;IAA1B,0BAA0B;IAC1B,6BAAwC;IAAxC,wCAAwC;IACxC,qBAAyB;IACzB,kCAA+C;IAA/C,mCAA+C;IAA/C,6CAA+C;IAA/C,8CAA+C;EACjD;AACF;;AAEA;EACE,aAAe;EAAf,gBAAe;AACjB;;AAEA;EACE;AAKF;;AAHA;GACG,WAAoB;CACtB",
+ "names": Array [],
+ "sources": Array [
+ "../../basic.postcss.css",
+ ],
+ "sourcesContent": Array [
+ "@custom-media --viewport-medium (width <= 50rem);
+@custom-selector :--heading h1, h2, h3, h4, h5, h6;
+
+:root {
+ --fontSize: 1rem;
+ --mainColor: #12345678;
+ --secondaryColor: lab(32.5 38.5 -47.6 / 90%);
+}
+
+html {
+ overflow: hidden auto;
+}
+
+@media (--viewport-medium) {
+ body {
+ color: var(--mainColor);
+ font-family: system-ui;
+ font-size: var(--fontSize);
+ line-height: calc(var(--fontSize) * 1.5);
+ overflow-wrap: break-word;
+ padding-inline: calc(var(--fontSize) / 2 + 1px);
+ }
+}
+
+:--heading {
+ margin-block: 0;
+}
+
+a {
+ color: rgb(0 0 100% / 90%);
+
+&:hover {
+ color: rebeccapurple;
+ }
+}
+",
+ ],
+ "version": 3,
+ },
+ ],
+]
+`;
+
+exports[`sourceMap option true should generate source map when source map is valid from other loader (\`postcss-loader\`): warnings 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is valid from other loader (\`sass-loader\`): errors 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map when source map is valid from other loader (\`sass-loader\`): module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ "body {
+ font: 100% Helvetica, sans-serif;
+ color: #333;
+}",
+ "",
+ Object {
+ "file": "../../basic.scss",
+ "mappings": "AAGA;EACE,gCAAA;EACA,WAJc;ACEhB",
+ "names": Array [],
+ "sources": Array [
+ "source-map/basic.scss",
+ "../../basic.scss",
+ ],
+ "sourcesContent": Array [
+ "$font-stack: Helvetica, sans-serif;
+$primary-color: #333;
+
+body {
+ font: 100% $font-stack;
+ color: $primary-color;
+}
+",
+ "body {
+ font: 100% Helvetica, sans-serif;
+ color: #333;
+}",
+ ],
+ "version": 3,
+ },
+ ],
+]
+`;
+
+exports[`sourceMap option true should generate source map when source map is valid from other loader (\`sass-loader\`): warnings 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map: errors 1`] = `Array []`;
+
+exports[`sourceMap option true should generate source map: module (evaluated) 1`] = `
+Array [
+ Array [
+ 1,
+ ".class {
+ color: red;
+}
+",
+ "",
+ Object {
+ "file": "../../basic.css",
+ "mappings": "AAAA;EACE,UAAU;AACZ",
+ "names": Array [],
+ "sources": Array [
+ "../../basic.css",
+ ],
+ "sourcesContent": Array [
+ ".class {
+ color: red;
+}
+",
+ ],
+ "version": 3,
+ },
+ ],
+]
+`;
+
+exports[`sourceMap option true should generate source map: warnings 1`] = `Array []`;
diff --git a/test/__snapshots__/url-option.test.js.snap b/test/__snapshots__/url-option.test.js.snap
new file mode 100644
index 00000000..590afdb9
--- /dev/null
+++ b/test/__snapshots__/url-option.test.js.snap
@@ -0,0 +1,2703 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`url option Function: errors 1`] = `Array []`;
+
+exports[`url option Function: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ background: url(/webpack/public/path/img-from-imported.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".class {
+ background: url('./img.png');
+}
+
+.class {
+ background: url(\\"./img.png\\");
+}
+
+.class {
+ background: url(./img.png);
+}
+
+.class {
+ background: url(\\"./img.png#hash\\");
+}
+
+.class {
+ background: url(
+ \\"./img.png\\"
+ );
+}
+
+.class {
+ background: green url( './img.png' ) xyz;
+}
+
+.class {
+ background: green url( \\"./img.png\\" ) xyz;
+}
+
+.class {
+ background: green url( ./img.png ) xyz;
+}
+
+.class {
+ background: green url(~package/img.png) url(./other-img.png) xyz;
+}
+
+.class {
+ background: green url( \\"./img img.png\\" ) xyz;
+}
+
+.class {
+ background: green url( './img img.png' ) xyz;
+}
+
+.class {
+ background: green url(/img.png) xyz;
+}
+
+.class {
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8, \\");
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\");
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8, #filter');
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');
+}
+
+.highlight {
+ filter: url(#highlight);
+}
+
+.highlight {
+ filter: url('#line-marker');
+}
+
+@font-face {
+ src: url(/webpack/public/path/font.woff) format('woff'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot) format('eot'),
+ url(/webpack/public/path/font.ttf) format('truetype'),
+ url(\\"/webpack/public/path/font with spaces.eot\\") format(\\"embedded-opentype\\"),
+ url(/webpack/public/path/font.svg#svgFontName) format('svg'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot?#iefix) format('embedded-opentype'),
+ url(\\"/webpack/public/path/font with spaces.eot?#iefix\\") format('embedded-opentype');
+}
+
+@media (min-width: 500px) {
+ body {
+ background: url(\\"./img.png\\");
+ }
+}
+
+a {
+ content: \\"do not use url(path)\\";
+}
+
+b {
+ content: 'do not \\"use\\" url(path)';
+}
+
+@keyframes anim {
+ background: green url('./img.png') xyz;
+}
+
+.a {
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+.a {
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+.class {
+ background: green url() xyz;
+}
+
+.class {
+ background: green url('') xyz;
+}
+
+.class {
+ background: green url(\\"\\") xyz;
+}
+
+.class {
+ background: green url(' ') xyz;
+}
+
+.class {
+ background: green url(
+ ) xyz;
+}
+
+.class {
+ background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: url(\\"./img.png?foo\\");
+}
+
+.class {
+ background: url(\\"./img.png?foo=bar\\");
+}
+
+.class {
+ background: url(\\"./img.png?foo=bar#hash\\");
+}
+
+.class {
+ background: url(\\"./img.png?foo=bar#hash\\");
+}
+
+.class {
+ background: url(\\"./img.png?\\");
+}
+
+.class {
+ background-image: url('./img.png') url(\\"data:image/svg+xml;charset=utf-8, \\") url('./img.png');
+}
+
+.class {
+ background: ___CSS_LOADER_URL___;
+ background: ___CSS_LOADER_URL___INDEX___;
+ background: ___CSS_LOADER_URL___99999___;
+ background: ___CSS_LOADER_IMPORT___;
+ background: ___CSS_LOADER_IMPORT___INDEX___;
+ background: ___CSS_LOADER_IMPORT___99999___;
+}
+
+.pure-url {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.not-resolved {
+ background: url('/img-simple.png');
+}
+
+.above-below {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.tilde {
+ background: url('~package/img.png');
+}
+
+.aliases {
+ background: url('~aliasesImg/img.png') ;
+}
+
+a {
+ background: url(./nested/img.png);
+}
+
+a {
+ background: url(nested/img.png);
+}
+
+@font-face {
+ src: url(\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\");
+}
+
+.class {
+ /* Broken */
+ background-image: -webkit-image-set();
+ background-image: -webkit-image-set('');
+ background-image: image-set();
+ background-image: image-set('');
+ background-image: image-set(\\"\\");
+ background-image: image-set(\\"\\" 1x);
+ background-image: image-set(url());
+ background-image: image-set(
+ url()
+ );
+ background-image: image-set(URL());
+ background-image: image-set(url(''));
+ background-image: image-set(url(\\"\\"));
+ background-image: image-set(url('') 1x);
+ background-image: image-set(1x);
+ background-image: image-set(
+ 1x
+ );
+ background: image-set(calc(1rem + 1px) 1x);
+
+ /* Strings */
+ background-image: -webkit-image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"./img img.png\\" 1x, \\"./img img.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x),
+ image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(
+ \\"/webpack/public/path/img1x.png\\" 1x,
+ \\"/webpack/public/path/img2x.png\\" 2x,
+ \\"/webpack/public/path/img3x.png\\" 600dpi
+ );
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png#hash\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png?#iefix\\" 1x);
+
+ /* With \`url\` function */
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: -webkit-image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x,
+ url(/webpack/public/path/img2x.png) 2x,
+ url(/webpack/public/path/img3x.png) 600dpi
+ );
+ background-image: image-set(url(\\"./img img.png\\") 1x, url(\\"./img img.png\\") 2x);
+
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`url option Function: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./font.woff\\"));
+var ___CSS_LOADER_URL___1___ = getUrl(require(\\"./font.woff2\\"));
+var ___CSS_LOADER_URL___2___ = getUrl(require(\\"./font.eot\\"));
+var ___CSS_LOADER_URL___3___ = getUrl(require(\\"package/font.ttf\\"));
+var ___CSS_LOADER_URL___4___ = getUrl(require(\\"./font with spaces.eot\\"));
+var ___CSS_LOADER_URL___5___ = getUrl(require(\\"./font.svg\\") + \\"#svgFontName\\");
+var ___CSS_LOADER_URL___6___ = getUrl(require(\\"./font.woff2?foo=bar\\"));
+var ___CSS_LOADER_URL___7___ = getUrl(require(\\"./font.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___8___ = getUrl(require(\\"./font with spaces.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___9___ = getUrl(require(\\"./img1x.png\\"));
+var ___CSS_LOADER_URL___10___ = getUrl(require(\\"./img2x.png\\"));
+var ___CSS_LOADER_URL___11___ = getUrl(require(\\"./img-simple.png\\"));
+var ___CSS_LOADER_URL___12___ = getUrl(require(\\"../url/img-simple.png\\"));
+var ___CSS_LOADER_URL___13___ = getUrl(require(\\"./img1x.png\\"), true);
+var ___CSS_LOADER_URL___14___ = getUrl(require(\\"./img2x.png\\"), true);
+var ___CSS_LOADER_URL___15___ = getUrl(require(\\"./img3x.png\\"), true);
+var ___CSS_LOADER_URL___16___ = getUrl(require(\\"./img1x.png?foo=bar\\"), true);
+var ___CSS_LOADER_URL___17___ = getUrl(require(\\"./img1x.png\\") + \\"#hash\\", true);
+var ___CSS_LOADER_URL___18___ = getUrl(require(\\"./img1x.png\\") + \\"?#iefix\\", true);
+var ___CSS_LOADER_URL___19___ = getUrl(require(\\"./img3x.png\\"));
+// Module
+exports.push([module.id, \\".class {\\\\n background: url('./img.png');\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(./img.png);\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\n \\\\\\"./img.png\\\\\\"\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background: green url( './img.png' ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\\\\\"./img.png\\\\\\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( ./img.png ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(~package/img.png) url(./other-img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\\\\\"./img img.png\\\\\\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( './img img.png' ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8, #filter');\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\" + ___CSS_LOADER_URL___0___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL___1___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___2___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL___3___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL___4___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL___5___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL___6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___7___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL___8___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\\\\\"./img.png\\\\\\");\\\\n }\\\\n}\\\\n\\\\na {\\\\n content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n background: green url('./img.png') xyz;\\\\n}\\\\n\\\\n.a {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___10___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___10___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(' ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\n ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?foo\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?foo=bar\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?foo=bar#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?foo=bar#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url('./img.png') url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\") url('./img.png');\\\\n}\\\\n\\\\n.class {\\\\n background: ___CSS_LOADER_URL___;\\\\n background: ___CSS_LOADER_URL___INDEX___;\\\\n background: ___CSS_LOADER_URL___99999___;\\\\n background: ___CSS_LOADER_IMPORT___;\\\\n background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n background: url(\\" + ___CSS_LOADER_URL___11___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL___12___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n background: url('~package/img.png');\\\\n}\\\\n\\\\n.aliases {\\\\n background: url('~aliasesImg/img.png') ;\\\\n}\\\\n\\\\na {\\\\n background: url(./nested/img.png);\\\\n}\\\\n\\\\na {\\\\n background: url(nested/img.png);\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n /* Broken */\\\\n background-image: -webkit-image-set();\\\\n background-image: -webkit-image-set('');\\\\n background-image: image-set();\\\\n background-image: image-set('');\\\\n background-image: image-set(\\\\\\"\\\\\\");\\\\n background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n background-image: image-set(url());\\\\n background-image: image-set(\\\\n url()\\\\n );\\\\n background-image: image-set(URL());\\\\n background-image: image-set(url(''));\\\\n background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n background-image: image-set(url('') 1x);\\\\n background-image: image-set(1x);\\\\n background-image: image-set(\\\\n 1x\\\\n );\\\\n background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n /* Strings */\\\\n background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL___13___ + \\" 1x, \\" + ___CSS_LOADER_URL___14___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___13___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___13___ + \\" 1x, \\" + ___CSS_LOADER_URL___14___ + \\" 2x);\\\\n background-image: image-set(\\\\\\"./img img.png\\\\\\" 1x, \\\\\\"./img img.png\\\\\\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___13___ + \\" 1x, \\" + ___CSS_LOADER_URL___14___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL___13___ + \\" 1x, \\" + ___CSS_LOADER_URL___14___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL___13___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL___14___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL___15___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___16___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___17___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___18___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___10___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___10___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL___10___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL___19___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\\\\\"./img img.png\\\\\\") 1x, url(\\\\\\"./img img.png\\\\\\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___9___ + \\") 1x, \\" + ___CSS_LOADER_URL___14___ + \\" 2x);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`url option Function: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(120:3) Unable to find uri in 'background: green url() xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(124:3) Unable to find uri in 'background: green url('') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(128:3) Unable to find uri in 'background: green url(\\"\\") xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(132:3) Unable to find uri in 'background: green url(' ') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(136:3) Unable to find uri in 'background: green url(
+ ) xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(216:3) Unable to find uri in 'background-image: -webkit-image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(218:3) Unable to find uri in 'background-image: image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(219:3) Unable to find uri in 'background-image: image-set(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(220:3) Unable to find uri in 'background-image: image-set(\\"\\" 1x)'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(221:3) Unable to find uri in 'background-image: image-set(url())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(222:3) Unable to find uri in 'background-image: image-set(
+ url()
+ )'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(225:3) Unable to find uri in 'background-image: image-set(URL())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(226:3) Unable to find uri in 'background-image: image-set(url(''))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(227:3) Unable to find uri in 'background-image: image-set(url(\\"\\"))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(228:3) Unable to find uri in 'background-image: image-set(url('') 1x)'",
+]
+`;
+
+exports[`url option false: errors 1`] = `Array []`;
+
+exports[`url option false: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ background: url('./img-from-imported.png');
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".class {
+ background: url('./img.png');
+}
+
+.class {
+ background: url(\\"./img.png\\");
+}
+
+.class {
+ background: url(./img.png);
+}
+
+.class {
+ background: url(\\"./img.png#hash\\");
+}
+
+.class {
+ background: url(
+ \\"./img.png\\"
+ );
+}
+
+.class {
+ background: green url( './img.png' ) xyz;
+}
+
+.class {
+ background: green url( \\"./img.png\\" ) xyz;
+}
+
+.class {
+ background: green url( ./img.png ) xyz;
+}
+
+.class {
+ background: green url(~package/img.png) url(./other-img.png) xyz;
+}
+
+.class {
+ background: green url( \\"./img img.png\\" ) xyz;
+}
+
+.class {
+ background: green url( './img img.png' ) xyz;
+}
+
+.class {
+ background: green url(/img.png) xyz;
+}
+
+.class {
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8, \\");
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\");
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8, #filter');
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');
+}
+
+.highlight {
+ filter: url(#highlight);
+}
+
+.highlight {
+ filter: url('#line-marker');
+}
+
+@font-face {
+ src: url(./font.woff) format('woff'),
+ url('./font.woff2') format('woff2'),
+ url(\\"./font.eot\\") format('eot'),
+ url(~package/font.ttf) format('truetype'),
+ url(\\"./font with spaces.eot\\") format(\\"embedded-opentype\\"),
+ url('./font.svg#svgFontName') format('svg'),
+ url('./font.woff2?foo=bar') format('woff2'),
+ url(\\"./font.eot?#iefix\\") format('embedded-opentype'),
+ url(\\"./font with spaces.eot?#iefix\\") format('embedded-opentype');
+}
+
+@media (min-width: 500px) {
+ body {
+ background: url(\\"./img.png\\");
+ }
+}
+
+a {
+ content: \\"do not use url(path)\\";
+}
+
+b {
+ content: 'do not \\"use\\" url(path)';
+}
+
+@keyframes anim {
+ background: green url('./img.png') xyz;
+}
+
+.a {
+ background-image: -webkit-image-set(url('./img1x.png') 1x, url('./img2x.png') 2x)
+}
+
+.a {
+ background-image: image-set(url('./img1x.png') 1x, url('./img2x.png') 2x)
+}
+
+.class {
+ background: green url() xyz;
+}
+
+.class {
+ background: green url('') xyz;
+}
+
+.class {
+ background: green url(\\"\\") xyz;
+}
+
+.class {
+ background: green url(' ') xyz;
+}
+
+.class {
+ background: green url(
+ ) xyz;
+}
+
+.class {
+ background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: url(\\"./img.png?foo\\");
+}
+
+.class {
+ background: url(\\"./img.png?foo=bar\\");
+}
+
+.class {
+ background: url(\\"./img.png?foo=bar#hash\\");
+}
+
+.class {
+ background: url(\\"./img.png?foo=bar#hash\\");
+}
+
+.class {
+ background: url(\\"./img.png?\\");
+}
+
+.class {
+ background-image: url('./img.png') url(\\"data:image/svg+xml;charset=utf-8, \\") url('./img.png');
+}
+
+.class {
+ background: ___CSS_LOADER_URL___;
+ background: ___CSS_LOADER_URL___INDEX___;
+ background: ___CSS_LOADER_URL___99999___;
+ background: ___CSS_LOADER_IMPORT___;
+ background: ___CSS_LOADER_IMPORT___INDEX___;
+ background: ___CSS_LOADER_IMPORT___99999___;
+}
+
+.pure-url {
+ background: url('img-simple.png');
+}
+
+.not-resolved {
+ background: url('/img-simple.png');
+}
+
+.above-below {
+ background: url('../url/img-simple.png');
+}
+
+.tilde {
+ background: url('~package/img.png');
+}
+
+.aliases {
+ background: url('~aliasesImg/img.png') ;
+}
+
+a {
+ background: url(./nested/img.png);
+}
+
+a {
+ background: url(nested/img.png);
+}
+
+@font-face {
+ src: url(\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\");
+}
+
+.class {
+ /* Broken */
+ background-image: -webkit-image-set();
+ background-image: -webkit-image-set('');
+ background-image: image-set();
+ background-image: image-set('');
+ background-image: image-set(\\"\\");
+ background-image: image-set(\\"\\" 1x);
+ background-image: image-set(url());
+ background-image: image-set(
+ url()
+ );
+ background-image: image-set(URL());
+ background-image: image-set(url(''));
+ background-image: image-set(url(\\"\\"));
+ background-image: image-set(url('') 1x);
+ background-image: image-set(1x);
+ background-image: image-set(
+ 1x
+ );
+ background: image-set(calc(1rem + 1px) 1x);
+
+ /* Strings */
+ background-image: -webkit-image-set(\\"./img1x.png\\" 1x, \\"./img2x.png\\" 2x);
+ background-image: image-set(\\"./img1x.png\\" 1x);
+ background-image: image-set(\\"./img1x.png\\" 1x, \\"./img2x.png\\" 2x);
+ background-image: image-set(\\"./img img.png\\" 1x, \\"./img img.png\\" 2x);
+ background-image: image-set(\\"./img1x.png\\" 1x, \\"./img2x.png\\" 2x),
+ image-set(\\"./img1x.png\\" 1x, \\"./img2x.png\\" 2x);
+ background-image: image-set(
+ \\"./img1x.png\\" 1x,
+ \\"./img2x.png\\" 2x,
+ \\"./img3x.png\\" 600dpi
+ );
+ background-image: image-set(\\"./img1x.png?foo=bar\\" 1x);
+ background-image: image-set(\\"./img1x.png#hash\\" 1x);
+ background-image: image-set(\\"./img1x.png?#iefix\\" 1x);
+
+ /* With \`url\` function */
+ background-image: -webkit-image-set(url(\\"./img1x.png\\") 1x, url(\\"./img2x.png\\") 2x);
+ background-image: -webkit-image-set(url(\\"./img1x.png\\") 1x);
+ background-image: -webkit-image-set(
+ url(\\"./img1x.png\\") 1x
+ );
+ background-image: image-set(url(./img1x.png) 1x);
+ background-image: image-set(
+ url(./img1x.png) 1x
+ );
+ background-image: image-set(url(\\"./img1x.png\\") 1x, url(\\"./img2x.png\\") 2x);
+ background-image: image-set(
+ url(./img1x.png) 1x,
+ url(./img2x.png) 2x,
+ url(./img3x.png) 600dpi
+ );
+ background-image: image-set(url(\\"./img img.png\\") 1x, url(\\"./img img.png\\") 2x);
+
+ background-image: image-set(url(\\"./img1x.png\\") 1x, \\"./img2x.png\\" 2x);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`url option false: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+// Module
+exports.push([module.id, \\".class {\\\\n background: url('./img.png');\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(./img.png);\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\n \\\\\\"./img.png\\\\\\"\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background: green url( './img.png' ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\\\\\"./img.png\\\\\\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( ./img.png ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(~package/img.png) url(./other-img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\\\\\"./img img.png\\\\\\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( './img img.png' ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8, #filter');\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(./font.woff) format('woff'),\\\\n url('./font.woff2') format('woff2'),\\\\n url(\\\\\\"./font.eot\\\\\\") format('eot'),\\\\n url(~package/font.ttf) format('truetype'),\\\\n url(\\\\\\"./font with spaces.eot\\\\\\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url('./font.svg#svgFontName') format('svg'),\\\\n url('./font.woff2?foo=bar') format('woff2'),\\\\n url(\\\\\\"./font.eot?#iefix\\\\\\") format('embedded-opentype'),\\\\n url(\\\\\\"./font with spaces.eot?#iefix\\\\\\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\\\\\"./img.png\\\\\\");\\\\n }\\\\n}\\\\n\\\\na {\\\\n content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n background: green url('./img.png') xyz;\\\\n}\\\\n\\\\n.a {\\\\n background-image: -webkit-image-set(url('./img1x.png') 1x, url('./img2x.png') 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url('./img1x.png') 1x, url('./img2x.png') 2x)\\\\n}\\\\n\\\\n.class {\\\\n background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(' ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\n ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?foo\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?foo=bar\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?foo=bar#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?foo=bar#hash\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\\\"./img.png?\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url('./img.png') url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\") url('./img.png');\\\\n}\\\\n\\\\n.class {\\\\n background: ___CSS_LOADER_URL___;\\\\n background: ___CSS_LOADER_URL___INDEX___;\\\\n background: ___CSS_LOADER_URL___99999___;\\\\n background: ___CSS_LOADER_IMPORT___;\\\\n background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n background: url('img-simple.png');\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url('../url/img-simple.png');\\\\n}\\\\n\\\\n.tilde {\\\\n background: url('~package/img.png');\\\\n}\\\\n\\\\n.aliases {\\\\n background: url('~aliasesImg/img.png') ;\\\\n}\\\\n\\\\na {\\\\n background: url(./nested/img.png);\\\\n}\\\\n\\\\na {\\\\n background: url(nested/img.png);\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n /* Broken */\\\\n background-image: -webkit-image-set();\\\\n background-image: -webkit-image-set('');\\\\n background-image: image-set();\\\\n background-image: image-set('');\\\\n background-image: image-set(\\\\\\"\\\\\\");\\\\n background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n background-image: image-set(url());\\\\n background-image: image-set(\\\\n url()\\\\n );\\\\n background-image: image-set(URL());\\\\n background-image: image-set(url(''));\\\\n background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n background-image: image-set(url('') 1x);\\\\n background-image: image-set(1x);\\\\n background-image: image-set(\\\\n 1x\\\\n );\\\\n background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n /* Strings */\\\\n background-image: -webkit-image-set(\\\\\\"./img1x.png\\\\\\" 1x, \\\\\\"./img2x.png\\\\\\" 2x);\\\\n background-image: image-set(\\\\\\"./img1x.png\\\\\\" 1x);\\\\n background-image: image-set(\\\\\\"./img1x.png\\\\\\" 1x, \\\\\\"./img2x.png\\\\\\" 2x);\\\\n background-image: image-set(\\\\\\"./img img.png\\\\\\" 1x, \\\\\\"./img img.png\\\\\\" 2x);\\\\n background-image: image-set(\\\\\\"./img1x.png\\\\\\" 1x, \\\\\\"./img2x.png\\\\\\" 2x),\\\\n image-set(\\\\\\"./img1x.png\\\\\\" 1x, \\\\\\"./img2x.png\\\\\\" 2x);\\\\n background-image: image-set(\\\\n \\\\\\"./img1x.png\\\\\\" 1x,\\\\n \\\\\\"./img2x.png\\\\\\" 2x,\\\\n \\\\\\"./img3x.png\\\\\\" 600dpi\\\\n );\\\\n background-image: image-set(\\\\\\"./img1x.png?foo=bar\\\\\\" 1x);\\\\n background-image: image-set(\\\\\\"./img1x.png#hash\\\\\\" 1x);\\\\n background-image: image-set(\\\\\\"./img1x.png?#iefix\\\\\\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\\\\\"./img1x.png\\\\\\") 1x, url(\\\\\\"./img2x.png\\\\\\") 2x);\\\\n background-image: -webkit-image-set(url(\\\\\\"./img1x.png\\\\\\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\\\\\"./img1x.png\\\\\\") 1x\\\\n );\\\\n background-image: image-set(url(./img1x.png) 1x);\\\\n background-image: image-set(\\\\n url(./img1x.png) 1x\\\\n );\\\\n background-image: image-set(url(\\\\\\"./img1x.png\\\\\\") 1x, url(\\\\\\"./img2x.png\\\\\\") 2x);\\\\n background-image: image-set(\\\\n url(./img1x.png) 1x,\\\\n url(./img2x.png) 2x,\\\\n url(./img3x.png) 600dpi\\\\n );\\\\n background-image: image-set(url(\\\\\\"./img img.png\\\\\\") 1x, url(\\\\\\"./img img.png\\\\\\") 2x);\\\\n\\\\n background-image: image-set(url(\\\\\\"./img1x.png\\\\\\") 1x, \\\\\\"./img2x.png\\\\\\" 2x);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`url option false: warnings 1`] = `Array []`;
+
+exports[`url option true and modules \`false\`: errors 1`] = `Array []`;
+
+exports[`url option true and modules \`false\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ background: url(/webpack/public/path/img-from-imported.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(
+ /webpack/public/path/img.png
+ );
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url(/webpack/public/path/img.png) url(/webpack/public/path/other-img.png) xyz;
+}
+
+.class {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+.class {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+.class {
+ background: green url(/img.png) xyz;
+}
+
+.class {
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8, \\");
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\");
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8, #filter');
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');
+}
+
+.highlight {
+ filter: url(#highlight);
+}
+
+.highlight {
+ filter: url('#line-marker');
+}
+
+@font-face {
+ src: url(/webpack/public/path/font.woff) format('woff'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot) format('eot'),
+ url(/webpack/public/path/font.ttf) format('truetype'),
+ url(\\"/webpack/public/path/font with spaces.eot\\") format(\\"embedded-opentype\\"),
+ url(/webpack/public/path/font.svg#svgFontName) format('svg'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot?#iefix) format('embedded-opentype'),
+ url(\\"/webpack/public/path/font with spaces.eot?#iefix\\") format('embedded-opentype');
+}
+
+@media (min-width: 500px) {
+ body {
+ background: url(/webpack/public/path/img.png);
+ }
+}
+
+a {
+ content: \\"do not use url(path)\\";
+}
+
+b {
+ content: 'do not \\"use\\" url(path)';
+}
+
+@keyframes anim {
+ background: green url(/webpack/public/path/img.png) xyz;
+}
+
+.a {
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+.a {
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+.class {
+ background: green url() xyz;
+}
+
+.class {
+ background: green url('') xyz;
+}
+
+.class {
+ background: green url(\\"\\") xyz;
+}
+
+.class {
+ background: green url(' ') xyz;
+}
+
+.class {
+ background: green url(
+ ) xyz;
+}
+
+.class {
+ background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background-image: url(/webpack/public/path/img.png) url(\\"data:image/svg+xml;charset=utf-8, \\") url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: ___CSS_LOADER_URL___;
+ background: ___CSS_LOADER_URL___INDEX___;
+ background: ___CSS_LOADER_URL___99999___;
+ background: ___CSS_LOADER_IMPORT___;
+ background: ___CSS_LOADER_IMPORT___INDEX___;
+ background: ___CSS_LOADER_IMPORT___99999___;
+}
+
+.pure-url {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.not-resolved {
+ background: url('/img-simple.png');
+}
+
+.above-below {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.tilde {
+ background: url(/webpack/public/path/img.png);
+}
+
+.aliases {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+@font-face {
+ src: url(\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\");
+}
+
+.class {
+ /* Broken */
+ background-image: -webkit-image-set();
+ background-image: -webkit-image-set('');
+ background-image: image-set();
+ background-image: image-set('');
+ background-image: image-set(\\"\\");
+ background-image: image-set(\\"\\" 1x);
+ background-image: image-set(url());
+ background-image: image-set(
+ url()
+ );
+ background-image: image-set(URL());
+ background-image: image-set(url(''));
+ background-image: image-set(url(\\"\\"));
+ background-image: image-set(url('') 1x);
+ background-image: image-set(1x);
+ background-image: image-set(
+ 1x
+ );
+ background: image-set(calc(1rem + 1px) 1x);
+
+ /* Strings */
+ background-image: -webkit-image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img img.png\\" 1x, \\"/webpack/public/path/img img.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x),
+ image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(
+ \\"/webpack/public/path/img1x.png\\" 1x,
+ \\"/webpack/public/path/img2x.png\\" 2x,
+ \\"/webpack/public/path/img3x.png\\" 600dpi
+ );
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png#hash\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png?#iefix\\" 1x);
+
+ /* With \`url\` function */
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: -webkit-image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x,
+ url(/webpack/public/path/img2x.png) 2x,
+ url(/webpack/public/path/img3x.png) 600dpi
+ );
+ background-image: image-set(url(\\"/webpack/public/path/img img.png\\") 1x, url(\\"/webpack/public/path/img img.png\\") 2x);
+
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`url option true and modules \`false\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+var ___CSS_LOADER_URL___1___ = getUrl(require(\\"./img.png\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___2___ = getUrl(require(\\"package/img.png\\"));
+var ___CSS_LOADER_URL___3___ = getUrl(require(\\"./other-img.png\\"));
+var ___CSS_LOADER_URL___4___ = getUrl(require(\\"./img img.png\\"));
+var ___CSS_LOADER_URL___5___ = getUrl(require(\\"./font.woff\\"));
+var ___CSS_LOADER_URL___6___ = getUrl(require(\\"./font.woff2\\"));
+var ___CSS_LOADER_URL___7___ = getUrl(require(\\"./font.eot\\"));
+var ___CSS_LOADER_URL___8___ = getUrl(require(\\"package/font.ttf\\"));
+var ___CSS_LOADER_URL___9___ = getUrl(require(\\"./font with spaces.eot\\"));
+var ___CSS_LOADER_URL___10___ = getUrl(require(\\"./font.svg\\") + \\"#svgFontName\\");
+var ___CSS_LOADER_URL___11___ = getUrl(require(\\"./font.woff2?foo=bar\\"));
+var ___CSS_LOADER_URL___12___ = getUrl(require(\\"./font.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___13___ = getUrl(require(\\"./font with spaces.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___14___ = getUrl(require(\\"./img1x.png\\"));
+var ___CSS_LOADER_URL___15___ = getUrl(require(\\"./img2x.png\\"));
+var ___CSS_LOADER_URL___16___ = getUrl(require(\\"./img.png?foo\\"));
+var ___CSS_LOADER_URL___17___ = getUrl(require(\\"./img.png?foo=bar\\"));
+var ___CSS_LOADER_URL___18___ = getUrl(require(\\"./img.png?foo=bar\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___19___ = getUrl(require(\\"./img.png?\\"));
+var ___CSS_LOADER_URL___20___ = getUrl(require(\\"./img-simple.png\\"));
+var ___CSS_LOADER_URL___21___ = getUrl(require(\\"../url/img-simple.png\\"));
+var ___CSS_LOADER_URL___22___ = getUrl(require(\\"aliasesImg/img.png\\"));
+var ___CSS_LOADER_URL___23___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___24___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___25___ = getUrl(require(\\"./img1x.png\\"), true);
+var ___CSS_LOADER_URL___26___ = getUrl(require(\\"./img2x.png\\"), true);
+var ___CSS_LOADER_URL___27___ = getUrl(require(\\"./img img.png\\"), true);
+var ___CSS_LOADER_URL___28___ = getUrl(require(\\"./img3x.png\\"), true);
+var ___CSS_LOADER_URL___29___ = getUrl(require(\\"./img1x.png?foo=bar\\"), true);
+var ___CSS_LOADER_URL___30___ = getUrl(require(\\"./img1x.png\\") + \\"#hash\\", true);
+var ___CSS_LOADER_URL___31___ = getUrl(require(\\"./img1x.png\\") + \\"?#iefix\\", true);
+var ___CSS_LOADER_URL___32___ = getUrl(require(\\"./img3x.png\\"));
+// Module
+exports.push([module.id, \\".class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\n \\" + ___CSS_LOADER_URL___0___ + \\"\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\" + ___CSS_LOADER_URL___2___ + \\") url(\\" + ___CSS_LOADER_URL___3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8, #filter');\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\" + ___CSS_LOADER_URL___5___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL___6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___7___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL___8___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL___9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL___10___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL___11___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___12___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL___13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n }\\\\n}\\\\n\\\\na {\\\\n content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n background: green url(\\" + ___CSS_LOADER_URL___0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(' ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\n ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___16___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\" + ___CSS_LOADER_URL___0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\") url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: ___CSS_LOADER_URL___;\\\\n background: ___CSS_LOADER_URL___INDEX___;\\\\n background: ___CSS_LOADER_URL___99999___;\\\\n background: ___CSS_LOADER_IMPORT___;\\\\n background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n background: url(\\" + ___CSS_LOADER_URL___20___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL___21___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n background: url(\\" + ___CSS_LOADER_URL___2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n background: url(\\" + ___CSS_LOADER_URL___22___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___23___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___24___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n /* Broken */\\\\n background-image: -webkit-image-set();\\\\n background-image: -webkit-image-set('');\\\\n background-image: image-set();\\\\n background-image: image-set('');\\\\n background-image: image-set(\\\\\\"\\\\\\");\\\\n background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n background-image: image-set(url());\\\\n background-image: image-set(\\\\n url()\\\\n );\\\\n background-image: image-set(URL());\\\\n background-image: image-set(url(''));\\\\n background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n background-image: image-set(url('') 1x);\\\\n background-image: image-set(1x);\\\\n background-image: image-set(\\\\n 1x\\\\n );\\\\n background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n /* Strings */\\\\n background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___27___ + \\" 1x, \\" + ___CSS_LOADER_URL___27___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL___25___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL___26___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL___28___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___29___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___30___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___31___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL___32___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___4___ + \\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`url option true and modules \`false\`: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(120:3) Unable to find uri in 'background: green url() xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(124:3) Unable to find uri in 'background: green url('') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(128:3) Unable to find uri in 'background: green url(\\"\\") xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(132:3) Unable to find uri in 'background: green url(' ') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(136:3) Unable to find uri in 'background: green url(
+ ) xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(216:3) Unable to find uri in 'background-image: -webkit-image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(218:3) Unable to find uri in 'background-image: image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(219:3) Unable to find uri in 'background-image: image-set(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(220:3) Unable to find uri in 'background-image: image-set(\\"\\" 1x)'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(221:3) Unable to find uri in 'background-image: image-set(url())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(222:3) Unable to find uri in 'background-image: image-set(
+ url()
+ )'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(225:3) Unable to find uri in 'background-image: image-set(URL())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(226:3) Unable to find uri in 'background-image: image-set(url(''))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(227:3) Unable to find uri in 'background-image: image-set(url(\\"\\"))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(228:3) Unable to find uri in 'background-image: image-set(url('') 1x)'",
+]
+`;
+
+exports[`url option true and modules \`global\`: errors 1`] = `Array []`;
+
+exports[`url option true and modules \`global\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ background: url(/webpack/public/path/img-from-imported.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(
+ /webpack/public/path/img.png
+ );
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url(/webpack/public/path/img.png) url(/webpack/public/path/other-img.png) xyz;
+}
+
+.class {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+.class {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+.class {
+ background: green url(/img.png) xyz;
+}
+
+.class {
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8, \\");
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\");
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8, #filter');
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');
+}
+
+.highlight {
+ filter: url(#highlight);
+}
+
+.highlight {
+ filter: url('#line-marker');
+}
+
+@font-face {
+ src: url(/webpack/public/path/font.woff) format('woff'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot) format('eot'),
+ url(/webpack/public/path/font.ttf) format('truetype'),
+ url(\\"/webpack/public/path/font with spaces.eot\\") format(\\"embedded-opentype\\"),
+ url(/webpack/public/path/font.svg#svgFontName) format('svg'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot?#iefix) format('embedded-opentype'),
+ url(\\"/webpack/public/path/font with spaces.eot?#iefix\\") format('embedded-opentype');
+}
+
+@media (min-width: 500px) {
+ body {
+ background: url(/webpack/public/path/img.png);
+ }
+}
+
+a {
+ content: \\"do not use url(path)\\";
+}
+
+b {
+ content: 'do not \\"use\\" url(path)';
+}
+
+@keyframes anim {
+ background: green url(/webpack/public/path/img.png) xyz;
+}
+
+.a {
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+.a {
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+.class {
+ background: green url() xyz;
+}
+
+.class {
+ background: green url('') xyz;
+}
+
+.class {
+ background: green url(\\"\\") xyz;
+}
+
+.class {
+ background: green url(' ') xyz;
+}
+
+.class {
+ background: green url(
+ ) xyz;
+}
+
+.class {
+ background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background-image: url(/webpack/public/path/img.png) url(\\"data:image/svg+xml;charset=utf-8, \\") url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: ___CSS_LOADER_URL___;
+ background: ___CSS_LOADER_URL___INDEX___;
+ background: ___CSS_LOADER_URL___99999___;
+ background: ___CSS_LOADER_IMPORT___;
+ background: ___CSS_LOADER_IMPORT___INDEX___;
+ background: ___CSS_LOADER_IMPORT___99999___;
+}
+
+.pure-url {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.not-resolved {
+ background: url('/img-simple.png');
+}
+
+.above-below {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.tilde {
+ background: url(/webpack/public/path/img.png);
+}
+
+.aliases {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+@font-face {
+ src: url(\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\");
+}
+
+.class {
+ /* Broken */
+ background-image: -webkit-image-set();
+ background-image: -webkit-image-set('');
+ background-image: image-set();
+ background-image: image-set('');
+ background-image: image-set(\\"\\");
+ background-image: image-set(\\"\\" 1x);
+ background-image: image-set(url());
+ background-image: image-set(
+ url()
+ );
+ background-image: image-set(URL());
+ background-image: image-set(url(''));
+ background-image: image-set(url(\\"\\"));
+ background-image: image-set(url('') 1x);
+ background-image: image-set(1x);
+ background-image: image-set(
+ 1x
+ );
+ background: image-set(calc(1rem + 1px) 1x);
+
+ /* Strings */
+ background-image: -webkit-image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img img.png\\" 1x, \\"/webpack/public/path/img img.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x),
+ image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(
+ \\"/webpack/public/path/img1x.png\\" 1x,
+ \\"/webpack/public/path/img2x.png\\" 2x,
+ \\"/webpack/public/path/img3x.png\\" 600dpi
+ );
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png#hash\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png?#iefix\\" 1x);
+
+ /* With \`url\` function */
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: -webkit-image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x,
+ url(/webpack/public/path/img2x.png) 2x,
+ url(/webpack/public/path/img3x.png) 600dpi
+ );
+ background-image: image-set(url(\\"/webpack/public/path/img img.png\\") 1x, url(\\"/webpack/public/path/img img.png\\") 2x);
+
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`url option true and modules \`global\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+var ___CSS_LOADER_URL___1___ = getUrl(require(\\"./img.png\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___2___ = getUrl(require(\\"package/img.png\\"));
+var ___CSS_LOADER_URL___3___ = getUrl(require(\\"./other-img.png\\"));
+var ___CSS_LOADER_URL___4___ = getUrl(require(\\"./img img.png\\"));
+var ___CSS_LOADER_URL___5___ = getUrl(require(\\"./font.woff\\"));
+var ___CSS_LOADER_URL___6___ = getUrl(require(\\"./font.woff2\\"));
+var ___CSS_LOADER_URL___7___ = getUrl(require(\\"./font.eot\\"));
+var ___CSS_LOADER_URL___8___ = getUrl(require(\\"package/font.ttf\\"));
+var ___CSS_LOADER_URL___9___ = getUrl(require(\\"./font with spaces.eot\\"));
+var ___CSS_LOADER_URL___10___ = getUrl(require(\\"./font.svg\\") + \\"#svgFontName\\");
+var ___CSS_LOADER_URL___11___ = getUrl(require(\\"./font.woff2?foo=bar\\"));
+var ___CSS_LOADER_URL___12___ = getUrl(require(\\"./font.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___13___ = getUrl(require(\\"./font with spaces.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___14___ = getUrl(require(\\"./img1x.png\\"));
+var ___CSS_LOADER_URL___15___ = getUrl(require(\\"./img2x.png\\"));
+var ___CSS_LOADER_URL___16___ = getUrl(require(\\"./img.png?foo\\"));
+var ___CSS_LOADER_URL___17___ = getUrl(require(\\"./img.png?foo=bar\\"));
+var ___CSS_LOADER_URL___18___ = getUrl(require(\\"./img.png?foo=bar\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___19___ = getUrl(require(\\"./img.png?\\"));
+var ___CSS_LOADER_URL___20___ = getUrl(require(\\"./img-simple.png\\"));
+var ___CSS_LOADER_URL___21___ = getUrl(require(\\"../url/img-simple.png\\"));
+var ___CSS_LOADER_URL___22___ = getUrl(require(\\"aliasesImg/img.png\\"));
+var ___CSS_LOADER_URL___23___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___24___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___25___ = getUrl(require(\\"./img1x.png\\"), true);
+var ___CSS_LOADER_URL___26___ = getUrl(require(\\"./img2x.png\\"), true);
+var ___CSS_LOADER_URL___27___ = getUrl(require(\\"./img img.png\\"), true);
+var ___CSS_LOADER_URL___28___ = getUrl(require(\\"./img3x.png\\"), true);
+var ___CSS_LOADER_URL___29___ = getUrl(require(\\"./img1x.png?foo=bar\\"), true);
+var ___CSS_LOADER_URL___30___ = getUrl(require(\\"./img1x.png\\") + \\"#hash\\", true);
+var ___CSS_LOADER_URL___31___ = getUrl(require(\\"./img1x.png\\") + \\"?#iefix\\", true);
+var ___CSS_LOADER_URL___32___ = getUrl(require(\\"./img3x.png\\"));
+// Module
+exports.push([module.id, \\".class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\n \\" + ___CSS_LOADER_URL___0___ + \\"\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\" + ___CSS_LOADER_URL___2___ + \\") url(\\" + ___CSS_LOADER_URL___3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8, #filter');\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\" + ___CSS_LOADER_URL___5___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL___6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___7___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL___8___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL___9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL___10___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL___11___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___12___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL___13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n }\\\\n}\\\\n\\\\na {\\\\n content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n background: green url(\\" + ___CSS_LOADER_URL___0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(' ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\n ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___16___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\" + ___CSS_LOADER_URL___0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\") url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: ___CSS_LOADER_URL___;\\\\n background: ___CSS_LOADER_URL___INDEX___;\\\\n background: ___CSS_LOADER_URL___99999___;\\\\n background: ___CSS_LOADER_IMPORT___;\\\\n background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n background: url(\\" + ___CSS_LOADER_URL___20___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL___21___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n background: url(\\" + ___CSS_LOADER_URL___2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n background: url(\\" + ___CSS_LOADER_URL___22___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___23___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___24___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n /* Broken */\\\\n background-image: -webkit-image-set();\\\\n background-image: -webkit-image-set('');\\\\n background-image: image-set();\\\\n background-image: image-set('');\\\\n background-image: image-set(\\\\\\"\\\\\\");\\\\n background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n background-image: image-set(url());\\\\n background-image: image-set(\\\\n url()\\\\n );\\\\n background-image: image-set(URL());\\\\n background-image: image-set(url(''));\\\\n background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n background-image: image-set(url('') 1x);\\\\n background-image: image-set(1x);\\\\n background-image: image-set(\\\\n 1x\\\\n );\\\\n background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n /* Strings */\\\\n background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___27___ + \\" 1x, \\" + ___CSS_LOADER_URL___27___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL___25___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL___26___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL___28___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___29___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___30___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___31___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL___32___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___4___ + \\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`url option true and modules \`global\`: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(120:3) Unable to find uri in 'background: green url() xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(124:3) Unable to find uri in 'background: green url('') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(128:3) Unable to find uri in 'background: green url(\\"\\") xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(132:3) Unable to find uri in 'background: green url(' ') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(136:3) Unable to find uri in 'background: green url(
+ ) xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(216:3) Unable to find uri in 'background-image: -webkit-image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(218:3) Unable to find uri in 'background-image: image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(219:3) Unable to find uri in 'background-image: image-set(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(220:3) Unable to find uri in 'background-image: image-set(\\"\\" 1x)'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(221:3) Unable to find uri in 'background-image: image-set(url())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(222:3) Unable to find uri in 'background-image: image-set(
+ url()
+ )'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(225:3) Unable to find uri in 'background-image: image-set(URL())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(226:3) Unable to find uri in 'background-image: image-set(url(''))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(227:3) Unable to find uri in 'background-image: image-set(url(\\"\\"))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(228:3) Unable to find uri in 'background-image: image-set(url('') 1x)'",
+]
+`;
+
+exports[`url option true and modules \`local\`: errors 1`] = `Array []`;
+
+exports[`url option true and modules \`local\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._2y8zdp_B3r6R32gVxIJYJG {
+ background: url(/webpack/public/path/img-from-imported.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(
+ /webpack/public/path/img.png
+ );
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(/webpack/public/path/img.png) url(/webpack/public/path/other-img.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(/img.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8, \\");
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\");
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ filter: url('data:image/svg+xml;charset=utf-8, #filter');
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');
+}
+
+.lml_5t-nQdGlKc9OtKjUO {
+ filter: url(#highlight);
+}
+
+.lml_5t-nQdGlKc9OtKjUO {
+ filter: url('#line-marker');
+}
+
+@font-face {
+ src: url(/webpack/public/path/font.woff) format('woff'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot) format('eot'),
+ url(/webpack/public/path/font.ttf) format('truetype'),
+ url(\\"/webpack/public/path/font with spaces.eot\\") format(\\"embedded-opentype\\"),
+ url(/webpack/public/path/font.svg#svgFontName) format('svg'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot?#iefix) format('embedded-opentype'),
+ url(\\"/webpack/public/path/font with spaces.eot?#iefix\\") format('embedded-opentype');
+}
+
+@media (min-width: 500px) {
+ body {
+ background: url(/webpack/public/path/img.png);
+ }
+}
+
+a {
+ content: \\"do not use url(path)\\";
+}
+
+b {
+ content: 'do not \\"use\\" url(path)';
+}
+
+@keyframes O9YPhh3OZdzrkj25z-J92 {
+ background: green url(/webpack/public/path/img.png) xyz;
+}
+
+._1fj5hnOVZ8KZVIGyZbPW3p {
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+._1fj5hnOVZ8KZVIGyZbPW3p {
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url() xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url('') xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(\\"\\") xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(' ') xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(
+ ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background-image: url(/webpack/public/path/img.png) url(\\"data:image/svg+xml;charset=utf-8, \\") url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: ___CSS_LOADER_URL___;
+ background: ___CSS_LOADER_URL___INDEX___;
+ background: ___CSS_LOADER_URL___99999___;
+ background: ___CSS_LOADER_IMPORT___;
+ background: ___CSS_LOADER_IMPORT___INDEX___;
+ background: ___CSS_LOADER_IMPORT___99999___;
+}
+
+._2rb58RF5u2ij-3X8XSJaVP {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.mrf4tRz4T71pNku_3IMH3 {
+ background: url('/img-simple.png');
+}
+
+.c5dNFA35opKWoGz7aRj0k {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+._2Q5a0g3xEHAboOADfIxHa5 {
+ background: url(/webpack/public/path/img.png);
+}
+
+._2TX-7lb63hK5h5DzELIAbU {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+@font-face {
+ src: url(\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\");
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ /* Broken */
+ background-image: -webkit-image-set();
+ background-image: -webkit-image-set('');
+ background-image: image-set();
+ background-image: image-set('');
+ background-image: image-set(\\"\\");
+ background-image: image-set(\\"\\" 1x);
+ background-image: image-set(url());
+ background-image: image-set(
+ url()
+ );
+ background-image: image-set(URL());
+ background-image: image-set(url(''));
+ background-image: image-set(url(\\"\\"));
+ background-image: image-set(url('') 1x);
+ background-image: image-set(1x);
+ background-image: image-set(
+ 1x
+ );
+ background: image-set(calc(1rem + 1px) 1x);
+
+ /* Strings */
+ background-image: -webkit-image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img img.png\\" 1x, \\"/webpack/public/path/img img.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x),
+ image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(
+ \\"/webpack/public/path/img1x.png\\" 1x,
+ \\"/webpack/public/path/img2x.png\\" 2x,
+ \\"/webpack/public/path/img3x.png\\" 600dpi
+ );
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png#hash\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png?#iefix\\" 1x);
+
+ /* With \`url\` function */
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: -webkit-image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x,
+ url(/webpack/public/path/img2x.png) 2x,
+ url(/webpack/public/path/img3x.png) 600dpi
+ );
+ background-image: image-set(url(\\"/webpack/public/path/img img.png\\") 1x, url(\\"/webpack/public/path/img img.png\\") 2x);
+
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`url option true and modules \`local\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+var ___CSS_LOADER_URL___1___ = getUrl(require(\\"./img.png\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___2___ = getUrl(require(\\"package/img.png\\"));
+var ___CSS_LOADER_URL___3___ = getUrl(require(\\"./other-img.png\\"));
+var ___CSS_LOADER_URL___4___ = getUrl(require(\\"./img img.png\\"));
+var ___CSS_LOADER_URL___5___ = getUrl(require(\\"./font.woff\\"));
+var ___CSS_LOADER_URL___6___ = getUrl(require(\\"./font.woff2\\"));
+var ___CSS_LOADER_URL___7___ = getUrl(require(\\"./font.eot\\"));
+var ___CSS_LOADER_URL___8___ = getUrl(require(\\"package/font.ttf\\"));
+var ___CSS_LOADER_URL___9___ = getUrl(require(\\"./font with spaces.eot\\"));
+var ___CSS_LOADER_URL___10___ = getUrl(require(\\"./font.svg\\") + \\"#svgFontName\\");
+var ___CSS_LOADER_URL___11___ = getUrl(require(\\"./font.woff2?foo=bar\\"));
+var ___CSS_LOADER_URL___12___ = getUrl(require(\\"./font.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___13___ = getUrl(require(\\"./font with spaces.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___14___ = getUrl(require(\\"./img1x.png\\"));
+var ___CSS_LOADER_URL___15___ = getUrl(require(\\"./img2x.png\\"));
+var ___CSS_LOADER_URL___16___ = getUrl(require(\\"./img.png?foo\\"));
+var ___CSS_LOADER_URL___17___ = getUrl(require(\\"./img.png?foo=bar\\"));
+var ___CSS_LOADER_URL___18___ = getUrl(require(\\"./img.png?foo=bar\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___19___ = getUrl(require(\\"./img.png?\\"));
+var ___CSS_LOADER_URL___20___ = getUrl(require(\\"./img-simple.png\\"));
+var ___CSS_LOADER_URL___21___ = getUrl(require(\\"../url/img-simple.png\\"));
+var ___CSS_LOADER_URL___22___ = getUrl(require(\\"aliasesImg/img.png\\"));
+var ___CSS_LOADER_URL___23___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___24___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___25___ = getUrl(require(\\"./img1x.png\\"), true);
+var ___CSS_LOADER_URL___26___ = getUrl(require(\\"./img2x.png\\"), true);
+var ___CSS_LOADER_URL___27___ = getUrl(require(\\"./img img.png\\"), true);
+var ___CSS_LOADER_URL___28___ = getUrl(require(\\"./img3x.png\\"), true);
+var ___CSS_LOADER_URL___29___ = getUrl(require(\\"./img1x.png?foo=bar\\"), true);
+var ___CSS_LOADER_URL___30___ = getUrl(require(\\"./img1x.png\\") + \\"#hash\\", true);
+var ___CSS_LOADER_URL___31___ = getUrl(require(\\"./img1x.png\\") + \\"?#iefix\\", true);
+var ___CSS_LOADER_URL___32___ = getUrl(require(\\"./img3x.png\\"));
+// Module
+exports.push([module.id, \\"._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___1___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\\\n \\" + ___CSS_LOADER_URL___0___ + \\"\\\\n );\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(\\" + ___CSS_LOADER_URL___2___ + \\") url(\\" + ___CSS_LOADER_URL___3___ + \\") xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n filter: url('data:image/svg+xml;charset=utf-8, #filter');\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.lml_5t-nQdGlKc9OtKjUO {\\\\n filter: url(#highlight);\\\\n}\\\\n\\\\n.lml_5t-nQdGlKc9OtKjUO {\\\\n filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\" + ___CSS_LOADER_URL___5___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL___6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___7___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL___8___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL___9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL___10___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL___11___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___12___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL___13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n }\\\\n}\\\\n\\\\na {\\\\n content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes O9YPhh3OZdzrkj25z-J92 {\\\\n background: green url(\\" + ___CSS_LOADER_URL___0___ + \\") xyz;\\\\n}\\\\n\\\\n._1fj5hnOVZ8KZVIGyZbPW3p {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n._1fj5hnOVZ8KZVIGyZbPW3p {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url() xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url('') xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(' ') xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(\\\\n ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___16___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___17___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___19___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background-image: url(\\" + ___CSS_LOADER_URL___0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\") url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: ___CSS_LOADER_URL___;\\\\n background: ___CSS_LOADER_URL___INDEX___;\\\\n background: ___CSS_LOADER_URL___99999___;\\\\n background: ___CSS_LOADER_IMPORT___;\\\\n background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n._2rb58RF5u2ij-3X8XSJaVP {\\\\n background: url(\\" + ___CSS_LOADER_URL___20___ + \\");\\\\n}\\\\n\\\\n.mrf4tRz4T71pNku_3IMH3 {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.c5dNFA35opKWoGz7aRj0k {\\\\n background: url(\\" + ___CSS_LOADER_URL___21___ + \\");\\\\n}\\\\n\\\\n._2Q5a0g3xEHAboOADfIxHa5 {\\\\n background: url(\\" + ___CSS_LOADER_URL___2___ + \\");\\\\n}\\\\n\\\\n._2TX-7lb63hK5h5DzELIAbU {\\\\n background: url(\\" + ___CSS_LOADER_URL___22___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___23___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___24___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n /* Broken */\\\\n background-image: -webkit-image-set();\\\\n background-image: -webkit-image-set('');\\\\n background-image: image-set();\\\\n background-image: image-set('');\\\\n background-image: image-set(\\\\\\"\\\\\\");\\\\n background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n background-image: image-set(url());\\\\n background-image: image-set(\\\\n url()\\\\n );\\\\n background-image: image-set(URL());\\\\n background-image: image-set(url(''));\\\\n background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n background-image: image-set(url('') 1x);\\\\n background-image: image-set(1x);\\\\n background-image: image-set(\\\\n 1x\\\\n );\\\\n background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n /* Strings */\\\\n background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___27___ + \\" 1x, \\" + ___CSS_LOADER_URL___27___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL___25___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL___26___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL___28___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___29___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___30___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___31___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL___32___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___4___ + \\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"class\\": \\"_7NvzxsKlD5xT5cUVu5Ad-\\",
+ \\"highlight\\": \\"lml_5t-nQdGlKc9OtKjUO\\",
+ \\"a\\": \\"_1fj5hnOVZ8KZVIGyZbPW3p\\",
+ \\"pure-url\\": \\"_2rb58RF5u2ij-3X8XSJaVP\\",
+ \\"not-resolved\\": \\"mrf4tRz4T71pNku_3IMH3\\",
+ \\"above-below\\": \\"c5dNFA35opKWoGz7aRj0k\\",
+ \\"tilde\\": \\"_2Q5a0g3xEHAboOADfIxHa5\\",
+ \\"aliases\\": \\"_2TX-7lb63hK5h5DzELIAbU\\",
+ \\"anim\\": \\"O9YPhh3OZdzrkj25z-J92\\"
+};"
+`;
+
+exports[`url option true and modules \`local\`: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(120:3) Unable to find uri in 'background: green url() xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(124:3) Unable to find uri in 'background: green url('') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(128:3) Unable to find uri in 'background: green url(\\"\\") xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(132:3) Unable to find uri in 'background: green url(' ') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(136:3) Unable to find uri in 'background: green url(
+ ) xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(216:3) Unable to find uri in 'background-image: -webkit-image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(218:3) Unable to find uri in 'background-image: image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(219:3) Unable to find uri in 'background-image: image-set(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(220:3) Unable to find uri in 'background-image: image-set(\\"\\" 1x)'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(221:3) Unable to find uri in 'background-image: image-set(url())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(222:3) Unable to find uri in 'background-image: image-set(
+ url()
+ )'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(225:3) Unable to find uri in 'background-image: image-set(URL())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(226:3) Unable to find uri in 'background-image: image-set(url(''))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(227:3) Unable to find uri in 'background-image: image-set(url(\\"\\"))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(228:3) Unable to find uri in 'background-image: image-set(url('') 1x)'",
+]
+`;
+
+exports[`url option true and modules \`true\`: errors 1`] = `Array []`;
+
+exports[`url option true and modules \`true\`: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ "._2y8zdp_B3r6R32gVxIJYJG {
+ background: url(/webpack/public/path/img-from-imported.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ "._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(
+ /webpack/public/path/img.png
+ );
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(/webpack/public/path/img.png) url(/webpack/public/path/other-img.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(/img.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8, \\");
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\");
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ filter: url('data:image/svg+xml;charset=utf-8, #filter');
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');
+}
+
+.lml_5t-nQdGlKc9OtKjUO {
+ filter: url(#highlight);
+}
+
+.lml_5t-nQdGlKc9OtKjUO {
+ filter: url('#line-marker');
+}
+
+@font-face {
+ src: url(/webpack/public/path/font.woff) format('woff'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot) format('eot'),
+ url(/webpack/public/path/font.ttf) format('truetype'),
+ url(\\"/webpack/public/path/font with spaces.eot\\") format(\\"embedded-opentype\\"),
+ url(/webpack/public/path/font.svg#svgFontName) format('svg'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot?#iefix) format('embedded-opentype'),
+ url(\\"/webpack/public/path/font with spaces.eot?#iefix\\") format('embedded-opentype');
+}
+
+@media (min-width: 500px) {
+ body {
+ background: url(/webpack/public/path/img.png);
+ }
+}
+
+a {
+ content: \\"do not use url(path)\\";
+}
+
+b {
+ content: 'do not \\"use\\" url(path)';
+}
+
+@keyframes O9YPhh3OZdzrkj25z-J92 {
+ background: green url(/webpack/public/path/img.png) xyz;
+}
+
+._1fj5hnOVZ8KZVIGyZbPW3p {
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+._1fj5hnOVZ8KZVIGyZbPW3p {
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url() xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url('') xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(\\"\\") xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(' ') xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(
+ ) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background-image: url(/webpack/public/path/img.png) url(\\"data:image/svg+xml;charset=utf-8, \\") url(/webpack/public/path/img.png);
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ background: ___CSS_LOADER_URL___;
+ background: ___CSS_LOADER_URL___INDEX___;
+ background: ___CSS_LOADER_URL___99999___;
+ background: ___CSS_LOADER_IMPORT___;
+ background: ___CSS_LOADER_IMPORT___INDEX___;
+ background: ___CSS_LOADER_IMPORT___99999___;
+}
+
+._2rb58RF5u2ij-3X8XSJaVP {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.mrf4tRz4T71pNku_3IMH3 {
+ background: url('/img-simple.png');
+}
+
+.c5dNFA35opKWoGz7aRj0k {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+._2Q5a0g3xEHAboOADfIxHa5 {
+ background: url(/webpack/public/path/img.png);
+}
+
+._2TX-7lb63hK5h5DzELIAbU {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+@font-face {
+ src: url(\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\");
+}
+
+._7NvzxsKlD5xT5cUVu5Ad- {
+ /* Broken */
+ background-image: -webkit-image-set();
+ background-image: -webkit-image-set('');
+ background-image: image-set();
+ background-image: image-set('');
+ background-image: image-set(\\"\\");
+ background-image: image-set(\\"\\" 1x);
+ background-image: image-set(url());
+ background-image: image-set(
+ url()
+ );
+ background-image: image-set(URL());
+ background-image: image-set(url(''));
+ background-image: image-set(url(\\"\\"));
+ background-image: image-set(url('') 1x);
+ background-image: image-set(1x);
+ background-image: image-set(
+ 1x
+ );
+ background: image-set(calc(1rem + 1px) 1x);
+
+ /* Strings */
+ background-image: -webkit-image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img img.png\\" 1x, \\"/webpack/public/path/img img.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x),
+ image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(
+ \\"/webpack/public/path/img1x.png\\" 1x,
+ \\"/webpack/public/path/img2x.png\\" 2x,
+ \\"/webpack/public/path/img3x.png\\" 600dpi
+ );
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png#hash\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png?#iefix\\" 1x);
+
+ /* With \`url\` function */
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: -webkit-image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x,
+ url(/webpack/public/path/img2x.png) 2x,
+ url(/webpack/public/path/img3x.png) 600dpi
+ );
+ background-image: image-set(url(\\"/webpack/public/path/img img.png\\") 1x, url(\\"/webpack/public/path/img img.png\\") 2x);
+
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`url option true and modules \`true\`: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+var ___CSS_LOADER_URL___1___ = getUrl(require(\\"./img.png\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___2___ = getUrl(require(\\"package/img.png\\"));
+var ___CSS_LOADER_URL___3___ = getUrl(require(\\"./other-img.png\\"));
+var ___CSS_LOADER_URL___4___ = getUrl(require(\\"./img img.png\\"));
+var ___CSS_LOADER_URL___5___ = getUrl(require(\\"./font.woff\\"));
+var ___CSS_LOADER_URL___6___ = getUrl(require(\\"./font.woff2\\"));
+var ___CSS_LOADER_URL___7___ = getUrl(require(\\"./font.eot\\"));
+var ___CSS_LOADER_URL___8___ = getUrl(require(\\"package/font.ttf\\"));
+var ___CSS_LOADER_URL___9___ = getUrl(require(\\"./font with spaces.eot\\"));
+var ___CSS_LOADER_URL___10___ = getUrl(require(\\"./font.svg\\") + \\"#svgFontName\\");
+var ___CSS_LOADER_URL___11___ = getUrl(require(\\"./font.woff2?foo=bar\\"));
+var ___CSS_LOADER_URL___12___ = getUrl(require(\\"./font.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___13___ = getUrl(require(\\"./font with spaces.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___14___ = getUrl(require(\\"./img1x.png\\"));
+var ___CSS_LOADER_URL___15___ = getUrl(require(\\"./img2x.png\\"));
+var ___CSS_LOADER_URL___16___ = getUrl(require(\\"./img.png?foo\\"));
+var ___CSS_LOADER_URL___17___ = getUrl(require(\\"./img.png?foo=bar\\"));
+var ___CSS_LOADER_URL___18___ = getUrl(require(\\"./img.png?foo=bar\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___19___ = getUrl(require(\\"./img.png?\\"));
+var ___CSS_LOADER_URL___20___ = getUrl(require(\\"./img-simple.png\\"));
+var ___CSS_LOADER_URL___21___ = getUrl(require(\\"../url/img-simple.png\\"));
+var ___CSS_LOADER_URL___22___ = getUrl(require(\\"aliasesImg/img.png\\"));
+var ___CSS_LOADER_URL___23___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___24___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___25___ = getUrl(require(\\"./img1x.png\\"), true);
+var ___CSS_LOADER_URL___26___ = getUrl(require(\\"./img2x.png\\"), true);
+var ___CSS_LOADER_URL___27___ = getUrl(require(\\"./img img.png\\"), true);
+var ___CSS_LOADER_URL___28___ = getUrl(require(\\"./img3x.png\\"), true);
+var ___CSS_LOADER_URL___29___ = getUrl(require(\\"./img1x.png?foo=bar\\"), true);
+var ___CSS_LOADER_URL___30___ = getUrl(require(\\"./img1x.png\\") + \\"#hash\\", true);
+var ___CSS_LOADER_URL___31___ = getUrl(require(\\"./img1x.png\\") + \\"?#iefix\\", true);
+var ___CSS_LOADER_URL___32___ = getUrl(require(\\"./img3x.png\\"));
+// Module
+exports.push([module.id, \\"._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___1___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\\\n \\" + ___CSS_LOADER_URL___0___ + \\"\\\\n );\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(\\" + ___CSS_LOADER_URL___2___ + \\") url(\\" + ___CSS_LOADER_URL___3___ + \\") xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n filter: url('data:image/svg+xml;charset=utf-8, #filter');\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.lml_5t-nQdGlKc9OtKjUO {\\\\n filter: url(#highlight);\\\\n}\\\\n\\\\n.lml_5t-nQdGlKc9OtKjUO {\\\\n filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\" + ___CSS_LOADER_URL___5___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL___6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___7___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL___8___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL___9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL___10___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL___11___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___12___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL___13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n }\\\\n}\\\\n\\\\na {\\\\n content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes O9YPhh3OZdzrkj25z-J92 {\\\\n background: green url(\\" + ___CSS_LOADER_URL___0___ + \\") xyz;\\\\n}\\\\n\\\\n._1fj5hnOVZ8KZVIGyZbPW3p {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n._1fj5hnOVZ8KZVIGyZbPW3p {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url() xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url('') xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(' ') xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(\\\\n ) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___16___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___17___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: url(\\" + ___CSS_LOADER_URL___19___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background-image: url(\\" + ___CSS_LOADER_URL___0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\") url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n background: ___CSS_LOADER_URL___;\\\\n background: ___CSS_LOADER_URL___INDEX___;\\\\n background: ___CSS_LOADER_URL___99999___;\\\\n background: ___CSS_LOADER_IMPORT___;\\\\n background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n._2rb58RF5u2ij-3X8XSJaVP {\\\\n background: url(\\" + ___CSS_LOADER_URL___20___ + \\");\\\\n}\\\\n\\\\n.mrf4tRz4T71pNku_3IMH3 {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.c5dNFA35opKWoGz7aRj0k {\\\\n background: url(\\" + ___CSS_LOADER_URL___21___ + \\");\\\\n}\\\\n\\\\n._2Q5a0g3xEHAboOADfIxHa5 {\\\\n background: url(\\" + ___CSS_LOADER_URL___2___ + \\");\\\\n}\\\\n\\\\n._2TX-7lb63hK5h5DzELIAbU {\\\\n background: url(\\" + ___CSS_LOADER_URL___22___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___23___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___24___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n._7NvzxsKlD5xT5cUVu5Ad- {\\\\n /* Broken */\\\\n background-image: -webkit-image-set();\\\\n background-image: -webkit-image-set('');\\\\n background-image: image-set();\\\\n background-image: image-set('');\\\\n background-image: image-set(\\\\\\"\\\\\\");\\\\n background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n background-image: image-set(url());\\\\n background-image: image-set(\\\\n url()\\\\n );\\\\n background-image: image-set(URL());\\\\n background-image: image-set(url(''));\\\\n background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n background-image: image-set(url('') 1x);\\\\n background-image: image-set(1x);\\\\n background-image: image-set(\\\\n 1x\\\\n );\\\\n background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n /* Strings */\\\\n background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___27___ + \\" 1x, \\" + ___CSS_LOADER_URL___27___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL___25___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL___26___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL___28___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___29___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___30___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___31___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL___32___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___4___ + \\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n}\\\\n\\", \\"\\"]);
+// Exports
+exports.locals = {
+ \\"class\\": \\"_7NvzxsKlD5xT5cUVu5Ad-\\",
+ \\"highlight\\": \\"lml_5t-nQdGlKc9OtKjUO\\",
+ \\"a\\": \\"_1fj5hnOVZ8KZVIGyZbPW3p\\",
+ \\"pure-url\\": \\"_2rb58RF5u2ij-3X8XSJaVP\\",
+ \\"not-resolved\\": \\"mrf4tRz4T71pNku_3IMH3\\",
+ \\"above-below\\": \\"c5dNFA35opKWoGz7aRj0k\\",
+ \\"tilde\\": \\"_2Q5a0g3xEHAboOADfIxHa5\\",
+ \\"aliases\\": \\"_2TX-7lb63hK5h5DzELIAbU\\",
+ \\"anim\\": \\"O9YPhh3OZdzrkj25z-J92\\"
+};"
+`;
+
+exports[`url option true and modules \`true\`: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(120:3) Unable to find uri in 'background: green url() xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(124:3) Unable to find uri in 'background: green url('') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(128:3) Unable to find uri in 'background: green url(\\"\\") xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(132:3) Unable to find uri in 'background: green url(' ') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(136:3) Unable to find uri in 'background: green url(
+ ) xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(216:3) Unable to find uri in 'background-image: -webkit-image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(218:3) Unable to find uri in 'background-image: image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(219:3) Unable to find uri in 'background-image: image-set(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(220:3) Unable to find uri in 'background-image: image-set(\\"\\" 1x)'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(221:3) Unable to find uri in 'background-image: image-set(url())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(222:3) Unable to find uri in 'background-image: image-set(
+ url()
+ )'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(225:3) Unable to find uri in 'background-image: image-set(URL())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(226:3) Unable to find uri in 'background-image: image-set(url(''))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(227:3) Unable to find uri in 'background-image: image-set(url(\\"\\"))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(228:3) Unable to find uri in 'background-image: image-set(url('') 1x)'",
+]
+`;
+
+exports[`url option true: errors 1`] = `Array []`;
+
+exports[`url option true: module (evaluated) 1`] = `
+Array [
+ Array [
+ 2,
+ ".bar {
+ background: url(/webpack/public/path/img-from-imported.png);
+}
+",
+ "",
+ ],
+ Array [
+ 1,
+ ".class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(
+ /webpack/public/path/img.png
+ );
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url( /webpack/public/path/img.png ) xyz;
+}
+
+.class {
+ background: green url(/webpack/public/path/img.png) url(/webpack/public/path/other-img.png) xyz;
+}
+
+.class {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+.class {
+ background: green url( \\"/webpack/public/path/img img.png\\" ) xyz;
+}
+
+.class {
+ background: green url(/img.png) xyz;
+}
+
+.class {
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8, \\");
+}
+
+.class {
+ background-image: url(\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\");
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8, #filter');
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');
+}
+
+.highlight {
+ filter: url(#highlight);
+}
+
+.highlight {
+ filter: url('#line-marker');
+}
+
+@font-face {
+ src: url(/webpack/public/path/font.woff) format('woff'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot) format('eot'),
+ url(/webpack/public/path/font.ttf) format('truetype'),
+ url(\\"/webpack/public/path/font with spaces.eot\\") format(\\"embedded-opentype\\"),
+ url(/webpack/public/path/font.svg#svgFontName) format('svg'),
+ url(/webpack/public/path/font.woff2) format('woff2'),
+ url(/webpack/public/path/font.eot?#iefix) format('embedded-opentype'),
+ url(\\"/webpack/public/path/font with spaces.eot?#iefix\\") format('embedded-opentype');
+}
+
+@media (min-width: 500px) {
+ body {
+ background: url(/webpack/public/path/img.png);
+ }
+}
+
+a {
+ content: \\"do not use url(path)\\";
+}
+
+b {
+ content: 'do not \\"use\\" url(path)';
+}
+
+@keyframes anim {
+ background: green url(/webpack/public/path/img.png) xyz;
+}
+
+.a {
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+.a {
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x)
+}
+
+.class {
+ background: green url() xyz;
+}
+
+.class {
+ background: green url('') xyz;
+}
+
+.class {
+ background: green url(\\"\\") xyz;
+}
+
+.class {
+ background: green url(' ') xyz;
+}
+
+.class {
+ background: green url(
+ ) xyz;
+}
+
+.class {
+ background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png#hash);
+}
+
+.class {
+ background: url(/webpack/public/path/img.png);
+}
+
+.class {
+ background-image: url(/webpack/public/path/img.png) url(\\"data:image/svg+xml;charset=utf-8, \\") url(/webpack/public/path/img.png);
+}
+
+.class {
+ background: ___CSS_LOADER_URL___;
+ background: ___CSS_LOADER_URL___INDEX___;
+ background: ___CSS_LOADER_URL___99999___;
+ background: ___CSS_LOADER_IMPORT___;
+ background: ___CSS_LOADER_IMPORT___INDEX___;
+ background: ___CSS_LOADER_IMPORT___99999___;
+}
+
+.pure-url {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.not-resolved {
+ background: url('/img-simple.png');
+}
+
+.above-below {
+ background: url(/webpack/public/path/img-simple.png);
+}
+
+.tilde {
+ background: url(/webpack/public/path/img.png);
+}
+
+.aliases {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+a {
+ background: url(/webpack/public/path/img.png);
+}
+
+@font-face {
+ src: url(\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\");
+}
+
+.class {
+ /* Broken */
+ background-image: -webkit-image-set();
+ background-image: -webkit-image-set('');
+ background-image: image-set();
+ background-image: image-set('');
+ background-image: image-set(\\"\\");
+ background-image: image-set(\\"\\" 1x);
+ background-image: image-set(url());
+ background-image: image-set(
+ url()
+ );
+ background-image: image-set(URL());
+ background-image: image-set(url(''));
+ background-image: image-set(url(\\"\\"));
+ background-image: image-set(url('') 1x);
+ background-image: image-set(1x);
+ background-image: image-set(
+ 1x
+ );
+ background: image-set(calc(1rem + 1px) 1x);
+
+ /* Strings */
+ background-image: -webkit-image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img img.png\\" 1x, \\"/webpack/public/path/img img.png\\" 2x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x),
+ image-set(\\"/webpack/public/path/img1x.png\\" 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+ background-image: image-set(
+ \\"/webpack/public/path/img1x.png\\" 1x,
+ \\"/webpack/public/path/img2x.png\\" 2x,
+ \\"/webpack/public/path/img3x.png\\" 600dpi
+ );
+ background-image: image-set(\\"/webpack/public/path/img1x.png\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png#hash\\" 1x);
+ background-image: image-set(\\"/webpack/public/path/img1x.png?#iefix\\" 1x);
+
+ /* With \`url\` function */
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: -webkit-image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: -webkit-image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x
+ );
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, url(/webpack/public/path/img2x.png) 2x);
+ background-image: image-set(
+ url(/webpack/public/path/img1x.png) 1x,
+ url(/webpack/public/path/img2x.png) 2x,
+ url(/webpack/public/path/img3x.png) 600dpi
+ );
+ background-image: image-set(url(\\"/webpack/public/path/img img.png\\") 1x, url(\\"/webpack/public/path/img img.png\\") 2x);
+
+ background-image: image-set(url(/webpack/public/path/img1x.png) 1x, \\"/webpack/public/path/img2x.png\\" 2x);
+}
+",
+ "",
+ ],
+]
+`;
+
+exports[`url option true: module 1`] = `
+"exports = module.exports = require(\\"../../../src/runtime/api.js\\")(false);
+// Imports
+exports.i(require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"), \\"\\");
+var getUrl = require(\\"../../../src/runtime/getUrl.js\\");
+var ___CSS_LOADER_URL___0___ = getUrl(require(\\"./img.png\\"));
+var ___CSS_LOADER_URL___1___ = getUrl(require(\\"./img.png\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___2___ = getUrl(require(\\"package/img.png\\"));
+var ___CSS_LOADER_URL___3___ = getUrl(require(\\"./other-img.png\\"));
+var ___CSS_LOADER_URL___4___ = getUrl(require(\\"./img img.png\\"));
+var ___CSS_LOADER_URL___5___ = getUrl(require(\\"./font.woff\\"));
+var ___CSS_LOADER_URL___6___ = getUrl(require(\\"./font.woff2\\"));
+var ___CSS_LOADER_URL___7___ = getUrl(require(\\"./font.eot\\"));
+var ___CSS_LOADER_URL___8___ = getUrl(require(\\"package/font.ttf\\"));
+var ___CSS_LOADER_URL___9___ = getUrl(require(\\"./font with spaces.eot\\"));
+var ___CSS_LOADER_URL___10___ = getUrl(require(\\"./font.svg\\") + \\"#svgFontName\\");
+var ___CSS_LOADER_URL___11___ = getUrl(require(\\"./font.woff2?foo=bar\\"));
+var ___CSS_LOADER_URL___12___ = getUrl(require(\\"./font.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___13___ = getUrl(require(\\"./font with spaces.eot\\") + \\"?#iefix\\");
+var ___CSS_LOADER_URL___14___ = getUrl(require(\\"./img1x.png\\"));
+var ___CSS_LOADER_URL___15___ = getUrl(require(\\"./img2x.png\\"));
+var ___CSS_LOADER_URL___16___ = getUrl(require(\\"./img.png?foo\\"));
+var ___CSS_LOADER_URL___17___ = getUrl(require(\\"./img.png?foo=bar\\"));
+var ___CSS_LOADER_URL___18___ = getUrl(require(\\"./img.png?foo=bar\\") + \\"#hash\\");
+var ___CSS_LOADER_URL___19___ = getUrl(require(\\"./img.png?\\"));
+var ___CSS_LOADER_URL___20___ = getUrl(require(\\"./img-simple.png\\"));
+var ___CSS_LOADER_URL___21___ = getUrl(require(\\"../url/img-simple.png\\"));
+var ___CSS_LOADER_URL___22___ = getUrl(require(\\"aliasesImg/img.png\\"));
+var ___CSS_LOADER_URL___23___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___24___ = getUrl(require(\\"./nested/img.png\\"));
+var ___CSS_LOADER_URL___25___ = getUrl(require(\\"./img1x.png\\"), true);
+var ___CSS_LOADER_URL___26___ = getUrl(require(\\"./img2x.png\\"), true);
+var ___CSS_LOADER_URL___27___ = getUrl(require(\\"./img img.png\\"), true);
+var ___CSS_LOADER_URL___28___ = getUrl(require(\\"./img3x.png\\"), true);
+var ___CSS_LOADER_URL___29___ = getUrl(require(\\"./img1x.png?foo=bar\\"), true);
+var ___CSS_LOADER_URL___30___ = getUrl(require(\\"./img1x.png\\") + \\"#hash\\", true);
+var ___CSS_LOADER_URL___31___ = getUrl(require(\\"./img1x.png\\") + \\"?#iefix\\", true);
+var ___CSS_LOADER_URL___32___ = getUrl(require(\\"./img3x.png\\"));
+// Module
+exports.push([module.id, \\".class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\n \\" + ___CSS_LOADER_URL___0___ + \\"\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\" + ___CSS_LOADER_URL___2___ + \\") url(\\" + ___CSS_LOADER_URL___3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL___4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(/img.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\\\\\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8, #filter');\\\\n}\\\\n\\\\n.class {\\\\n filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url(#highlight);\\\\n}\\\\n\\\\n.highlight {\\\\n filter: url('#line-marker');\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\" + ___CSS_LOADER_URL___5___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL___6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___7___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL___8___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL___9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL___10___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL___11___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL___12___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL___13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n }\\\\n}\\\\n\\\\na {\\\\n content: \\\\\\"do not use url(path)\\\\\\";\\\\n}\\\\n\\\\nb {\\\\n content: 'do not \\\\\\"use\\\\\\" url(path)';\\\\n}\\\\n\\\\n@keyframes anim {\\\\n background: green url(\\" + ___CSS_LOADER_URL___0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x)\\\\n}\\\\n\\\\n.class {\\\\n background: green url() xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url('') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\\\"\\\\\\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(' ') xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\\\n ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___16___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL___19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\" + ___CSS_LOADER_URL___0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8, \\\\\\") url(\\" + ___CSS_LOADER_URL___0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: ___CSS_LOADER_URL___;\\\\n background: ___CSS_LOADER_URL___INDEX___;\\\\n background: ___CSS_LOADER_URL___99999___;\\\\n background: ___CSS_LOADER_IMPORT___;\\\\n background: ___CSS_LOADER_IMPORT___INDEX___;\\\\n background: ___CSS_LOADER_IMPORT___99999___;\\\\n}\\\\n\\\\n.pure-url {\\\\n background: url(\\" + ___CSS_LOADER_URL___20___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL___21___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n background: url(\\" + ___CSS_LOADER_URL___2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n background: url(\\" + ___CSS_LOADER_URL___22___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___23___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL___24___ + \\");\\\\n}\\\\n\\\\n@font-face {\\\\n src: url(\\\\\\"//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot\\\\\\");\\\\n}\\\\n\\\\n.class {\\\\n /* Broken */\\\\n background-image: -webkit-image-set();\\\\n background-image: -webkit-image-set('');\\\\n background-image: image-set();\\\\n background-image: image-set('');\\\\n background-image: image-set(\\\\\\"\\\\\\");\\\\n background-image: image-set(\\\\\\"\\\\\\" 1x);\\\\n background-image: image-set(url());\\\\n background-image: image-set(\\\\n url()\\\\n );\\\\n background-image: image-set(URL());\\\\n background-image: image-set(url(''));\\\\n background-image: image-set(url(\\\\\\"\\\\\\"));\\\\n background-image: image-set(url('') 1x);\\\\n background-image: image-set(1x);\\\\n background-image: image-set(\\\\n 1x\\\\n );\\\\n background: image-set(calc(1rem + 1px) 1x);\\\\n\\\\n /* Strings */\\\\n background-image: -webkit-image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___27___ + \\" 1x, \\" + ___CSS_LOADER_URL___27___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL___25___ + \\" 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL___25___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL___26___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL___28___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___29___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___30___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL___31___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL___15___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL___32___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL___4___ + \\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL___14___ + \\") 1x, \\" + ___CSS_LOADER_URL___26___ + \\" 2x);\\\\n}\\\\n\\", \\"\\"]);
+"
+`;
+
+exports[`url option true: warnings 1`] = `
+Array [
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(120:3) Unable to find uri in 'background: green url() xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(124:3) Unable to find uri in 'background: green url('') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(128:3) Unable to find uri in 'background: green url(\\"\\") xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(132:3) Unable to find uri in 'background: green url(' ') xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(136:3) Unable to find uri in 'background: green url(
+ ) xyz'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(216:3) Unable to find uri in 'background-image: -webkit-image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(218:3) Unable to find uri in 'background-image: image-set('')'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(219:3) Unable to find uri in 'background-image: image-set(\\"\\")'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(220:3) Unable to find uri in 'background-image: image-set(\\"\\" 1x)'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(221:3) Unable to find uri in 'background-image: image-set(url())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(222:3) Unable to find uri in 'background-image: image-set(
+ url()
+ )'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(225:3) Unable to find uri in 'background-image: image-set(URL())'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(226:3) Unable to find uri in 'background-image: image-set(url(''))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(227:3) Unable to find uri in 'background-image: image-set(url(\\"\\"))'",
+ "ModuleWarning: Module Warning (from \`replaced original path\`):
+Warning
+
+(228:3) Unable to find uri in 'background-image: image-set(url('') 1x)'",
+]
+`;
diff --git a/test/__snapshots__/validate-options.test.js.snap b/test/__snapshots__/validate-options.test.js.snap
new file mode 100644
index 00000000..4390ddad
--- /dev/null
+++ b/test/__snapshots__/validate-options.test.js.snap
@@ -0,0 +1,158 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`validate options 1`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.url should be one of these:
+ boolean | function
+ -> Enables/Disables 'url'/'image-set' functions handling (https://github.com/webpack-contrib/css-loader#url).
+ Details:
+ * options.url should be a boolean.
+ * options.url should be an instance of function."
+`;
+
+exports[`validate options 2`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.import should be one of these:
+ boolean | function
+ -> Enables/Disables '@import' at-rules handling (https://github.com/webpack-contrib/css-loader#import).
+ Details:
+ * options.import should be a boolean.
+ * options.import should be an instance of function."
+`;
+
+exports[`validate options 3`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules should be one of these:
+ boolean | \\"local\\" | \\"global\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }
+ -> Enables/Disables CSS Modules and their configuration (https://github.com/webpack-contrib/css-loader#modules).
+ Details:
+ * options.modules should be a boolean.
+ * options.modules should be one of these:
+ \\"local\\" | \\"global\\"
+ * options.modules should be an object:
+ object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }"
+`;
+
+exports[`validate options 4`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules should be one of these:
+ boolean | \\"local\\" | \\"global\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }
+ -> Enables/Disables CSS Modules and their configuration (https://github.com/webpack-contrib/css-loader#modules).
+ Details:
+ * options.modules should be a boolean.
+ * options.modules should be one of these:
+ \\"local\\" | \\"global\\"
+ * options.modules should be an object:
+ object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }"
+`;
+
+exports[`validate options 5`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules should be one of these:
+ boolean | \\"local\\" | \\"global\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }
+ -> Enables/Disables CSS Modules and their configuration (https://github.com/webpack-contrib/css-loader#modules).
+ Details:
+ * options.modules should be a boolean.
+ * options.modules should be one of these:
+ \\"local\\" | \\"global\\"
+ * options.modules should be an object:
+ object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }"
+`;
+
+exports[`validate options 6`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules.mode should be one of these:
+ \\"local\\" | \\"global\\""
+`;
+
+exports[`validate options 7`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules.mode should be one of these:
+ \\"local\\" | \\"global\\""
+`;
+
+exports[`validate options 8`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules.mode should be one of these:
+ \\"local\\" | \\"global\\""
+`;
+
+exports[`validate options 9`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules.mode should be one of these:
+ \\"local\\" | \\"global\\""
+`;
+
+exports[`validate options 10`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules.localIdentName should be a string."
+`;
+
+exports[`validate options 11`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules.context should be a string."
+`;
+
+exports[`validate options 12`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules.hashPrefix should be a string."
+`;
+
+exports[`validate options 13`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules should be one of these:
+ boolean | \\"local\\" | \\"global\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }
+ -> Enables/Disables CSS Modules and their configuration (https://github.com/webpack-contrib/css-loader#modules).
+ Details:
+ * options.modules.getLocalIdent should be a boolean.
+ * options.modules.getLocalIdent should be an instance of function.
+ * options.modules.getLocalIdent should be one of these:
+ boolean | function"
+`;
+
+exports[`validate options 14`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.modules should be one of these:
+ boolean | \\"local\\" | \\"global\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }
+ -> Enables/Disables CSS Modules and their configuration (https://github.com/webpack-contrib/css-loader#modules).
+ Details:
+ * options.modules.localIdentRegExp should be a string.
+ * options.modules.localIdentRegExp should be an instance of RegExp.
+ * options.modules.localIdentRegExp should be one of these:
+ string | RegExp"
+`;
+
+exports[`validate options 15`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.sourceMap should be a boolean.
+ -> Enables/Disables generation of source maps (https://github.com/webpack-contrib/css-loader#sourcemap)."
+`;
+
+exports[`validate options 16`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.localsConvention should be one of these:
+ \\"asIs\\" | \\"camelCase\\" | \\"camelCaseOnly\\" | \\"dashes\\" | \\"dashesOnly\\"
+ -> Style of exported classnames (https://github.com/webpack-contrib/css-loader#localsconvention)."
+`;
+
+exports[`validate options 17`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.importLoaders should be one of these:
+ boolean | number
+ -> Enables/Disables or setups number of loaders applied before CSS loader (https://github.com/webpack-contrib/css-loader#importloaders).
+ Details:
+ * options.importLoaders should be a boolean.
+ * options.importLoaders should be a number."
+`;
+
+exports[`validate options 18`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options.onlyLocals should be a boolean.
+ -> Export only locals (https://github.com/webpack-contrib/css-loader#onlylocals)."
+`;
+
+exports[`validate options 19`] = `
+"Invalid options object. CSS Loader has been initialised using an options object that does not match the API schema.
+ - options has an unknown property 'unknown'. These properties are valid:
+ object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals? }"
+`;
diff --git a/test/camelCaseTest.js b/test/camelCaseTest.js
deleted file mode 100644
index 86803005..00000000
--- a/test/camelCaseTest.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/*globals describe */
-
-var test = require("./helpers").test;
-
-describe("camelCase", function() {
- var css = ".btn-info_is-disabled { color: blue; }";
- var exports = {
- with: [
- [1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; }", ""]
- ],
- without: [
- [1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; }", ""]
- ],
- dashes: [
- [1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; }", ""]
- ]
- };
- exports.with.locals = {'btn-info_is-disabled': '_1L-rnCOXCE_7H94L5XT4uB'};
- exports.without.locals = {btnInfoIsDisabled: '_1L-rnCOXCE_7H94L5XT4uB', 'btn-info_is-disabled': '_1L-rnCOXCE_7H94L5XT4uB'};
- exports.dashes.locals = {btnInfo_isDisabled: '_1L-rnCOXCE_7H94L5XT4uB', 'btn-info_is-disabled': '_1L-rnCOXCE_7H94L5XT4uB'};
- test("with", css, exports.with, "?modules");
- test("without", css, exports.without, "?modules&camelCase");
- test("dashes", css, exports.dashes, "?modules&camelCase=dashes");
-});
diff --git a/test/cjs.test.js b/test/cjs.test.js
new file mode 100644
index 00000000..8cad5877
--- /dev/null
+++ b/test/cjs.test.js
@@ -0,0 +1,8 @@
+import loader from '../src';
+import CJSLoader from '../src/cjs';
+
+describe('CJS', () => {
+ it('should exported loader', () => {
+ expect(CJSLoader).toEqual(loader);
+ });
+});
diff --git a/test/cssBaseTest.js b/test/cssBaseTest.js
deleted file mode 100644
index 73b6f79d..00000000
--- a/test/cssBaseTest.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*globals describe it*/
-
-var base = require("../lib/css-base");
-
-describe("css-base", function() {
- it("should toString a single module", function() {
- var m = base();
- m.push([1, "body { a: 1; }", ""]);
- m.toString().should.be.eql("body { a: 1; }");
- });
- it("should toString multiple modules", function() {
- var m = base();
- m.push([2, "body { b: 2; }", ""]);
- m.push([1, "body { a: 1; }", ""]);
- m.toString().should.be.eql("body { b: 2; }body { a: 1; }");
- });
- it("should toString with media query", function() {
- var m = base();
- m.push([1, "body { a: 1; }", "screen"]);
- m.toString().should.be.eql("@media screen{body { a: 1; }}");
- });
- it("should import modules", function() {
- var m = base();
- var m1 = [1, "body { a: 1; }", "screen"];
- var m2 = [2, "body { b: 2; }", ""];
- var m3 = [3, "body { c: 3; }", ""];
- var m4 = [4, "body { d: 4; }", ""];
- m.i([m2, m3], "");
- m.i([m2], "");
- m.i([m2, m4], "print");
- m.push(m1);
- m.toString().should.be.eql("body { b: 2; }" +
- "body { c: 3; }" +
- "@media print{body { d: 4; }}" +
- "@media screen{body { a: 1; }}");
- });
-});
diff --git a/test/customGetLocalIdentTest.js b/test/customGetLocalIdentTest.js
deleted file mode 100644
index ce581497..00000000
--- a/test/customGetLocalIdentTest.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*globals describe */
-
-var testLocals = require("./helpers").testLocals;
-
-describe("customGetLocalIdent", function() {
- testLocals("should return only locals",
- ".abc :local(.def) { color: red; } :local .ghi .jkl { color: blue; }",
- {
- def: "foo",
- ghi: "foo",
- jkl: "foo"
- },
- {
- getLocalIdent: function () {
- return 'foo'
- }
- }
- );
-});
diff --git a/test/fixtures/basic.css b/test/fixtures/basic.css
new file mode 100644
index 00000000..be9ee34e
--- /dev/null
+++ b/test/fixtures/basic.css
@@ -0,0 +1,137 @@
+@charset "UTF-8";
+
+@import 'imported.css';
+
+/* Comment */
+
+.class {
+ color: red;
+ background: url("./url/img.png");
+}
+
+.class-duplicate-url {
+ background: url("./url/img.png");
+}
+
+:root {
+ --foo: 1px;
+ --bar: 2px;
+}
+
+.class { a: b c d; }
+
+.two {}
+
+.u-m\+ { a: b c d; }
+
+.class { content: "\F10C" }
+
+@media only screen and (max-width: 600px) {
+ body {
+ background-color: lightblue;
+ }
+}
+
+.class {
+ content: "\2193";
+ content: "\2193\2193";
+ content: "\2193 \2193";
+ content: "\2193\2193\2193";
+ content: "\2193 \2193 \2193";
+}
+
+.-top {}
+.\-top {}
+
+#\#test {}
+
+.grid {
+ display: flex;
+ flex-wrap: wrap;
+}
+.grid.\-top {
+ align-items: flex-start;
+}
+.grid.-top {
+ align-items: flex-start;
+}
+.grid.\-middle {
+ align-items: center;
+}
+.grid.\-bottom {
+ align-items: flex-end;
+}
+
+.u-m\00002b {}
+
+.u-m00002b {}
+
+#u-m\+ {}
+
+body {
+ font-family: '微软雅黑'; /* some chinese font name */
+}
+
+.myStyle {
+ content: '\e901';
+}
+
+.myStyle {
+ content: '\E901';
+}
+
+.♫ {}
+
+.\3A \`\( {} /* matches elements with class=":`(" */
+.\31 a2b3c {} /* matches elements with class="1a2b3c" */
+#\#fake-id {} /* matches the element with id="#fake-id" */
+#-a-b-c- {} /* matches the element with id="-a-b-c-" */
+#© {} /* matches the element with id="©" */
+
+:root {
+ --title-align: center;
+ --sr-only: {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0,0,0,0);
+ white-space: nowrap;
+ clip-path: inset(50%);
+ border: 0;
+ };
+}
+
+.test {
+ content: "\2014\A0";
+ content: "\2014 \A0";
+ content: "\A0 \2014";
+ content: "\A0\2014";
+ margin-top: 1px\9;
+ background-color: #000\9;
+}
+
+.light.on .bulb:before{
+ content: '💡';
+}
+
+.base64 {
+ background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==);
+}
+
+a[href=''] {
+ color: red;
+}
+
+a[href='' i] {
+ color: red;
+}
+
+a[href=""] {
+ color: blue;
+}
+
+a[href="" i] {
+ color: blue;
+}
diff --git a/test/fixtures/basic.js b/test/fixtures/basic.js
new file mode 100644
index 00000000..1aef6aee
--- /dev/null
+++ b/test/fixtures/basic.js
@@ -0,0 +1,4 @@
+/* eslint-disable */
+const styles = require('./basic.css');
+
+console.log(styles);
diff --git a/test/fixtures/empty.css b/test/fixtures/empty.css
new file mode 100644
index 00000000..e69de29b
diff --git a/test/fixtures/icss/tests-cases/duplicate-export-in-multiple-export/source.css b/test/fixtures/icss/tests-cases/duplicate-export-in-multiple-export/source.css
new file mode 100644
index 00000000..090df1bf
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/duplicate-export-in-multiple-export/source.css
@@ -0,0 +1,7 @@
+:export {
+ _test: _test;
+}
+
+:export {
+ _test: _right_value;
+}
diff --git a/test/fixtures/icss/tests-cases/duplicate-export/source.css b/test/fixtures/icss/tests-cases/duplicate-export/source.css
new file mode 100644
index 00000000..bda50f8a
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/duplicate-export/source.css
@@ -0,0 +1,4 @@
+:export {
+ _test: _test;
+ _test: _right_value;
+}
diff --git a/test/fixtures/icss/tests-cases/empty-export/source.css b/test/fixtures/icss/tests-cases/empty-export/source.css
new file mode 100644
index 00000000..b76d40c8
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/empty-export/source.css
@@ -0,0 +1 @@
+:export {}
diff --git a/test/fixtures/icss/tests-cases/empty-import/source.css b/test/fixtures/icss/tests-cases/empty-import/source.css
new file mode 100644
index 00000000..fa423e05
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/empty-import/source.css
@@ -0,0 +1 @@
+:import("./vars.css") {}
diff --git a/test/fixtures/icss/tests-cases/export-reserved-keywords/source.css b/test/fixtures/icss/tests-cases/export-reserved-keywords/source.css
new file mode 100644
index 00000000..efb51c2d
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/export-reserved-keywords/source.css
@@ -0,0 +1,4 @@
+:export {
+ constructor: constructor;
+ toString: toString;
+}
diff --git a/test/fixtures/icss/tests-cases/export/source.css b/test/fixtures/icss/tests-cases/export/source.css
new file mode 100644
index 00000000..10b9ec77
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/export/source.css
@@ -0,0 +1,3 @@
+:export {
+ _test: _test
+}
diff --git a/test/fixtures/icss/tests-cases/import-reserved-keywords/source.css b/test/fixtures/icss/tests-cases/import-reserved-keywords/source.css
new file mode 100644
index 00000000..55e62d09
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/import-reserved-keywords/source.css
@@ -0,0 +1,14 @@
+:import("./vars.css") {
+ constructor: primary-color;
+ toString: secondary-color;
+}
+
+.className {
+ color: constructor;
+ display: toString;
+}
+
+:export {
+ primary-color: constructor;
+ secondary-color: toString;
+}
diff --git a/test/fixtures/icss/tests-cases/import-reserved-keywords/vars.css b/test/fixtures/icss/tests-cases/import-reserved-keywords/vars.css
new file mode 100644
index 00000000..f43e1598
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/import-reserved-keywords/vars.css
@@ -0,0 +1,4 @@
+:export {
+ primary-color: red;
+ secondary-color: block;
+}
diff --git a/test/fixtures/icss/tests-cases/import/source.css b/test/fixtures/icss/tests-cases/import/source.css
new file mode 100644
index 00000000..4d715aa2
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/import/source.css
@@ -0,0 +1,11 @@
+:import("./vars.css") {
+ IMPORTED_NAME: primary-color;
+}
+
+.className {
+ color: IMPORTED_NAME;
+}
+
+:export {
+ primary-color: IMPORTED_NAME
+}
diff --git a/test/fixtures/icss/tests-cases/import/vars.css b/test/fixtures/icss/tests-cases/import/vars.css
new file mode 100644
index 00000000..d4fdfda6
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/import/vars.css
@@ -0,0 +1,3 @@
+:export {
+ primary-color: red;
+}
diff --git a/test/fixtures/icss/tests-cases/multiple-export/source.css b/test/fixtures/icss/tests-cases/multiple-export/source.css
new file mode 100644
index 00000000..45724d97
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/multiple-export/source.css
@@ -0,0 +1,7 @@
+:export {
+ _test: _test
+}
+
+:export {
+ _foo: _bar
+}
diff --git a/test/fixtures/icss/tests-cases/multiple-keys-values-in-export/source.css b/test/fixtures/icss/tests-cases/multiple-keys-values-in-export/source.css
new file mode 100644
index 00000000..8449fe4e
--- /dev/null
+++ b/test/fixtures/icss/tests-cases/multiple-keys-values-in-export/source.css
@@ -0,0 +1,7 @@
+:export {
+ _test: _test;
+ _test1: 1;
+ _test2: 'string';
+ _test3: 1px 2px 3px;
+ _test4: 1px 2px 3px, 1px 2px 3px;
+}
diff --git a/test/fixtures/import/alias.css b/test/fixtures/import/alias.css
new file mode 100644
index 00000000..17fd95e0
--- /dev/null
+++ b/test/fixtures/import/alias.css
@@ -0,0 +1,3 @@
+.alias {
+ color: red;
+}
diff --git a/test/fixtures/import/img.png b/test/fixtures/import/img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/import/img.png differ
diff --git a/test/fixtures/import/import.css b/test/fixtures/import/import.css
new file mode 100644
index 00000000..f2f9f778
--- /dev/null
+++ b/test/fixtures/import/import.css
@@ -0,0 +1,67 @@
+@import url(test.css);
+@import url('test.css');
+@import url("test.css");
+@IMPORT url(test.css);
+@import URL(test.css);
+@import url(test.css );
+@import url( test.css);
+@import url( test.css );
+@import url(
+ test.css
+);
+@import url();
+@import url('');
+@import url("");
+@import "test.css";
+@import 'test.css';
+@import '';
+@import "";
+@import " ";
+@import "
+";
+@import url();
+@import url('');
+@import url("");
+@import url(test.css) screen and print;
+@import url(test.css) SCREEN AND PRINT;
+@import url(test.css)screen and print;
+@import url(test.css) screen and print;
+@import url(test-media.css) screen and print;
+@import url(test-other.css) (min-width: 100px);
+@import url(http://example.com/style.css);
+@import url(http://example.com/style.css);
+@import url(http://example.com/style.css#hash);
+@import url(http://example.com/style.css?#hash);
+@import url(http://example.com/style.css?foo=bar#hash);
+@import url(http://example.com/other-style.css) screen and print;
+@import url(http://example.com/other-style.css) screen and print;
+@import url("//example.com/style.css");
+@import url(~package/test.css);
+@import ;
+@import foo-bar;
+@import-normalize;
+@import url('http://') :root {}
+@import url('query.css?foo=1&bar=1');
+@import url('other-query.css?foo=1&bar=1#hash');
+@import url('other-query.css?foo=1&bar=1#hash') screen and print;
+@import url('https://fonts.googleapis.com/css?family=Roboto');
+@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC');
+@import url('https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto');
+
+.class {
+ a: b c d;
+}
+
+.foo {
+ @import 'path.css';
+}
+
+@import url('./relative.css');
+@import url('../import/top-relative.css');
+@import url(~package/tilde.css);
+@import url(~aliasesImport/alias.css);
+@import url('./url.css');
+
+.background {
+ background: url('./img.png');
+}
diff --git a/test/fixtures/import/node_modules/package/test.css b/test/fixtures/import/node_modules/package/test.css
new file mode 100644
index 00000000..732a53ca
--- /dev/null
+++ b/test/fixtures/import/node_modules/package/test.css
@@ -0,0 +1,3 @@
+.test {
+ d: d
+}
diff --git a/test/fixtures/import/node_modules/package/tilde.css b/test/fixtures/import/node_modules/package/tilde.css
new file mode 100644
index 00000000..c895f358
--- /dev/null
+++ b/test/fixtures/import/node_modules/package/tilde.css
@@ -0,0 +1,3 @@
+.tilde {
+ color: yellow;
+}
diff --git a/test/fixtures/import/other-query.css b/test/fixtures/import/other-query.css
new file mode 100644
index 00000000..a7d49c99
--- /dev/null
+++ b/test/fixtures/import/other-query.css
@@ -0,0 +1,3 @@
+.other-query {
+ f: f;
+}
diff --git a/test/fixtures/import/query.css b/test/fixtures/import/query.css
new file mode 100644
index 00000000..4e9fb508
--- /dev/null
+++ b/test/fixtures/import/query.css
@@ -0,0 +1,3 @@
+.query {
+ e: e;
+}
diff --git a/test/fixtures/import/relative.css b/test/fixtures/import/relative.css
new file mode 100644
index 00000000..73597627
--- /dev/null
+++ b/test/fixtures/import/relative.css
@@ -0,0 +1,3 @@
+.relative {
+ color: red;
+}
diff --git a/test/fixtures/import/test-media.css b/test/fixtures/import/test-media.css
new file mode 100644
index 00000000..72921bc7
--- /dev/null
+++ b/test/fixtures/import/test-media.css
@@ -0,0 +1,5 @@
+@import url('test-nested-media.css') (min-width: 100px);
+
+.test {
+ c: c;
+}
diff --git a/test/fixtures/import/test-nested-media.css b/test/fixtures/import/test-nested-media.css
new file mode 100644
index 00000000..8fcc420b
--- /dev/null
+++ b/test/fixtures/import/test-nested-media.css
@@ -0,0 +1,3 @@
+a {
+ b: b;
+}
diff --git a/test/fixtures/import/test-other.css b/test/fixtures/import/test-other.css
new file mode 100644
index 00000000..fc97be2e
--- /dev/null
+++ b/test/fixtures/import/test-other.css
@@ -0,0 +1,3 @@
+.test {
+ d: d;
+}
diff --git a/test/fixtures/import/test.css b/test/fixtures/import/test.css
new file mode 100644
index 00000000..c931aa28
--- /dev/null
+++ b/test/fixtures/import/test.css
@@ -0,0 +1,3 @@
+.test {
+ a: a;
+}
diff --git a/test/fixtures/import/top-relative.css b/test/fixtures/import/top-relative.css
new file mode 100644
index 00000000..13a954d0
--- /dev/null
+++ b/test/fixtures/import/top-relative.css
@@ -0,0 +1,3 @@
+.top-relative {
+ color: black;
+}
diff --git a/test/fixtures/import/url.css b/test/fixtures/import/url.css
new file mode 100644
index 00000000..859daa15
--- /dev/null
+++ b/test/fixtures/import/url.css
@@ -0,0 +1,3 @@
+.background-imported {
+ background: url('./img.png');
+}
diff --git a/test/fixtures/imported.css b/test/fixtures/imported.css
new file mode 100644
index 00000000..a15c877a
--- /dev/null
+++ b/test/fixtures/imported.css
@@ -0,0 +1,3 @@
+.foo {
+ color: red;
+}
diff --git a/test/fixtures/invalid.css b/test/fixtures/invalid.css
new file mode 100644
index 00000000..113c2f02
--- /dev/null
+++ b/test/fixtures/invalid.css
@@ -0,0 +1,3 @@
+.some {
+ invalid css;
+}
diff --git a/test/fixtures/modules/alias.css b/test/fixtures/modules/alias.css
new file mode 100644
index 00000000..a09f6378
--- /dev/null
+++ b/test/fixtures/modules/alias.css
@@ -0,0 +1,3 @@
+.imported-alias {
+ display: table;
+}
diff --git a/test/fixtures/modules/composes.css b/test/fixtures/modules/composes.css
new file mode 100644
index 00000000..015963f2
--- /dev/null
+++ b/test/fixtures/modules/composes.css
@@ -0,0 +1,145 @@
+@import url(test-other.css) (min-width: 100px);
+
+@value v-def from './values.css';
+@value v-other from './values.css';
+@value v-other from './values.css';
+@value s-white from './values.css';
+@value m-small from './values.css';
+@value v-something from './something.css';
+@value v-foo: blue;
+@value v-bar: block;
+@value v-primary: #BF4040;
+@value s-black: black-selector;
+@value m-large: (min-width: 960px);
+
+.ghi {
+ color: v-def;
+}
+
+.class {
+ color: v-foo;
+}
+
+.other {
+ display: v-bar;
+}
+
+.other-other {
+ width: v-something;
+}
+
+.green {
+ color: v-other;
+}
+
+.foo {
+ prop: v-def;
+ duplicate: v-other;
+}
+
+.simple {
+ color: red;
+ composes: imported-simple from 'imported-simple.css';
+}
+
+.relative {
+ color: yellow;
+ composes: imported-relative from './relative.css';
+}
+
+.top-relative {
+ color: gray;
+ composes: imported-relative from '../modules/top-relative.css';
+}
+
+.module {
+ color: gray;
+ composes: imported-module from '~package/style.css';
+}
+
+.alias {
+ color: gainsboro;
+ composes: imported-alias from '~aliasesComposes/alias.css';
+}
+
+.primary-selector {
+ color: v-primary;
+}
+
+.s-black {
+ color: black;
+}
+
+@media m-large {
+ .header {
+ padding: 0 20px;
+ }
+}
+
+.s-white {
+ color: white;
+}
+
+@media m-small {
+ .header {
+ padding: 20px 20px;
+ }
+}
+
+@value v-ident: validIdent;
+@value v-pre-defined-ident: left;
+@value v-string: 'content';
+@value v-string-1: '';
+@value v-url: url(https://www.exammple.com/images/my-background.png);
+@value v-url-1: url('https://www.exammple.com/images/my-background.png');
+@value v-url-2: url("https://www.exammple.com/images/my-background.png");
+@value v-integer: 100;
+@value v-integer-1: -100;
+@value v-integer-2: +100;
+@value v-number: .60;
+@value v-number-1: -456.8;
+@value v-number-2: -3.4e-2;
+@value v-dimension: 12px;
+@value v-percentage: 100%;
+@value v-hex: #fff;
+@value v-comment: /* comment */;
+@value v-function: rgb(0,0,0);
+@value v-unicode-range: U+0025-00FF;
+
+.foobarbaz {
+ v-ident: v-ident;
+ v-pre-defined-ident: v-pre-defined-ident;
+ v-string: v-string;
+ v-string-1: v-string-1;
+ v-url: v-url;
+ v-url-1: v-url-1;
+ v-url-2: v-url-2;
+ v-integer: v-integer;
+ v-integer-1: v-integer-1;
+ v-integer-2: v-integer-2;
+ v-number: v-number;
+ v-number-1: v-number-1;
+ v-number-2: v-number-2;
+ v-dimension: v-dimension;
+ v-percentage: v-percentage;
+ v-hex: v-hex;
+ v-comment: v-comment 10px v-comment;
+ v-function: v-function;
+ v-unicode-range: v-unicode-range;
+ mutliple: v-hex v-number v-percentage;
+}
+
+
+a {
+ content: v-string;
+}
+
+@supports (content: v-string) {
+ a {
+ content: v-string;
+ }
+}
+
+[class~=v-string] {
+ color:green;
+}
diff --git a/test/fixtures/modules/file.with.many.dots.in.name.css b/test/fixtures/modules/file.with.many.dots.in.name.css
new file mode 100644
index 00000000..5451a331
--- /dev/null
+++ b/test/fixtures/modules/file.with.many.dots.in.name.css
@@ -0,0 +1,3 @@
+.a {
+ color: red;
+}
diff --git a/test/fixtures/modules/getLocalIdent.css b/test/fixtures/modules/getLocalIdent.css
new file mode 100644
index 00000000..ca4a0ac5
--- /dev/null
+++ b/test/fixtures/modules/getLocalIdent.css
@@ -0,0 +1,7 @@
+.abc :local(.def) {
+ color: red;
+}
+
+:local .ghi .jkl {
+ color: blue;
+}
diff --git a/test/fixtures/modules/imported-simple.css b/test/fixtures/modules/imported-simple.css
new file mode 100644
index 00000000..888c92a5
--- /dev/null
+++ b/test/fixtures/modules/imported-simple.css
@@ -0,0 +1,3 @@
+.imported-simple {
+ display: block;
+}
diff --git a/test/fixtures/modules/issue-286/dep.css b/test/fixtures/modules/issue-286/dep.css
new file mode 100644
index 00000000..442fcb11
--- /dev/null
+++ b/test/fixtures/modules/issue-286/dep.css
@@ -0,0 +1 @@
+.red { color: red }
diff --git a/test/fixtures/modules/issue-286/source.css b/test/fixtures/modules/issue-286/source.css
new file mode 100644
index 00000000..a0482c69
--- /dev/null
+++ b/test/fixtures/modules/issue-286/source.css
@@ -0,0 +1 @@
+.main { composes: red from './dep.css'; }
diff --git a/test/fixtures/modules/issue-636/foo.scss b/test/fixtures/modules/issue-636/foo.scss
new file mode 100644
index 00000000..a15c877a
--- /dev/null
+++ b/test/fixtures/modules/issue-636/foo.scss
@@ -0,0 +1,3 @@
+.foo {
+ color: red;
+}
diff --git a/test/fixtures/modules/issue-636/source.scss b/test/fixtures/modules/issue-636/source.scss
new file mode 100644
index 00000000..e200ce35
--- /dev/null
+++ b/test/fixtures/modules/issue-636/source.scss
@@ -0,0 +1,3 @@
+.bar {
+ composes: foo from "./foo.scss";
+}
diff --git a/test/fixtures/modules/issue-966/button.css b/test/fixtures/modules/issue-966/button.css
new file mode 100644
index 00000000..1dfac231
--- /dev/null
+++ b/test/fixtures/modules/issue-966/button.css
@@ -0,0 +1,3 @@
+.button {
+ color: red;
+}
diff --git a/test/fixtures/modules/issue-966/toolbar.css b/test/fixtures/modules/issue-966/toolbar.css
new file mode 100644
index 00000000..ca5da320
--- /dev/null
+++ b/test/fixtures/modules/issue-966/toolbar.css
@@ -0,0 +1,5 @@
+@value btn from './button.css';
+
+.toolbar > btn {
+ color: red
+}
diff --git a/test/fixtures/modules/localIdentName.css b/test/fixtures/modules/localIdentName.css
new file mode 100644
index 00000000..e7c3c2f9
--- /dev/null
+++ b/test/fixtures/modules/localIdentName.css
@@ -0,0 +1,113 @@
+.test {
+ background: red;
+}
+
+._test {
+ background: blue;
+}
+
+.className {
+ background: red;
+}
+
+#someId {
+ background: green;
+}
+
+.className .subClass {
+ color: green;
+}
+
+#someId .subClass {
+ color: blue;
+}
+
+.-a0-34a___f {
+ color: red;
+}
+
+.m_x_\@ {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+.B\&W\? {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+/* matches elements with class=":`(" */
+.\3A \`\( {
+ color: aqua;
+}
+
+/* matches elements with class="1a2b3c" */
+.\31 a2b3c {
+ color: aliceblue;
+}
+
+/* matches the element with id="#fake-id" */
+#\#fake-id {
+ color: antiquewhite;
+}
+
+/* matches the element with id="-a-b-c-" */
+#-a-b-c- {
+ color: azure;
+}
+
+/* matches the element with id="©" */
+#© {
+ color: black;
+}
+
+.♥ { background: lime; }
+.© { background: lime; }
+.“‘’” { background: lime; }
+.☺☃ { background: lime; }
+.⌘⌥ { background: lime; }
+.𝄞♪♩♫♬ { background: lime; }
+.💩 { background: lime; }
+.\? { background: lime; }
+.\@ { background: lime; }
+.\. { background: lime; }
+.\3A \) { background: lime; }
+.\3A \`\( { background: lime; }
+.\31 23 { background: lime; }
+.\31 a2b3c { background: lime; }
+.\
{ background: lime; }
+.\<\>\<\<\<\>\>\<\> { background: lime; }
+.\+\+\+\+\+\+\+\+\+\+\[\>\+\+\+\+\+\+\+\>\+\+\+\+\+\+\+\+\+\+\>\+\+\+\>\+\<\<\<\<\-\]\>\+\+\.\>\+\.\+\+\+\+\+\+\+\.\.\+\+\+\.\>\+\+\.\<\<\+\+\+\+\+\+\+\+\+\+\+\+\+\+\+\.\>\.\+\+\+\.\-\-\-\-\-\-\.\-\-\-\-\-\-\-\-\.\>\+\.\>\. { background: lime; }
+.\# { background: lime; }
+.\#\# { background: lime; }
+.\#\.\#\.\# { background: lime; }
+.\_ { background: lime; }
+.\{\} { background: lime; }
+.\#fake\-id { background: lime; }
+.foo\.bar { background: lime; }
+.\3A hover { background: lime; }
+.\3A hover\3A focus\3A active { background: lime; }
+.\[attr\=value\] { background: lime; }
+.f\/o\/o { background: lime; }
+.f\\o\\o { background: lime; }
+.f\*o\*o { background: lime; }
+.f\!o\!o { background: lime; }
+.f\'o\'o { background: lime; }
+.f\~o\~o { background: lime; }
+.f\+o\+o { background: lime; }
+
+.foo\/bar {
+ background: hotpink;
+}
+
+.foo\\bar {
+ background: hotpink;
+}
+
+.foo\/bar\/baz {
+ background: hotpink;
+}
+
+.foo\\bar\\baz {
+ background: hotpink;
+}
diff --git a/test/fixtures/modules/localsConvention.css b/test/fixtures/modules/localsConvention.css
new file mode 100644
index 00000000..a0c46e20
--- /dev/null
+++ b/test/fixtures/modules/localsConvention.css
@@ -0,0 +1,20 @@
+.btn-info_is-disabled {
+ color: blue;
+}
+
+.btn--info_is-disabled_1 {
+ color: blue;
+}
+
+.simple {
+ color: red;
+}
+
+a {
+ color: yellow;
+}
+
+:export {
+ foo: bar;
+ my-btn-info_is-disabled: value;
+}
diff --git a/test/fixtures/modules/node_modules/@localpackage/color.css b/test/fixtures/modules/node_modules/@localpackage/color.css
new file mode 100644
index 00000000..7ae91afb
--- /dev/null
+++ b/test/fixtures/modules/node_modules/@localpackage/color.css
@@ -0,0 +1 @@
+@value color-grey: gray;
diff --git a/test/fixtures/modules/node_modules/@localpackage/style.css b/test/fixtures/modules/node_modules/@localpackage/style.css
new file mode 100644
index 00000000..0e3b37bf
--- /dev/null
+++ b/test/fixtures/modules/node_modules/@localpackage/style.css
@@ -0,0 +1,6 @@
+.type-heading {
+ color: red;
+ composes: type-heading2 from "~@otherlocalpackage/style.css";
+ margin: 0;
+ padding: 0;
+}
diff --git a/test/fixtures/modules/node_modules/@otherlocalpackage/style.css b/test/fixtures/modules/node_modules/@otherlocalpackage/style.css
new file mode 100644
index 00000000..1567804b
--- /dev/null
+++ b/test/fixtures/modules/node_modules/@otherlocalpackage/style.css
@@ -0,0 +1,3 @@
+.type-heading2 {
+ display: flex;
+}
diff --git a/test/fixtures/modules/node_modules/package/style.css b/test/fixtures/modules/node_modules/package/style.css
new file mode 100644
index 00000000..1ff0fa9a
--- /dev/null
+++ b/test/fixtures/modules/node_modules/package/style.css
@@ -0,0 +1,3 @@
+.imported-module {
+ display: inline-block;
+}
diff --git a/test/fixtures/modules/path-placeholder.css b/test/fixtures/modules/path-placeholder.css
new file mode 100644
index 00000000..7b503616
--- /dev/null
+++ b/test/fixtures/modules/path-placeholder.css
@@ -0,0 +1,11 @@
+.foo {
+ color: red;
+}
+
+.foo\/bar {
+ color: blue;
+}
+
+.\[\/\?\<\>\\\\\3A \*\|\"\3A \] {
+ color: yellow;
+}
diff --git a/test/fixtures/modules/relative.css b/test/fixtures/modules/relative.css
new file mode 100644
index 00000000..4cd3d00b
--- /dev/null
+++ b/test/fixtures/modules/relative.css
@@ -0,0 +1,3 @@
+.imported-relative {
+ display: inline;
+}
diff --git a/test/fixtures/modules/resolving-inside-node-modules.css b/test/fixtures/modules/resolving-inside-node-modules.css
new file mode 100644
index 00000000..a9986d8f
--- /dev/null
+++ b/test/fixtures/modules/resolving-inside-node-modules.css
@@ -0,0 +1,8 @@
+@value color-grey from "~@localpackage/color.css";
+
+.copyright {
+ color: color-grey;
+ composes: type-heading from "~@localpackage/style.css";
+ margin: 0;
+ padding: 0;
+}
diff --git a/test/fixtures/modules/something.css b/test/fixtures/modules/something.css
new file mode 100644
index 00000000..14efd103
--- /dev/null
+++ b/test/fixtures/modules/something.css
@@ -0,0 +1 @@
+@value v-something: 2112moon;
diff --git a/test/fixtures/modules/test-other.css b/test/fixtures/modules/test-other.css
new file mode 100644
index 00000000..fc97be2e
--- /dev/null
+++ b/test/fixtures/modules/test-other.css
@@ -0,0 +1,3 @@
+.test {
+ d: d;
+}
diff --git a/test/fixtures/modules/tests-cases/animation/source.css b/test/fixtures/modules/tests-cases/animation/source.css
new file mode 100644
index 00000000..cf71c59c
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/animation/source.css
@@ -0,0 +1,4 @@
+a {
+ animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out;
+
+}
diff --git a/test/moduleTestCases/class-names/source.css b/test/fixtures/modules/tests-cases/class-names/source.css
similarity index 100%
rename from test/moduleTestCases/class-names/source.css
rename to test/fixtures/modules/tests-cases/class-names/source.css
diff --git a/test/fixtures/modules/tests-cases/comment-in-local/source.css b/test/fixtures/modules/tests-cases/comment-in-local/source.css
new file mode 100644
index 00000000..c0f87560
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/comment-in-local/source.css
@@ -0,0 +1 @@
+:local(.c1/*.c2*/.c3) { background: red; }
diff --git a/test/fixtures/modules/tests-cases/comments/img.png b/test/fixtures/modules/tests-cases/comments/img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/modules/tests-cases/comments/img.png differ
diff --git a/test/moduleTestCases/comments/source.css b/test/fixtures/modules/tests-cases/comments/source.css
similarity index 53%
rename from test/moduleTestCases/comments/source.css
rename to test/fixtures/modules/tests-cases/comments/source.css
index 7a0b94f5..085fa70c 100644
--- a/test/moduleTestCases/comments/source.css
+++ b/test/fixtures/modules/tests-cases/comments/source.css
@@ -3,9 +3,9 @@
*/
.bg {
- background-image: url(bg.jpg);
+ background-image: url(./img.png);
}
/*
* a ' below
- */
\ No newline at end of file
+ */
diff --git a/test/fixtures/modules/tests-cases/composes-1/file.css b/test/fixtures/modules/tests-cases/composes-1/file.css
new file mode 100644
index 00000000..46865129
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-1/file.css
@@ -0,0 +1,11 @@
+:local(.c2) {
+ color: red;
+}
+
+:local(.c4) {
+ color: blue;
+}
+
+.test{
+ c: d
+}
diff --git a/test/fixtures/modules/tests-cases/composes-1/source.css b/test/fixtures/modules/tests-cases/composes-1/source.css
new file mode 100644
index 00000000..1b2e16dd
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-1/source.css
@@ -0,0 +1,3 @@
+:local(.c1) { composes: c2 from "./file.css"; b: 1; }
+:local(.c3) { composes: c1; b: 3; }
+:local(.c5) { composes: c2 c4 from "./file.css"; b: 5; }
diff --git a/test/fixtures/modules/tests-cases/composes-2/file.css b/test/fixtures/modules/tests-cases/composes-2/file.css
new file mode 100644
index 00000000..73635f2e
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-2/file.css
@@ -0,0 +1,11 @@
+:local(.c-2) {
+ color: red;
+}
+
+:local(.c4) {
+ color: blue;
+}
+
+.test{
+ c: d
+}
diff --git a/test/fixtures/modules/tests-cases/composes-2/source.css b/test/fixtures/modules/tests-cases/composes-2/source.css
new file mode 100644
index 00000000..213d023d
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-2/source.css
@@ -0,0 +1,3 @@
+:local(.c1) { composes: c-2 from "./file.css"; b: 1; }
+:local(.c3) { composes: c1; b: 3; }
+:local(.c5) { composes: c-2 c4 from "./file.css"; b: 5; }
diff --git a/test/fixtures/modules/tests-cases/composes-multiple/file1.css b/test/fixtures/modules/tests-cases/composes-multiple/file1.css
new file mode 100644
index 00000000..881655a8
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-multiple/file1.css
@@ -0,0 +1,3 @@
+:local(.def1) {
+ color: red;
+}
diff --git a/test/fixtures/modules/tests-cases/composes-multiple/file2.css b/test/fixtures/modules/tests-cases/composes-multiple/file2.css
new file mode 100644
index 00000000..6dcbdaf7
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-multiple/file2.css
@@ -0,0 +1,3 @@
+:local(.def2) {
+ color: blue;
+}
diff --git a/test/fixtures/modules/tests-cases/composes-multiple/source.css b/test/fixtures/modules/tests-cases/composes-multiple/source.css
new file mode 100644
index 00000000..955e078e
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-multiple/source.css
@@ -0,0 +1,4 @@
+:local(.abc) {
+ composes: def1 from "./file1.css";
+ composes: def2 from "./file2.css";
+}
diff --git a/test/fixtures/modules/tests-cases/composes-with-importing/file.css b/test/fixtures/modules/tests-cases/composes-with-importing/file.css
new file mode 100644
index 00000000..0101f9c3
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-with-importing/file.css
@@ -0,0 +1,3 @@
+:local(.def) {
+ color: red;
+}
diff --git a/test/fixtures/modules/tests-cases/composes-with-importing/source.css b/test/fixtures/modules/tests-cases/composes-with-importing/source.css
new file mode 100644
index 00000000..72156c3a
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes-with-importing/source.css
@@ -0,0 +1,3 @@
+:local(.abc) {
+ composes: def from "./file.css";
+}
diff --git a/test/fixtures/modules/tests-cases/composes/source.css b/test/fixtures/modules/tests-cases/composes/source.css
new file mode 100644
index 00000000..64a8f521
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/composes/source.css
@@ -0,0 +1,2 @@
+:local(.c1) { a: 1; }
+:local(.c2) { composes: c1; b: 1; }
diff --git a/test/fixtures/modules/tests-cases/declaration-value/source.css b/test/fixtures/modules/tests-cases/declaration-value/source.css
new file mode 100644
index 00000000..bd8987b1
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/declaration-value/source.css
@@ -0,0 +1,5 @@
+@value blue: red;
+
+.a {
+ border: 1px solid blue;
+}
diff --git a/test/fixtures/modules/tests-cases/issue-589/img.png b/test/fixtures/modules/tests-cases/issue-589/img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/modules/tests-cases/issue-589/img.png differ
diff --git a/test/fixtures/modules/tests-cases/issue-589/source.css b/test/fixtures/modules/tests-cases/issue-589/source.css
new file mode 100644
index 00000000..582cbbd2
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/issue-589/source.css
@@ -0,0 +1,4 @@
+body:before {
+ content: '';
+ background: url('~!!file-loader!./img.png');
+}
diff --git a/test/moduleTestCases/keyframes-and-animation/source.css b/test/fixtures/modules/tests-cases/keyframes-and-animation/source.css
similarity index 100%
rename from test/moduleTestCases/keyframes-and-animation/source.css
rename to test/fixtures/modules/tests-cases/keyframes-and-animation/source.css
diff --git a/test/moduleTestCases/leak-scope/source.css b/test/fixtures/modules/tests-cases/leak-scope/source.css
similarity index 100%
rename from test/moduleTestCases/leak-scope/source.css
rename to test/fixtures/modules/tests-cases/leak-scope/source.css
diff --git a/test/fixtures/modules/tests-cases/local-2/source.css b/test/fixtures/modules/tests-cases/local-2/source.css
new file mode 100644
index 00000000..c3217975
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/local-2/source.css
@@ -0,0 +1,4 @@
+:local(.className) { background: red; }
+:local(#someId) { background: green; }
+:local(.className .subClass) { color: green; }
+:local(#someId .subClass) { color: blue; }
diff --git a/test/fixtures/modules/tests-cases/local-and-composes/source.css b/test/fixtures/modules/tests-cases/local-and-composes/source.css
new file mode 100644
index 00000000..50366086
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/local-and-composes/source.css
@@ -0,0 +1,7 @@
+:local(.abc) {
+ color: red;
+}
+:local(.def) {
+ composes: abc;
+ background: green;
+}
diff --git a/test/fixtures/modules/tests-cases/local-with-string/source.css b/test/fixtures/modules/tests-cases/local-with-string/source.css
new file mode 100644
index 00000000..ded020d5
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/local-with-string/source.css
@@ -0,0 +1,3 @@
+:local(.c1[data-attr=".c2)]'"]:not(.c3):not(.c4)) {
+ background: red;
+}
diff --git a/test/fixtures/modules/tests-cases/local/source.css b/test/fixtures/modules/tests-cases/local/source.css
new file mode 100644
index 00000000..ca4a0ac5
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/local/source.css
@@ -0,0 +1,7 @@
+.abc :local(.def) {
+ color: red;
+}
+
+:local .ghi .jkl {
+ color: blue;
+}
diff --git a/test/fixtures/modules/tests-cases/media-2/file.css b/test/fixtures/modules/tests-cases/media-2/file.css
new file mode 100644
index 00000000..1f9fb325
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/media-2/file.css
@@ -0,0 +1 @@
+@value small: (max-width: 599px);
diff --git a/test/fixtures/modules/tests-cases/media-2/source.css b/test/fixtures/modules/tests-cases/media-2/source.css
new file mode 100644
index 00000000..e284fc6f
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/media-2/source.css
@@ -0,0 +1,6 @@
+@value small from './file.css';
+@media small {
+ .header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
diff --git a/test/fixtures/modules/tests-cases/media/source.css b/test/fixtures/modules/tests-cases/media/source.css
new file mode 100644
index 00000000..08b97c6e
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/media/source.css
@@ -0,0 +1,7 @@
+@value small: (max-width: 599px);
+
+@media small {
+ .header {
+ box-shadow: 0 0 4px #1F4F7F;
+ }
+}
diff --git a/test/fixtures/modules/tests-cases/mode-switching/source.css b/test/fixtures/modules/tests-cases/mode-switching/source.css
new file mode 100644
index 00000000..71acd66b
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/mode-switching/source.css
@@ -0,0 +1,2 @@
+.c1 :local .c2 .c3 :global .c4 :local .c5, .c6 :local .c7 { background: red; }
+.c8 { background: red; }
diff --git a/test/moduleTestCases/simple/source.css b/test/fixtures/modules/tests-cases/simple/source.css
similarity index 100%
rename from test/moduleTestCases/simple/source.css
rename to test/fixtures/modules/tests-cases/simple/source.css
diff --git a/test/fixtures/modules/tests-cases/urls/img img.png b/test/fixtures/modules/tests-cases/urls/img img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/modules/tests-cases/urls/img img.png differ
diff --git a/test/fixtures/modules/tests-cases/urls/img.png b/test/fixtures/modules/tests-cases/urls/img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/modules/tests-cases/urls/img.png differ
diff --git a/test/fixtures/modules/tests-cases/urls/source.css b/test/fixtures/modules/tests-cases/urls/source.css
new file mode 100644
index 00000000..3865420e
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/urls/source.css
@@ -0,0 +1,14 @@
+.a {
+ background: url(./img.png);
+ background: url("./img.png");
+ background: url("./img img.png");
+ background: url('./img img.png');
+ background: url('./img.png');
+ background: url("./img.png#?iefix");
+ background: url("#hash");
+ background: url("#");
+ background: url(data:image/png;base64,AAA);
+ background: url(http://example.com/image.jpg);
+ background: url(//example.com/image.png);
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(./img.png) url('./img img.png') xyz;
+}
diff --git a/test/fixtures/modules/tests-cases/values-1/source.css b/test/fixtures/modules/tests-cases/values-1/source.css
new file mode 100644
index 00000000..0c3438f4
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-1/source.css
@@ -0,0 +1,2 @@
+@value def: red;
+@value ghi: 1px solid black;
diff --git a/test/fixtures/modules/tests-cases/values-10/source.css b/test/fixtures/modules/tests-cases/values-10/source.css
new file mode 100644
index 00000000..69c88083
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-10/source.css
@@ -0,0 +1,18 @@
+@value v-primary: #BF4040;
+@value s-black: black-selector;
+@value m-large: (min-width: 960px);
+
+.header {
+ color: v-primary;
+ padding: 0 10px;
+}
+
+.s-black {
+ color: black;
+}
+
+@media m-large {
+ .header {
+ padding: 0 20px;
+ }
+}
diff --git a/test/fixtures/modules/tests-cases/values-2/source.css b/test/fixtures/modules/tests-cases/values-2/source.css
new file mode 100644
index 00000000..a5156cb8
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-2/source.css
@@ -0,0 +1,2 @@
+@value def: red;
+.ghi { color: def; }
diff --git a/test/fixtures/modules/tests-cases/values-3/file.css b/test/fixtures/modules/tests-cases/values-3/file.css
new file mode 100644
index 00000000..2b75b778
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-3/file.css
@@ -0,0 +1 @@
+@value def: red;
diff --git a/test/fixtures/modules/tests-cases/values-3/source.css b/test/fixtures/modules/tests-cases/values-3/source.css
new file mode 100644
index 00000000..47a327b2
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-3/source.css
@@ -0,0 +1,2 @@
+@value def from './file.css';
+.ghi { color: def; }
diff --git a/test/fixtures/modules/tests-cases/values-4/file1.css b/test/fixtures/modules/tests-cases/values-4/file1.css
new file mode 100644
index 00000000..2b75b778
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-4/file1.css
@@ -0,0 +1 @@
+@value def: red;
diff --git a/test/fixtures/modules/tests-cases/values-4/file2.css b/test/fixtures/modules/tests-cases/values-4/file2.css
new file mode 100644
index 00000000..f20b297c
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-4/file2.css
@@ -0,0 +1 @@
+@value def: green;
diff --git a/test/fixtures/modules/tests-cases/values-4/source.css b/test/fixtures/modules/tests-cases/values-4/source.css
new file mode 100644
index 00000000..6c990472
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-4/source.css
@@ -0,0 +1,3 @@
+@value def as aaa from './file1.css';
+@value def as bbb from './file2.css';
+.ghi { background: aaa, bbb, def; }
diff --git a/test/fixtures/modules/tests-cases/values-5/file1.css b/test/fixtures/modules/tests-cases/values-5/file1.css
new file mode 100644
index 00000000..611d2556
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-5/file1.css
@@ -0,0 +1 @@
+@value color: red;
diff --git a/test/fixtures/modules/tests-cases/values-5/source.css b/test/fixtures/modules/tests-cases/values-5/source.css
new file mode 100644
index 00000000..9b962d33
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-5/source.css
@@ -0,0 +1,3 @@
+@value color from './file1.css';
+@value shadow: 0 0 color,0 0 color;
+.ghi { box-shadow: shadow; }
diff --git a/test/fixtures/modules/tests-cases/values-6/file1.css b/test/fixtures/modules/tests-cases/values-6/file1.css
new file mode 100644
index 00000000..611d2556
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-6/file1.css
@@ -0,0 +1 @@
+@value color: red;
diff --git a/test/fixtures/modules/tests-cases/values-6/source.css b/test/fixtures/modules/tests-cases/values-6/source.css
new file mode 100644
index 00000000..08fb42fd
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-6/source.css
@@ -0,0 +1,3 @@
+@value color from './file1.css';
+@value shadow: 0 0 color ,0 0 color;
+.ghi { box-shadow: shadow; }
diff --git a/test/fixtures/modules/tests-cases/values-7/file1.css b/test/fixtures/modules/tests-cases/values-7/file1.css
new file mode 100644
index 00000000..611d2556
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-7/file1.css
@@ -0,0 +1 @@
+@value color: red;
diff --git a/test/fixtures/modules/tests-cases/values-7/source.css b/test/fixtures/modules/tests-cases/values-7/source.css
new file mode 100644
index 00000000..99d9274b
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-7/source.css
@@ -0,0 +1,3 @@
+@value color from './file1.css';
+@value shadow: 0 0 color, 0 0 color;
+.ghi { box-shadow: shadow; }
diff --git a/test/fixtures/modules/tests-cases/values-8/source.css b/test/fixtures/modules/tests-cases/values-8/source.css
new file mode 100644
index 00000000..a6ab62e0
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-8/source.css
@@ -0,0 +1,6 @@
+@value shadow-color: rgba(0, 0, 0, 0.5);
+
+.shadow {
+ box-shadow: 0 10px 10px shadow-color,
+ 10px 0px 5px shadow-color;
+}
diff --git a/test/fixtures/modules/tests-cases/values-9/source.css b/test/fixtures/modules/tests-cases/values-9/source.css
new file mode 100644
index 00000000..91d95b5f
--- /dev/null
+++ b/test/fixtures/modules/tests-cases/values-9/source.css
@@ -0,0 +1,29 @@
+@value def: red;
+
+.foo1 {
+ prop: func(def);
+}
+
+.foo2 {
+ prop: func(10px def);
+}
+
+.foo3 {
+ prop: func(def 10px);
+}
+
+.foo4 {
+ prop: func(10px def 10px);
+}
+
+.foo5 {
+ prop: func(10px, def);
+}
+
+.foo6 {
+ prop: func(def, 10px);
+}
+
+.foo7 {
+ prop: func(10px, def, 10px);
+}
diff --git a/test/moduleTestCases/values/source.css b/test/fixtures/modules/tests-cases/values/source.css
similarity index 100%
rename from test/moduleTestCases/values/source.css
rename to test/fixtures/modules/tests-cases/values/source.css
diff --git a/test/fixtures/modules/top-relative.css b/test/fixtures/modules/top-relative.css
new file mode 100644
index 00000000..1c7eb2e9
--- /dev/null
+++ b/test/fixtures/modules/top-relative.css
@@ -0,0 +1,3 @@
+.top-relative {
+ display: flex;
+}
diff --git a/test/fixtures/modules/values.css b/test/fixtures/modules/values.css
new file mode 100644
index 00000000..017265bd
--- /dev/null
+++ b/test/fixtures/modules/values.css
@@ -0,0 +1,4 @@
+@value v-def: red;
+@value v-other: green;
+@value s-white: white;
+@value m-small: (min-width: 320px);
diff --git a/test/fixtures/nested-import/imported.css b/test/fixtures/nested-import/imported.css
new file mode 100644
index 00000000..fb5bac7b
--- /dev/null
+++ b/test/fixtures/nested-import/imported.css
@@ -0,0 +1,4 @@
+.bar {
+ color: blue;
+ color: rgb(0 0 100% / 90%);
+}
diff --git a/test/fixtures/nested-import/source.css b/test/fixtures/nested-import/source.css
new file mode 100644
index 00000000..25fa4ca1
--- /dev/null
+++ b/test/fixtures/nested-import/source.css
@@ -0,0 +1,6 @@
+@import './imported.css';
+
+.foo {
+ color: red;
+ color: rgb(0 0 100% / 90%);
+}
diff --git a/test/fixtures/postcss-present-env/img1x.png b/test/fixtures/postcss-present-env/img1x.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/postcss-present-env/img1x.png differ
diff --git a/test/fixtures/postcss-present-env/img2x.png b/test/fixtures/postcss-present-env/img2x.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/postcss-present-env/img2x.png differ
diff --git a/test/fixtures/postcss-present-env/source.css b/test/fixtures/postcss-present-env/source.css
new file mode 100644
index 00000000..54be34bd
--- /dev/null
+++ b/test/fixtures/postcss-present-env/source.css
@@ -0,0 +1,39 @@
+@custom-media --viewport-medium (width <= 50rem);
+@custom-selector :--heading h1, h2, h3, h4, h5, h6;
+
+:root {
+ --fontSize: 1rem;
+ --mainColor: #12345678;
+ --secondaryColor: lab(32.5 38.5 -47.6 / 90%);
+}
+
+html {
+ overflow: hidden auto;
+}
+
+@media (--viewport-medium) {
+ body {
+ color: var(--mainColor);
+ font-family: system-ui;
+ font-size: var(--fontSize);
+ line-height: calc(var(--fontSize) * 1.5);
+ overflow-wrap: break-word;
+ padding-inline: calc(var(--fontSize) / 2 + 1px);
+ }
+}
+
+:--heading {
+ margin-block: 0;
+}
+
+.hero:matches(main, .main) {
+ background-image: image-set(url("./img1x.png") 1x, url("./img2x.png") 2x);
+}
+
+a {
+ color: rgb(0 0 100% / 90%);
+
+ &:hover {
+ color: rebeccapurple;
+ }
+}
diff --git a/test/fixtures/scss/source.scss b/test/fixtures/scss/source.scss
new file mode 100644
index 00000000..1a72d52f
--- /dev/null
+++ b/test/fixtures/scss/source.scss
@@ -0,0 +1,7 @@
+$font-stack: Helvetica, sans-serif;
+$primary-color: #333;
+
+body {
+ font: 100% $font-stack;
+ color: $primary-color;
+}
diff --git a/test/fixtures/source-map-loader.js b/test/fixtures/source-map-loader.js
new file mode 100644
index 00000000..5b48d42e
--- /dev/null
+++ b/test/fixtures/source-map-loader.js
@@ -0,0 +1,5 @@
+module.exports = function loader(source) {
+ const cb = this.async();
+
+ cb(null, source, this.query.sourceMap);
+};
diff --git a/test/fixtures/source-map/basic.css b/test/fixtures/source-map/basic.css
new file mode 100644
index 00000000..19fce739
--- /dev/null
+++ b/test/fixtures/source-map/basic.css
@@ -0,0 +1,3 @@
+.class {
+ color: red;
+}
diff --git a/test/fixtures/source-map/basic.postcss.css b/test/fixtures/source-map/basic.postcss.css
new file mode 100644
index 00000000..b95d332e
--- /dev/null
+++ b/test/fixtures/source-map/basic.postcss.css
@@ -0,0 +1,35 @@
+@custom-media --viewport-medium (width <= 50rem);
+@custom-selector :--heading h1, h2, h3, h4, h5, h6;
+
+:root {
+ --fontSize: 1rem;
+ --mainColor: #12345678;
+ --secondaryColor: lab(32.5 38.5 -47.6 / 90%);
+}
+
+html {
+ overflow: hidden auto;
+}
+
+@media (--viewport-medium) {
+ body {
+ color: var(--mainColor);
+ font-family: system-ui;
+ font-size: var(--fontSize);
+ line-height: calc(var(--fontSize) * 1.5);
+ overflow-wrap: break-word;
+ padding-inline: calc(var(--fontSize) / 2 + 1px);
+ }
+}
+
+:--heading {
+ margin-block: 0;
+}
+
+a {
+ color: rgb(0 0 100% / 90%);
+
+&:hover {
+ color: rebeccapurple;
+ }
+}
diff --git a/test/fixtures/source-map/basic.scss b/test/fixtures/source-map/basic.scss
new file mode 100644
index 00000000..1a72d52f
--- /dev/null
+++ b/test/fixtures/source-map/basic.scss
@@ -0,0 +1,7 @@
+$font-stack: Helvetica, sans-serif;
+$primary-color: #333;
+
+body {
+ font: 100% $font-stack;
+ color: $primary-color;
+}
diff --git a/test/fixtures/url/font with spaces.eot b/test/fixtures/url/font with spaces.eot
new file mode 100644
index 00000000..e69de29b
diff --git a/test/fixtures/url/font.eot b/test/fixtures/url/font.eot
new file mode 100644
index 00000000..e69de29b
diff --git a/test/fixtures/url/font.svg b/test/fixtures/url/font.svg
new file mode 100644
index 00000000..e69de29b
diff --git a/test/fixtures/url/font.woff b/test/fixtures/url/font.woff
new file mode 100644
index 00000000..e69de29b
diff --git a/test/fixtures/url/font.woff2 b/test/fixtures/url/font.woff2
new file mode 100644
index 00000000..e69de29b
diff --git a/test/fixtures/url/img img.png b/test/fixtures/url/img img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/img img.png differ
diff --git a/test/fixtures/url/img-from-imported.png b/test/fixtures/url/img-from-imported.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/img-from-imported.png differ
diff --git a/test/fixtures/url/img-simple.png b/test/fixtures/url/img-simple.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/img-simple.png differ
diff --git a/test/fixtures/url/img.png b/test/fixtures/url/img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/img.png differ
diff --git a/test/fixtures/url/img1x.png b/test/fixtures/url/img1x.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/img1x.png differ
diff --git a/test/fixtures/url/img2x.png b/test/fixtures/url/img2x.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/img2x.png differ
diff --git a/test/fixtures/url/img3x.png b/test/fixtures/url/img3x.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/img3x.png differ
diff --git a/test/fixtures/url/imported.css b/test/fixtures/url/imported.css
new file mode 100644
index 00000000..c86f4d06
--- /dev/null
+++ b/test/fixtures/url/imported.css
@@ -0,0 +1,3 @@
+.bar {
+ background: url('./img-from-imported.png');
+}
diff --git a/test/fixtures/url/nested/img.png b/test/fixtures/url/nested/img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/nested/img.png differ
diff --git a/test/fixtures/url/node_modules/package/font.ttf b/test/fixtures/url/node_modules/package/font.ttf
new file mode 100644
index 00000000..e69de29b
diff --git a/test/fixtures/url/node_modules/package/img.png b/test/fixtures/url/node_modules/package/img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/node_modules/package/img.png differ
diff --git a/test/fixtures/url/other-img.png b/test/fixtures/url/other-img.png
new file mode 100644
index 00000000..b74b839e
Binary files /dev/null and b/test/fixtures/url/other-img.png differ
diff --git a/test/fixtures/url/url.css b/test/fixtures/url/url.css
new file mode 100644
index 00000000..b061391e
--- /dev/null
+++ b/test/fixtures/url/url.css
@@ -0,0 +1,270 @@
+@import "./imported.css";
+
+.class {
+ background: url('./img.png');
+}
+
+.class {
+ background: url("./img.png");
+}
+
+.class {
+ background: url(./img.png);
+}
+
+.class {
+ background: url("./img.png#hash");
+}
+
+.class {
+ background: url(
+ "./img.png"
+ );
+}
+
+.class {
+ background: green url( './img.png' ) xyz;
+}
+
+.class {
+ background: green url( "./img.png" ) xyz;
+}
+
+.class {
+ background: green url( ./img.png ) xyz;
+}
+
+.class {
+ background: green url(~package/img.png) url(./other-img.png) xyz;
+}
+
+.class {
+ background: green url( "./img img.png" ) xyz;
+}
+
+.class {
+ background: green url( './img img.png' ) xyz;
+}
+
+.class {
+ background: green url(/img.png) xyz;
+}
+
+.class {
+ background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz;
+}
+
+.class {
+ background-image: url("data:image/svg+xml;charset=utf-8, ");
+}
+
+.class {
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2042%2026%27%20fill%3D%27%2523007aff%27%3E%3Crect%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%271%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2711%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2712%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3Crect%20y%3D%2722%27%20width%3D%274%27%20height%3D%274%27%2F%3E%3Crect%20x%3D%278%27%20y%3D%2723%27%20width%3D%2734%27%20height%3D%272%27%2F%3E%3C%2Fsvg%3E");
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8, #filter');
+}
+
+.class {
+ filter: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%3E%3Cfilter%20id%3D%5C%22filter%5C%22%3E%3CfeGaussianBlur%20in%3D%5C%22SourceAlpha%5C%22%20stdDeviation%3D%5C%220%5C%22%20%2F%3E%3CfeOffset%20dx%3D%5C%221%5C%22%20dy%3D%5C%222%5C%22%20result%3D%5C%22offsetblur%5C%22%20%2F%3E%3CfeFlood%20flood-color%3D%5C%22rgba(255%2C255%2C255%2C1)%5C%22%20%2F%3E%3CfeComposite%20in2%3D%5C%22offsetblur%5C%22%20operator%3D%5C%22in%5C%22%20%2F%3E%3CfeMerge%3E%3CfeMergeNode%20%2F%3E%3CfeMergeNode%20in%3D%5C%22SourceGraphic%5C%22%20%2F%3E%3C%2FfeMerge%3E%3C%2Ffilter%3E%3C%2Fsvg%3E%23filter');
+}
+
+.highlight {
+ filter: url(#highlight);
+}
+
+.highlight {
+ filter: url('#line-marker');
+}
+
+@font-face {
+ src: url(./font.woff) format('woff'),
+ url('./font.woff2') format('woff2'),
+ url("./font.eot") format('eot'),
+ url(~package/font.ttf) format('truetype'),
+ url("./font with spaces.eot") format("embedded-opentype"),
+ url('./font.svg#svgFontName') format('svg'),
+ url('./font.woff2?foo=bar') format('woff2'),
+ url("./font.eot?#iefix") format('embedded-opentype'),
+ url("./font with spaces.eot?#iefix") format('embedded-opentype');
+}
+
+@media (min-width: 500px) {
+ body {
+ background: url("./img.png");
+ }
+}
+
+a {
+ content: "do not use url(path)";
+}
+
+b {
+ content: 'do not "use" url(path)';
+}
+
+@keyframes anim {
+ background: green url('./img.png') xyz;
+}
+
+.a {
+ background-image: -webkit-image-set(url('./img1x.png') 1x, url('./img2x.png') 2x)
+}
+
+.a {
+ background-image: image-set(url('./img1x.png') 1x, url('./img2x.png') 2x)
+}
+
+.class {
+ background: green url() xyz;
+}
+
+.class {
+ background: green url('') xyz;
+}
+
+.class {
+ background: green url("") xyz;
+}
+
+.class {
+ background: green url(' ') xyz;
+}
+
+.class {
+ background: green url(
+ ) xyz;
+}
+
+.class {
+ background: green url(https://raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: green url(//raw.githubusercontent.com/webpack/media/master/logo/icon.png) xyz;
+}
+
+.class {
+ background: url("./img.png?foo");
+}
+
+.class {
+ background: url("./img.png?foo=bar");
+}
+
+.class {
+ background: url("./img.png?foo=bar#hash");
+}
+
+.class {
+ background: url("./img.png?foo=bar#hash");
+}
+
+.class {
+ background: url("./img.png?");
+}
+
+.class {
+ background-image: url('./img.png') url("data:image/svg+xml;charset=utf-8, ") url('./img.png');
+}
+
+.class {
+ background: ___CSS_LOADER_URL___;
+ background: ___CSS_LOADER_URL___INDEX___;
+ background: ___CSS_LOADER_URL___99999___;
+ background: ___CSS_LOADER_IMPORT___;
+ background: ___CSS_LOADER_IMPORT___INDEX___;
+ background: ___CSS_LOADER_IMPORT___99999___;
+}
+
+.pure-url {
+ background: url('img-simple.png');
+}
+
+.not-resolved {
+ background: url('/img-simple.png');
+}
+
+.above-below {
+ background: url('../url/img-simple.png');
+}
+
+.tilde {
+ background: url('~package/img.png');
+}
+
+.aliases {
+ background: url('~aliasesImg/img.png') ;
+}
+
+a {
+ background: url(./nested/img.png);
+}
+
+a {
+ background: url(nested/img.png);
+}
+
+@font-face {
+ src: url("//at.alicdn.com/t/font_515771_emcns5054x3whfr.eot");
+}
+
+.class {
+ /* Broken */
+ background-image: -webkit-image-set();
+ background-image: -webkit-image-set('');
+ background-image: image-set();
+ background-image: image-set('');
+ background-image: image-set("");
+ background-image: image-set("" 1x);
+ background-image: image-set(url());
+ background-image: image-set(
+ url()
+ );
+ background-image: image-set(URL());
+ background-image: image-set(url(''));
+ background-image: image-set(url(""));
+ background-image: image-set(url('') 1x);
+ background-image: image-set(1x);
+ background-image: image-set(
+ 1x
+ );
+ background: image-set(calc(1rem + 1px) 1x);
+
+ /* Strings */
+ background-image: -webkit-image-set("./img1x.png" 1x, "./img2x.png" 2x);
+ background-image: image-set("./img1x.png" 1x);
+ background-image: image-set("./img1x.png" 1x, "./img2x.png" 2x);
+ background-image: image-set("./img img.png" 1x, "./img img.png" 2x);
+ background-image: image-set("./img1x.png" 1x, "./img2x.png" 2x),
+ image-set("./img1x.png" 1x, "./img2x.png" 2x);
+ background-image: image-set(
+ "./img1x.png" 1x,
+ "./img2x.png" 2x,
+ "./img3x.png" 600dpi
+ );
+ background-image: image-set("./img1x.png?foo=bar" 1x);
+ background-image: image-set("./img1x.png#hash" 1x);
+ background-image: image-set("./img1x.png?#iefix" 1x);
+
+ /* With `url` function */
+ background-image: -webkit-image-set(url("./img1x.png") 1x, url("./img2x.png") 2x);
+ background-image: -webkit-image-set(url("./img1x.png") 1x);
+ background-image: -webkit-image-set(
+ url("./img1x.png") 1x
+ );
+ background-image: image-set(url(./img1x.png) 1x);
+ background-image: image-set(
+ url(./img1x.png) 1x
+ );
+ background-image: image-set(url("./img1x.png") 1x, url("./img2x.png") 2x);
+ background-image: image-set(
+ url(./img1x.png) 1x,
+ url(./img2x.png) 2x,
+ url(./img3x.png) 600dpi
+ );
+ background-image: image-set(url("./img img.png") 1x, url("./img img.png") 2x);
+
+ background-image: image-set(url("./img1x.png") 1x, "./img2x.png" 2x);
+}
diff --git a/test/helpers.js b/test/helpers.js
index 8e4248e5..8b355946 100644
--- a/test/helpers.js
+++ b/test/helpers.js
@@ -1,152 +1,262 @@
-/*globals it */
-
-require("should");
-var cssLoader = require("../index.js");
-var cssLoaderLocals = require("../locals.js");
-var vm = require("vm");
-
-function getEvaluated(output, modules) {
- try {
- var fn = vm.runInThisContext("(function(module, exports, require) {" + output + "})", "testcase.js");
- var m = { exports: {}, id: 1 };
- fn(m, m.exports, function(module) {
- if(module.indexOf("css-base") >= 0)
- return require("../lib/css-base");
- if(module.indexOf("-!/path/css-loader!") === 0)
- module = module.substr(19);
- if(modules && modules[module])
- return modules[module];
- return "{" + module + "}";
- });
- } catch(e) {
- console.error(output);
- throw e;
- }
- delete m.exports.toString;
- delete m.exports.i;
- return m.exports;
-}
+import vm from 'vm';
+import path from 'path';
-function assetEvaluated(output, result, modules) {
- var exports = getEvaluated(output, modules);
- exports.should.be.eql(result);
-}
+import del from 'del';
+import webpack from 'webpack';
+import MemoryFS from 'memory-fs';
+import stripAnsi from 'strip-ansi';
+import normalizePath from 'normalize-path';
-function runLoader(loader, input, map, addOptions, callback) {
- var opt = {
- options: {
- context: ""
- },
- callback: callback,
- async: function() {
- return callback;
- },
- loaders: [{request: "/path/css-loader"}],
- loaderIndex: 0,
- context: "",
- resource: "test.css",
- resourcePath: "test.css",
- request: "css-loader!test.css",
- emitError: function(message) {
- throw new Error(message);
- }
- };
- Object.keys(addOptions).forEach(function(key) {
- opt[key] = addOptions[key];
- });
- loader.call(opt, input, map);
-}
+function evaluated(output, modules, moduleId = 1) {
+ let m;
+ try {
+ const fn = vm.runInThisContext(
+ `(function(module, exports, require) {var __webpack_public_path__ = '/webpack/public/path/';${output}})`,
+ 'testcase.js'
+ );
+ m = { exports: {}, id: moduleId };
+ fn(m, m.exports, (module) => {
+ if (module.indexOf('runtime/api') >= 0) {
+ // eslint-disable-next-line global-require
+ return require('../src/runtime/api');
+ }
+ if (module.indexOf('runtime/get-url') >= 0) {
+ // eslint-disable-next-line global-require
+ return require('../src/runtime/getUrl');
+ }
+ if (/^-!.*?!.*$/.test(module)) {
+ // eslint-disable-next-line no-param-reassign
+ module = module.replace(/-!(.*)?!/, '');
+ }
+ if (modules && Array.isArray(modules)) {
+ const importedModule = modules.find((el) => {
+ const modulePath = el.identifier.split('!').pop();
+ // We need refactor this logic
+ const importedPaths = [
+ 'nested-import',
+ 'postcss-present-env',
+ 'icss/tests-cases/import',
+ 'icss/tests-cases/import-reserved-keywords',
+ 'import',
+ 'import/node_modules',
+ 'url',
+ 'url/node_modules',
+ 'modules/',
+ 'modules/issue-286',
+ 'modules/issue-636',
+ 'modules/node_modules',
+ 'modules/tests-cases/urls',
+ 'modules/tests-cases/issue-589',
+ 'modules/tests-cases/comments',
+ 'modules/tests-cases/values-3',
+ 'modules/tests-cases/values-4',
+ 'modules/tests-cases/values-5',
+ 'modules/tests-cases/values-6',
+ 'modules/tests-cases/values-7',
+ 'modules/tests-cases/composes-1',
+ 'modules/tests-cases/composes-2',
+ 'modules/tests-cases/composes-multiple',
+ 'modules/tests-cases/composes-with-importing',
+ 'modules/tests-cases/media-2',
+ '.',
+ ].map((importedPath) =>
+ path.resolve(
+ __dirname,
+ `./fixtures/${importedPath}`,
+ module
+ .replace('aliasesImg/', '')
+ .replace('aliasesImport/', '')
+ .replace('aliasesComposes/', '')
+ .replace(/!!(.*)?!/, '')
+ )
+ );
-exports.test = function test(name, input, result, query, modules) {
- it(name, function(done) {
- runLoader(cssLoader, input, undefined, !query || typeof query === "string" ? {
- query: query
- } : query, function(err, output) {
- if(err) return done(err);
- assetEvaluated(output, result, modules);
- done();
- });
- });
-};
+ return importedPaths.includes(modulePath);
+ });
-exports.testError = function test(name, input, onError) {
- it(name, function(done) {
- runLoader(cssLoader, input, undefined, {}, function(err, output) {
- if (!err) {
- done(new Error('Expected error to be thrown'));
- } else {
- try {
- onError(err);
- } catch (error) {
- return done(error);
+ if (importedModule) {
+ // eslint-disable-next-line no-param-reassign
+ moduleId += 1;
+ return evaluated(importedModule.source, modules, moduleId);
}
- done();
+
+ return 'nothing';
}
- });
- });
-};
+ return `{${module}}`;
+ });
+ } catch (e) {
+ console.error(output); // eslint-disable-line no-console
+ throw e;
+ }
+ delete m.exports.toString;
+ delete m.exports.i;
+ return m.exports;
+}
-exports.testWithMap = function test(name, input, map, result, query, modules) {
- it(name, function(done) {
- runLoader(cssLoader, input, map, {
- query: query
- }, function(err, output) {
- if(err) return done(err);
- assetEvaluated(output, result, modules);
- done();
- });
- });
+const moduleConfig = (config) => {
+ return {
+ rules: config.rules
+ ? config.rules
+ : [
+ {
+ test: (config.loader && config.loader.test) || /\.css$/,
+ use: [
+ {
+ loader: path.resolve(__dirname, '../src/index.js'),
+ options: (config.loader && config.loader.options) || {},
+ },
+ ]
+ .concat(
+ config.sourceMap
+ ? [
+ {
+ loader: path.resolve(
+ __dirname,
+ './fixtures/source-map-loader.js'
+ ),
+ options: {
+ sourceMap: config.sourceMap,
+ },
+ },
+ ]
+ : []
+ )
+ .concat(
+ config.postcssLoader
+ ? [
+ {
+ loader: 'postcss-loader',
+ options: config.postcssLoaderOptions,
+ },
+ ]
+ : []
+ )
+ .concat(
+ config.sassLoader
+ ? [
+ {
+ loader: 'sass-loader',
+ options: config.sassLoaderOptions || {},
+ },
+ ]
+ : []
+ ),
+ },
+ config.additionalLoader ? config.additionalLoader : {},
+ {
+ test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
+ use: {
+ loader: 'file-loader',
+ options: {
+ name: '[name].[ext]',
+ },
+ },
+ },
+ ],
+ };
};
-
-exports.testMap = function test(name, input, map, addOptions, result, modules) {
- it(name, function(done) {
- runLoader(cssLoader, input, map, addOptions, function(err, output) {
- if(err) return done(err);
- assetEvaluated(output, result, modules);
- done();
- });
- });
+const pluginsConfig = (config) => [].concat(config.plugins || []);
+const outputConfig = (config) => {
+ return {
+ path: path.resolve(
+ __dirname,
+ `../outputs/${config.output ? config.output : ''}`
+ ),
+ filename: '[name].bundle.js',
+ };
};
-exports.testLocals = function testLocals(name, input, result, query, modules) {
- it(name, function(done) {
- runLoader(cssLoaderLocals, input, undefined, {
- query: query
- }, function(err, output) {
- if(err) return done(err);
- assetEvaluated(output, result, modules);
- done();
- });
- });
-};
+function compile(fixture, config = {}, options = {}) {
+ // webpack Config
+ // eslint-disable-next-line no-param-reassign
+ config = {
+ mode: 'development',
+ devtool: config.devtool || 'sourcemap',
+ context: path.resolve(__dirname, 'fixtures'),
+ entry: path.resolve(__dirname, 'fixtures', fixture),
+ output: outputConfig(config),
+ module: moduleConfig(config),
+ plugins: pluginsConfig(config),
+ optimization: {
+ runtimeChunk: true,
+ },
+ resolve: {
+ alias: {
+ aliasesImg: path.resolve(__dirname, 'fixtures/url'),
+ aliasesImport: path.resolve(__dirname, 'fixtures/import'),
+ aliasesComposes: path.resolve(__dirname, 'fixtures/modules'),
+ },
+ },
+ };
-exports.testSingleItem = function testSingleItem(name, input, result, query, modules) {
- it(name, function(done) {
- runLoader(cssLoader, input, undefined, {
- query: query
- }, function(err, output) {
- if(err) return done(err);
- var exports = getEvaluated(output, modules);
- Array.isArray(exports).should.be.eql(true);
- (exports.length).should.be.eql(1);
- (exports[0].length >= 3).should.be.eql(true);
- (exports[0][0]).should.be.eql(1);
- (exports[0][2]).should.be.eql("");
- (exports[0][1]).should.be.eql(result);
- done();
- });
- });
-};
+ // Compiler Options
+ // eslint-disable-next-line no-param-reassign
+ options = Object.assign({ output: false }, options);
+
+ if (options.output) {
+ del.sync(config.output.path);
+ }
+
+ const compiler = webpack(config);
+
+ if (!options.output) {
+ compiler.outputFileSystem = new MemoryFS();
+ }
+
+ return new Promise((resolve, reject) =>
+ compiler.run((error, stats) => {
+ if (error) {
+ return reject(error);
+ }
+ return resolve(stats);
+ })
+ );
+}
+
+function normalizeErrors(errors) {
+ return errors.map((error) => {
+ const message = error.toString();
+
+ return stripAnsi(message)
+ .replace(/\(from .*?\)/, '(from `replaced original path`)')
+ .replace(/at(.*?)\(.*?\)/g, 'at$1(`replaced original path`)');
+ });
+}
+
+function normalizeSourceMap(module) {
+ return module.map((m) => {
+ if (m[3]) {
+ if (m[3].file) {
+ // eslint-disable-next-line no-param-reassign
+ m[3].file = normalizePath(
+ path.relative(path.resolve(__dirname, 'fixtures'), m[3].file)
+ );
+ }
+
+ if (m[3].sourceRoot) {
+ // eslint-disable-next-line no-param-reassign
+ m[3].sourceRoot = normalizePath(
+ path.relative(path.resolve(__dirname, 'fixtures'), m[3].sourceRoot)
+ );
+ }
+
+ if (m[3].sources) {
+ // eslint-disable-next-line no-param-reassign
+ m[3].sources = m[3].sources.map((source) =>
+ normalizePath(
+ path.relative(path.resolve(__dirname, 'fixtures'), source)
+ )
+ );
+ }
+ }
+
+ return m;
+ });
+}
-exports.testMinimize = function testMinimize(name, input, result, query, modules) {
- it(name, function(done) {
- runLoader(cssLoader, input, undefined, {
- minimize: true,
- query: query
- }, function(err, output) {
- if(err) return done(err);
- assetEvaluated(output, result, modules);
- done();
- });
- });
+module.exports = {
+ webpack: compile,
+ evaluated,
+ normalizeErrors,
+ normalizeSourceMap,
};
diff --git a/test/icss.test.js b/test/icss.test.js
new file mode 100644
index 00000000..d83875aa
--- /dev/null
+++ b/test/icss.test.js
@@ -0,0 +1,24 @@
+import path from 'path';
+import fs from 'fs';
+
+import { webpack, evaluated } from './helpers';
+
+const testCasesPath = path.join(__dirname, 'fixtures/icss/tests-cases');
+const testCases = fs.readdirSync(testCasesPath);
+
+describe('ICSS', () => {
+ testCases.forEach((name) => {
+ it(`case ${name}`, async () => {
+ const testId = `./icss/tests-cases/${name}/source.css`;
+ const stats = await webpack(testId);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+ });
+});
diff --git a/test/import-option.test.js b/test/import-option.test.js
new file mode 100644
index 00000000..0cc4590e
--- /dev/null
+++ b/test/import-option.test.js
@@ -0,0 +1,89 @@
+import { webpack, evaluated, normalizeErrors } from './helpers';
+
+describe('import option', () => {
+ it('true', async () => {
+ const testId = './import/import.css';
+ const stats = await webpack(testId);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
+ 'warnings'
+ );
+ expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
+ });
+
+ it('false', async () => {
+ const config = { loader: { options: { import: false } } };
+ const testId = './import/import.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ [true, 'local', 'global', false].forEach((modulesValue) => {
+ it(`true and modules \`${modulesValue}\``, async () => {
+ const config = {
+ loader: { options: { import: true, modules: modulesValue } },
+ };
+ const testId = './import/import.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
+ 'warnings'
+ );
+ expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot(
+ 'errors'
+ );
+ });
+ });
+
+ it('Function', async () => {
+ const config = {
+ loader: {
+ options: {
+ import: (parsedImport, resourcePath) => {
+ expect(typeof resourcePath === 'string').toBe(true);
+
+ // Don't handle `test.css`
+ if (parsedImport.url.includes('test.css')) {
+ return false;
+ }
+
+ return true;
+ },
+ },
+ },
+ };
+ const testId = './import/import.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
+ 'warnings'
+ );
+ expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
+ });
+});
diff --git a/test/importLoaders-option.test.js b/test/importLoaders-option.test.js
new file mode 100644
index 00000000..25952b9c
--- /dev/null
+++ b/test/importLoaders-option.test.js
@@ -0,0 +1,106 @@
+import postcssPresetEnv from 'postcss-preset-env';
+
+import { webpack, evaluated } from './helpers';
+
+describe('importLoaders option', () => {
+ it('not specify (no loader before)', async () => {
+ // It is hard to test `postcss` on reuse `ast`, please look on coverage before merging
+ const config = {
+ postcssLoader: true,
+ postcssLoaderOptions: {
+ plugins: () => [postcssPresetEnv({ stage: 0 })],
+ },
+ };
+ const testId = './nested-import/source.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('1 (no loaders before)', async () => {
+ const config = {
+ loader: { options: { importLoaders: 1 } },
+ };
+ const testId = './nested-import/source.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('0 (`postcss-loader` before)', async () => {
+ const config = {
+ loader: { options: { importLoaders: 0 } },
+ postcssLoader: true,
+ postcssLoaderOptions: {
+ plugins: () => [postcssPresetEnv({ stage: 0 })],
+ },
+ };
+ const testId = './nested-import/source.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('1 (`postcss-loader` before)', async () => {
+ const config = {
+ loader: { options: { importLoaders: 1 } },
+ postcssLoader: true,
+ postcssLoaderOptions: {
+ plugins: () => [postcssPresetEnv({ stage: 0 })],
+ },
+ };
+ const testId = './nested-import/source.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('2 (`postcss-loader` before)', async () => {
+ const config = {
+ loader: { options: { importLoaders: 2 } },
+ postcssLoader: true,
+ postcssLoaderOptions: {
+ plugins: () => [postcssPresetEnv({ stage: 0 })],
+ },
+ };
+ const testId = './nested-import/source.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+});
diff --git a/test/importTest.js b/test/importTest.js
deleted file mode 100644
index 19efac8b..00000000
--- a/test/importTest.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*globals describe */
-
-var test = require("./helpers").test;
-
-describe("import", function() {
- test("import", "@import url(test.css);\n.class { a: b c d; }", [
- [2, ".test{a: b}", ""],
- [1, ".class { a: b c d; }", ""]
- ], "", {
- "./test.css": [[2, ".test{a: b}", ""]]
- });
- test("import with string", "@import \"test.css\";\n.class { a: b c d; }", [
- [2, ".test{a: b}", ""],
- [1, ".class { a: b c d; }", ""]
- ], "", {
- "./test.css": [[2, ".test{a: b}", ""]]
- });
- test("import 2", "@import url('test.css');\n.class { a: b c d; }", [
- [2, ".test{a: b}", "screen"],
- [1, ".class { a: b c d; }", ""]
- ], "", {
- "./test.css": [[2, ".test{a: b}", "screen"]]
- });
- test("import with media", "@import url('~test/css') screen and print;\n.class { a: b c d; }", [
- [3, ".test{a: b}", "((min-width: 100px)) and (screen and print)"],
- [2, ".test{c: d}", "screen and print"],
- [1, ".class { a: b c d; }", ""]
- ], "", {
- "test/css": [
- [3, ".test{a: b}", "(min-width: 100px)"],
- [2, ".test{c: d}", ""]
- ]
- });
- test("import external", "@import url(http://example.com/style.css);\n@import url(\"//example.com/style.css\");", [
- [1, "@import url(http://example.com/style.css);", ""],
- [1, "@import url(//example.com/style.css);", ""],
- [1, "", ""]
- ]);
- test("import disabled", "@import url(test.css);\n.class { a: b c d; }", [
- [1, "@import url(test.css);\n.class { a: b c d; }", ""]
- ], "?-import");
-});
diff --git a/test/loader.test.js b/test/loader.test.js
new file mode 100644
index 00000000..4fea2209
--- /dev/null
+++ b/test/loader.test.js
@@ -0,0 +1,167 @@
+import path from 'path';
+
+import postcssPresetEnv from 'postcss-preset-env';
+
+import { webpack, evaluated, normalizeErrors } from './helpers';
+
+describe('loader', () => {
+ it('should compile with `js` entry point', async () => {
+ const stats = await webpack('basic.js');
+ const { modules } = stats.toJson();
+ const [, api, escape, module] = modules;
+
+ expect(api.source).toMatchSnapshot('api');
+ expect(escape.source).toMatchSnapshot('escape');
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should compile with `css` entry point', async () => {
+ const stats = await webpack('basic.css');
+ const { modules } = stats.toJson();
+ const [, runtime, escape, module] = modules;
+
+ expect(runtime.source).toMatchSnapshot('api');
+ expect(escape.source).toMatchSnapshot('escape');
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should compile with `css` entry point (with `modules` and scope `local`)', async () => {
+ const config = { loader: { options: { modules: 'local' } } };
+ const stats = await webpack('basic.css', config);
+ const { modules } = stats.toJson();
+ const [, runtime, escape, module] = modules;
+
+ expect(runtime.source).toMatchSnapshot('api');
+ expect(escape.source).toMatchSnapshot('escape');
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should compile with `css` entry point (with `modules` and scope `global`)', async () => {
+ const config = { loader: { options: { modules: 'global' } } };
+ const stats = await webpack('basic.css', config);
+ const { modules } = stats.toJson();
+ const [, runtime, escape, module] = modules;
+
+ expect(runtime.source).toMatchSnapshot('api');
+ expect(escape.source).toMatchSnapshot('escape');
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should compile with empty css entry point', async () => {
+ const testId = './empty.css';
+ const stats = await webpack(testId);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should compile with empty options', async () => {
+ const config = { loader: { options: {} } };
+ const testId = './empty.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should throws error when no loader for assets', async () => {
+ const config = {
+ rules: [
+ {
+ test: /\.css$/,
+ use: {
+ loader: path.resolve(__dirname, '../src/index'),
+ },
+ },
+ ],
+ };
+ const stats = await webpack('basic.css', config);
+
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
+ });
+
+ it('should throw error on invalid css syntax', async () => {
+ const stats = await webpack('invalid.css');
+
+ expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
+ 'warnings'
+ );
+ expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
+ });
+
+ it('using together with "postcss-loader" and reuse `ast`', async () => {
+ // It is hard to test `postcss` on reuse `ast`, please look on coverage before merging
+ const config = {
+ postcssLoader: true,
+ postcssLoaderOptions: {
+ plugins: () => [postcssPresetEnv({ stage: 0 })],
+ },
+ };
+ const testId = './postcss-present-env/source.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('using together with "sass-loader"', async () => {
+ const config = {
+ loader: { test: /\.s[ca]ss$/i },
+ sassLoader: true,
+ sassLoaderOptions: {
+ // eslint-disable-next-line global-require
+ implementation: require('sass'),
+ },
+ };
+ const testId = './scss/source.scss';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+});
diff --git a/test/localTest.js b/test/localTest.js
deleted file mode 100644
index e2146bdf..00000000
--- a/test/localTest.js
+++ /dev/null
@@ -1,220 +0,0 @@
-/*globals describe */
-
-var test = require("./helpers").test;
-var testMinimize = require("./helpers").testMinimize;
-
-function testLocal(name, input, result, localsResult, query, modules) {
- result.locals = localsResult;
- test(name, input, result, query, modules);
-}
-
-function testLocalMinimize(name, input, result, localsResult, query, modules) {
- result.locals = localsResult;
- testMinimize(name, input, result, query, modules);
-}
-
-describe("local", function() {
- testLocal("locals-format", ":local(.test) { background: red; }", [
- [1, ".test-2_pBx { background: red; }", ""]
- ], {
- test: "test-2_pBx"
- }, "?localIdentName=[local]-[hash:base64:5]");
- testLocal("locals", ":local(.className) { background: red; }\n:local(#someId) { background: green; }\n" +
- ":local(.className .subClass) { color: green; }\n:local(#someId .subClass) { color: blue; }", [
- [1, "._23J0282swY7bwvI2X4fHiV { background: red; }\n#_3vpqN0v_IxlO3TzQjbpB33 { background: green; }\n" +
- "._23J0282swY7bwvI2X4fHiV ._1s1VsToXFz17cPAltMg7jz { color: green; }\n#_3vpqN0v_IxlO3TzQjbpB33 ._1s1VsToXFz17cPAltMg7jz { color: blue; }", ""]
- ], {
- className: "_23J0282swY7bwvI2X4fHiV",
- someId: "_3vpqN0v_IxlO3TzQjbpB33",
- subClass: "_1s1VsToXFz17cPAltMg7jz"
- });
- testLocalMinimize("minimized plus local", ":local(.localClass) { background: red; }\n:local .otherClass { background: red; }\n:local(.empty) { }", [
- [1, "._localClass,._otherClass{background:red}", ""]
- ], {
- localClass: "_localClass",
- otherClass: "_otherClass",
- empty: "_empty"
- }, "?localIdentName=_[local]");
- testLocal("mode switching", ".c1 :local .c2 .c3 :global .c4 :local .c5, .c6 :local .c7 { background: red; }\n.c8 { background: red; }", [
- [1, ".c1 ._c2 ._c3 .c4 ._c5, .c6 ._c7 { background: red; }\n.c8 { background: red; }", ""]
- ], {
- c2: "_c2",
- c3: "_c3",
- c5: "_c5",
- c7: "_c7"
- }, "?localIdentName=_[local]");
- testLocal("comment in local", ":local(.c1/*.c2*/.c3) { background: red; }", [
- [1, "._c1._c3 { background: red; }", ""]
- ], {
- c1: "_c1",
- c3: "_c3"
- }, "?localIdentName=_[local]");
- testLocal("comment in local", ":local(.c1/*.c2*/.c3) { background: red; }", [
- [1, "._c1._c3 { background: red; }", ""]
- ], {
- c1: "_c1",
- c3: "_c3"
- }, "?localIdentName=_[local]");
- testLocal("strings in local", ":local(.c1[data-attr=\".c2)]'\"]:not(.c3):not(.c4)) { background: red; }", [
- [1, "._c1[data-attr=\".c2)]'\"]:not(._c3):not(._c4) { background: red; }", ""]
- ], {
- c1: "_c1",
- c3: "_c3",
- c4: "_c4"
- }, "?localIdentName=_[local]");
-
- testLocal("composes class simple", ":local(.c1) { a: 1; }\n:local(.c2) { composes: c1; b: 1; }", [
- [1, "._c1 { a: 1; }\n._c2 { b: 1; }", ""]
- ], {
- c1: "_c1",
- c2: "_c2 _c1"
- }, "?localIdentName=_[local]");
- testLocal("composes class from module", [
- ":local(.c1) { composes: c2 from \"./module\"; b: 1; }",
- ":local(.c3) { composes: c1; b: 3; }",
- ":local(.c5) { composes: c2 c4 from \"./module\"; b: 5; }"
- ].join("\n"), [
- [2, ".test{c: d}", ""],
- [1, [
- "._c1 { b: 1; }",
- "._c3 { b: 3; }",
- "._c5 { b: 5; }"
- ].join("\n"), ""]
- ], {
- c1: "_c1 imported-c2",
- c3: "_c3 _c1 imported-c2",
- c5: "_c5 imported-c2 imported-c4"
- }, "?localIdentName=_[local]", {
- "./module": (function() {
- var r = [
- [2, ".test{c: d}", ""]
- ];
- r.locals = {
- c2: "imported-c2",
- c4: "imported-c4"
- };
- return r;
- }())
- });
- testLocal("composes class with hyphen from module", [
- ":local(.c1) { composes: c-2 from \"./module\"; b: 1; }",
- ":local(.c3) { composes: c1; b: 3; }",
- ":local(.c5) { composes: c-2 c4 from \"./module\"; b: 5; }"
- ].join("\n"), [
- [2, ".test{c: d}", ""],
- [1, [
- "._c1 { b: 1; }",
- "._c3 { b: 3; }",
- "._c5 { b: 5; }"
- ].join("\n"), ""]
- ], {
- c1: "_c1 imported-c-2",
- c3: "_c3 _c1 imported-c-2",
- c5: "_c5 imported-c-2 imported-c4"
- }, "?localIdentName=_[local]", {
- "./module": (function() {
- var r = [
- [2, ".test{c: d}", ""]
- ];
- r.locals = {
- "c-2": "imported-c-2",
- c4: "imported-c4"
- };
- return r;
- }())
- });
- testLocal("composes class from module with import", [
- "@import url(\"module\");",
- ":local(.c1) { composes: c2 c3 from \"./module\"; composes: c4 from \"./module\"; b: 1; }"
- ].join("\n"), [
- [2, ".test{c: d}", ""],
- [1, "._c1 { b: 1; }", ""]
- ], {
- c1: "_c1 imported-c2 imported-c3 imported-c4"
- }, "?localIdentName=_[local]", {
- "./module": (function() {
- var r = [
- [2, ".test{c: d}", ""]
- ];
- r.locals = {
- c2: "imported-c2",
- c3: "imported-c3",
- c4: "imported-c4"
- };
- return r;
- }())
- });
- testLocal("module mode", ".className { background: url(./file.png); }\n#someId { background: url('module/file.jpg'); }\n" +
- ".className .subClass { font-size: 5.5pt; }\n#someId .subClass { color: blue; }", [
- [1, "._23J0282swY7bwvI2X4fHiV { background: url({./file.png}); }\n#_3vpqN0v_IxlO3TzQjbpB33 { background: url({module/file.jpg}); }\n" +
- "._23J0282swY7bwvI2X4fHiV ._1s1VsToXFz17cPAltMg7jz { font-size: 5.5pt; }\n#_3vpqN0v_IxlO3TzQjbpB33 ._1s1VsToXFz17cPAltMg7jz { color: blue; }", ""]
- ], {
- className: "_23J0282swY7bwvI2X4fHiV",
- someId: "_3vpqN0v_IxlO3TzQjbpB33",
- subClass: "_1s1VsToXFz17cPAltMg7jz"
- }, "?module");
- testLocal("class name parsing", ".-a0-34a___f { color: red; }", [
- [1, "._3ZMCqVa1XidxdqbX65hZ5D { color: red; }", ""]
- ], {
- "-a0-34a___f": "_3ZMCqVa1XidxdqbX65hZ5D"
- }, "?module");
- testLocal("imported values in decl", ".className { color: IMPORTED_NAME; }\n" +
- ":import(\"./vars.css\") { IMPORTED_NAME: primary-color; }", [
- [1, "._className { color: red; }", ""]
- ], {
- "className": "_className"
- }, "?module&localIdentName=_[local]", {
- "./vars.css": {
- locals: {
- "primary-color": "red"
- }
- }
- });
- testLocal("issue-109", ".bar-1 { color: red; }", [
- [1, ".file--bar-1--2JvfJ { color: red; }", ""]
- ], {
- "bar-1": "file--bar-1--2JvfJ"
- }, "?modules&importLoaders=1&localIdentName=[name]--[local]--[hash:base64:5]");
- testLocal("path naming", ".bar { color: red; }", [
- [1, ".path-to--file--bar { color: red; }", ""]
- ], {
- "bar": "path-to--file--bar"
- }, {
- query: "?modules&localIdentName=[path]-[name]--[local]",
- resourcePath: "/root/path/to/file.css",
- options: {
- context: "/root/"
- }
- });
- testLocal("path naming with context", ".bar { color: red; }", [
- [1, ".to--file--bar { color: red; }", ""]
- ], {
- "bar": "to--file--bar"
- }, {
- query: "?modules&localIdentName=[path]-[name]--[local]&context=/root/path",
- resourcePath: "/root/path/to/file.css",
- options: {
- context: "/root/"
- }
- });
- testLocal("hash prefix", ".bar { color: red; }", [
- [1, ".bar--58a3b08b9195a6af0de7431eaf3427c7 { color: red; }", ""]
- ], {
- "bar": "bar--58a3b08b9195a6af0de7431eaf3427c7"
- }, "?modules&localIdentName=[local]--[hash]&hashPrefix=x");
- testLocal("prefixes leading digit with underscore", ":local(.test) { background: red; }", [
- [1, "._1test { background: red; }", ""]
- ], {
- test: "_1test"
- }, "?localIdentName=1[local]");
- testLocal("prefixes leading hyphen + digit with underscore", ":local(.test) { background: red; }", [
- [1, "._-1test { background: red; }", ""]
- ], {
- test: "_-1test"
- }, "?localIdentName=-1[local]");
- testLocal("prefixes two leading hyphens with underscore", ":local(.test) { background: red; }", [
- [1, "._--test { background: red; }", ""]
- ], {
- test: "_--test"
- }, "?localIdentName=--[local]");
-});
diff --git a/test/localsConvention-option.test.js b/test/localsConvention-option.test.js
new file mode 100644
index 00000000..5c8d7dda
--- /dev/null
+++ b/test/localsConvention-option.test.js
@@ -0,0 +1,122 @@
+import { webpack, evaluated } from './helpers';
+
+describe('localsConvention option', () => {
+ it('not specified', async () => {
+ const config = { loader: { options: { modules: true } } };
+ const testId = './modules/localsConvention.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('asIs', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: true,
+ localsConvention: 'asIs',
+ },
+ },
+ };
+ const testId = './modules/localsConvention.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('camelCase', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: true,
+ localsConvention: 'camelCase',
+ },
+ },
+ };
+ const testId = './modules/localsConvention.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('camelCaseOnly', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: true,
+ localsConvention: 'camelCaseOnly',
+ },
+ },
+ };
+ const testId = './modules/localsConvention.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('dashes', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: true,
+ localsConvention: 'dashes',
+ },
+ },
+ };
+ const testId = './modules/localsConvention.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('dashesOnly', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: true,
+ localsConvention: 'dashesOnly',
+ },
+ },
+ };
+ const testId = './modules/localsConvention.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+});
diff --git a/test/localsTest.js b/test/localsTest.js
deleted file mode 100644
index 314d6e89..00000000
--- a/test/localsTest.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/*globals describe */
-
-var testLocals = require("./helpers").testLocals;
-
-describe("locals", function() {
- testLocals("should return only locals",
- ".abc :local(.def) { color: red; } :local .ghi .jkl { color: blue; }",
- {
- def: "_def",
- ghi: "_ghi",
- jkl: "_jkl"
- },
- "?localIdentName=_[local]"
- );
- testLocals("should return only locals with composing",
- ":local(.abc) { color: red; } :local(.def) { composes: abc; background: green; }",
- {
- abc: "_abc",
- def: "_def _abc"
- },
- "?localIdentName=_[local]"
- );
- testLocals("should return only locals with importing",
- ":local(.abc) { composes: def from \"./module.css\"; }",
- {
- abc: "_abc imported_def imported_ghi"
- },
- "?localIdentName=_[local]",
- {
- "./module.css": {
- def: "imported_def imported_ghi",
- ghi: "imported_ghi"
- }
- }
- );
- testLocals("should return only locals with importing",
- ":local(.abc) { composes: def from \"./module1.css\"; composes: def from \"./module2.css\"; }",
- {
- abc: "_abc imported_def1 imported_ghi1 imported_def2"
- },
- "?localIdentName=_[local]",
- {
- "./module1.css": {
- def: "imported_def1 imported_ghi1",
- ghi: "imported_ghi1"
- },
- "./module2.css": {
- def: "imported_def2"
- }
- }
- );
-});
diff --git a/test/moduleMinimizeTest.js b/test/moduleMinimizeTest.js
deleted file mode 100644
index bbc47f5c..00000000
--- a/test/moduleMinimizeTest.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*globals describe */
-
-var test = require("./helpers").testSingleItem;
-
-var path = require("path");
-var fs = require("fs");
-var testCasesPath = path.join(__dirname, "moduleMinimizeTestCases");
-var testCases = fs.readdirSync(testCasesPath);
-
-describe("module minimize", function() {
- testCases.forEach(function(name) {
- var source = fs.readFileSync(path.join(testCasesPath, name, "source.css"), "utf-8");
- var expected = fs.readFileSync(path.join(testCasesPath, name, "expected.css"), "utf-8");
-
- test(name, source, expected, "?module&minimize&sourceMap&-discardComments&localIdentName=_[local]_");
- });
-});
diff --git a/test/moduleMinimizeTestCases/keyframes-and-animation/expected.css b/test/moduleMinimizeTestCases/keyframes-and-animation/expected.css
deleted file mode 100644
index 23b566a3..00000000
--- a/test/moduleMinimizeTestCases/keyframes-and-animation/expected.css
+++ /dev/null
@@ -1,3 +0,0 @@
-@keyframes _bounce_{0%{transform:translateY(-100%);opacity:0}5%{transform:translateY(-50%);opacity:1}}@keyframes _bounce2_{0%{transform:translateY(-100%);opacity:0}50%{transform:translateY(-50%);opacity:1}}
-
-/* comment */._bounce_{animation-name:_bounce_;animation:_bounce2_ 1s ease;z-index:1442}
\ No newline at end of file
diff --git a/test/moduleMinimizeTestCases/keyframes-and-animation/source.css b/test/moduleMinimizeTestCases/keyframes-and-animation/source.css
deleted file mode 100644
index ae0f698f..00000000
--- a/test/moduleMinimizeTestCases/keyframes-and-animation/source.css
+++ /dev/null
@@ -1,28 +0,0 @@
-@keyframes bounce {
- 0% {
- transform: translateY(-100%);
- opacity: 0;
- }
- 5% {
- transform: translateY(-50%);
- opacity: 1;
- }
-}
-
-@keyframes bounce2 {
- 0% {
- transform: translateY(-100%);
- opacity: 0;
- }
- 50% {
- transform: translateY(-50%);
- opacity: 1;
- }
-}
-
-/* comment */
-.bounce {
- animation-name: bounce;
- animation: bounce2 1s ease;
- z-index: 1442;
-}
diff --git a/test/moduleTest.js b/test/moduleTest.js
deleted file mode 100644
index b5a56aac..00000000
--- a/test/moduleTest.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*globals describe */
-
-var test = require("./helpers").testSingleItem;
-
-var path = require("path");
-var fs = require("fs");
-var testCasesPath = path.join(__dirname, "moduleTestCases");
-var testCases = fs.readdirSync(testCasesPath);
-
-describe("module", function() {
- testCases.forEach(function(name) {
- var source = fs.readFileSync(path.join(testCasesPath, name, "source.css"), "utf-8");
- var expected = fs.readFileSync(path.join(testCasesPath, name, "expected.css"), "utf-8");
-
- test(name, source, expected, "?module&sourceMap&localIdentName=_[local]_");
- });
-});
diff --git a/test/moduleTestCases/class-names/expected.css b/test/moduleTestCases/class-names/expected.css
deleted file mode 100644
index 695a9dc3..00000000
--- a/test/moduleTestCases/class-names/expected.css
+++ /dev/null
@@ -1,3 +0,0 @@
-._class-1_, ._class-10_ ._bar-1_ {
- color: green;
-}
diff --git a/test/moduleTestCases/comments/expected.css b/test/moduleTestCases/comments/expected.css
deleted file mode 100644
index 4c9a35f3..00000000
--- a/test/moduleTestCases/comments/expected.css
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * a ' above
- */
-
-._bg_ {
- background-image: url({bg.jpg});
-}
-
-/*
- * a ' below
- */
\ No newline at end of file
diff --git a/test/moduleTestCases/keyframes-and-animation/expected.css b/test/moduleTestCases/keyframes-and-animation/expected.css
deleted file mode 100644
index fa04fb27..00000000
--- a/test/moduleTestCases/keyframes-and-animation/expected.css
+++ /dev/null
@@ -1,48 +0,0 @@
-._a_ {
- color: green;
-}
-
-@keyframes _bounce_ {
- 0% {
- transform: translateY(-100%);
- opacity: 0;
- }
- 5% {
- transform: translateY(-100%);
- opacity: 0;
- }
-}
-
-@-webkit-keyframes _bounce2_ {
- 0% {
- transform: translateY(-100%);
- opacity: 0;
- }
- 5% {
- transform: translateY(-100%);
- opacity: 0;
- }
-}
-
-._bounce_ {
- animation-name: _bounce_;
- animation: _bounce2_ 1s ease;
-}
-
-._bounce2_ {
- color: green;
- animation: _bounce_ 1s ease;
- animation-name: _bounce2_;
-}
-
-._bounce3_ {
- animation: _bounce_ 1s ease, _bounce2_
-}
-
-._bounce4_ {
- animation: _bounce_ 1s ease, _bounce2_;
-}
-
-._b_ {
- color: green;
-}
diff --git a/test/moduleTestCases/leak-scope/expected.css b/test/moduleTestCases/leak-scope/expected.css
deleted file mode 100644
index 2d72df97..00000000
--- a/test/moduleTestCases/leak-scope/expected.css
+++ /dev/null
@@ -1,37 +0,0 @@
-._a_ {
- color: green;
- animation: _a_;
-}
-
-@keyframes _b_ {
- 0% { left: 10px; }
- 100% { left: 20px; }
-}
-
-._b_ {
- animation: _b_;
-}
-
-@keyframes c {
- 0% { left: 10px; }
- 100% { left: 20px; }
-}
-
-._c_ {
- animation: _c1_;
- animation: _c2_, _c3_, _c4_;
-}
-
-@keyframes d {
- 0% { left: 10px; }
- 100% { left: 20px; }
-}
-
-.d1 {
- animation: d1;
- animation: d2, d3, d4;
-}
-
-.d2 {
- animation: _d2_;
-}
diff --git a/test/moduleTestCases/simple/expected.css b/test/moduleTestCases/simple/expected.css
deleted file mode 100644
index 3f3a1c9d..00000000
--- a/test/moduleTestCases/simple/expected.css
+++ /dev/null
@@ -1,11 +0,0 @@
-._a_ ._b_, ._c_ ._d_, #_id_ {
- color: green;
- font-size: 1.5pt;
-}
-a[href="#b.c"]._x_._y_ {
- color: green;
- font-size: 1.5pt;
-}
-@keyframes _z_ {
- 2.5% {color: green;}
-}
diff --git a/test/moduleTestCases/urls/expected.css b/test/moduleTestCases/urls/expected.css
deleted file mode 100644
index 50416ce3..00000000
--- a/test/moduleTestCases/urls/expected.css
+++ /dev/null
@@ -1,12 +0,0 @@
-._a_ {
- background: url({./module});
- background: url({./module});
- background: url({./module});
- background: url({./module}#?iefix);
- background: url("#hash");
- background: url("#");
- background: url(data:image/png;base64,AAA);
- background: url(http://example.com/image.jpg);
- background: url(//example.com/image.png);
- background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url({./module}) xyz;
-}
diff --git a/test/moduleTestCases/urls/source.css b/test/moduleTestCases/urls/source.css
deleted file mode 100644
index beac30e6..00000000
--- a/test/moduleTestCases/urls/source.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.a {
- background: url(./module);
- background: url("./module");
- background: url('./module');
- background: url("./module#?iefix");
- background: url("#hash");
- background: url("#");
- background: url(data:image/png;base64,AAA);
- background: url(http://example.com/image.jpg);
- background: url(//example.com/image.png);
- background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(./module) xyz;
-}
diff --git a/test/moduleTestCases/values/expected.css b/test/moduleTestCases/values/expected.css
deleted file mode 100644
index ad85f81a..00000000
--- a/test/moduleTestCases/values/expected.css
+++ /dev/null
@@ -1,5 +0,0 @@
-._a_ {
- background: red;
- background: green;
- background: red;
-}
diff --git a/test/modules-option.test.js b/test/modules-option.test.js
new file mode 100644
index 00000000..90a45670
--- /dev/null
+++ b/test/modules-option.test.js
@@ -0,0 +1,535 @@
+import path from 'path';
+import fs from 'fs';
+
+import { webpack, evaluated } from './helpers';
+
+const testCasesPath = path.join(__dirname, 'fixtures/modules/tests-cases');
+const testCases = fs.readdirSync(testCasesPath);
+
+describe('modules', () => {
+ [
+ true,
+ false,
+ 'local',
+ 'global',
+ { mode: 'local' },
+ { mode: 'global' },
+ ].forEach((modulesValue) => {
+ testCases.forEach((name) => {
+ it(`case \`${name}\` (\`modules\` value is \`${
+ modulesValue.mode
+ ? `object with mode ${modulesValue.mode}`
+ : modulesValue
+ })\``, async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: modulesValue.mode
+ ? {
+ mode: modulesValue.mode,
+ localIdentName: '_[local]',
+ }
+ : modulesValue,
+ },
+ },
+ };
+ const testId = `./modules/tests-cases/${name}/source.css`;
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+ });
+ });
+
+ it('should respects localIdentName option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '[name]--[local]--[hash:base64:5]',
+ context: path.resolve(__dirname),
+ },
+ },
+ },
+ };
+ const testId = './modules/localIdentName.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should respects context option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '[hash:base64:8]',
+ context: path.resolve(__dirname),
+ },
+ },
+ },
+ };
+ const testId = './modules/localIdentName.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should respects path in localIdentName option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '[path][name]__[local]',
+ context: path.resolve(__dirname),
+ },
+ },
+ },
+ };
+ const testId = './modules/localIdentName.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should respects hashPrefix option with localIdentName option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '[local]--[hash]',
+ hashPrefix: 'x',
+ },
+ },
+ },
+ };
+ const testId = './modules/localIdentName.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should prefixes leading hyphen + digit with underscore with localIdentName option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '-1[local]',
+ },
+ },
+ },
+ };
+ const testId = './modules/localIdentName.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should prefixes two leading hyphens with underscore with localIdentName option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '--[local]',
+ },
+ },
+ },
+ };
+ const testId = './modules/localIdentName.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should saves underscore prefix in exported class names with localIdentName option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '[local]',
+ },
+ },
+ },
+ };
+ const testId = './modules/localIdentName.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should correctly replace escaped symbols in selector with localIdentName option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '[local]--[hash:base64:4]',
+ },
+ importLoaders: 2,
+ },
+ },
+ };
+ const testId = './modules/localIdentName.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source, modules);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should respects getLocalIdent option (local mode)', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ getLocalIdent() {
+ return 'foo';
+ },
+ },
+ },
+ },
+ };
+ const testId = './modules/getLocalIdent.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should accepts all arguments for getLocalIdent option', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentRegExp: 'regExp',
+ context: 'context',
+ hashPrefix: 'hash',
+ getLocalIdent(loaderContext, localIdentName, localName, options) {
+ expect(loaderContext).toBeDefined();
+ expect(typeof localIdentName).toBe('string');
+ expect(typeof localName).toBe('string');
+ expect(options).toBeDefined();
+
+ expect(options.regExp).toBe('regExp');
+ expect(options.context).toBe('context');
+ expect(options.hashPrefix).toBe('hash');
+
+ return 'foo';
+ },
+ },
+ },
+ },
+ };
+ const testId = './modules/getLocalIdent.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should have an undefined context if no context was given', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ getLocalIdent(loaderContext, localIdentName, localName, options) {
+ expect(options.context).toBeUndefined();
+ return 'foo';
+ },
+ },
+ },
+ },
+ };
+ const testId = './modules/getLocalIdent.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should respects getLocalIdent option (global mode)', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ getLocalIdent() {
+ return 'foo';
+ },
+ },
+ },
+ },
+ };
+ const testId = './modules/getLocalIdent.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('getLocalIdent should be allowed to return false', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '[local]',
+ getLocalIdent: () => false,
+ },
+ },
+ },
+ };
+ const testId = './modules/getLocalIdent.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const evaluatedModule = evaluated(module.source);
+
+ expect(evaluatedModule).toMatchSnapshot('module (evaluated)');
+ expect(evaluatedModule.locals).toMatchSnapshot('locals');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('composes should supports resolving', async () => {
+ const config = {
+ loader: { options: { import: true, modules: true } },
+ };
+ const testId = './modules/composes.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('issue #286', async () => {
+ const config = {
+ loader: {
+ test: /source\.css$/,
+ options: {
+ importLoaders: false,
+ modules: {
+ localIdentName: 'b--[local]',
+ },
+ },
+ },
+ additionalLoader: {
+ test: /dep\.css$/,
+ loader: path.resolve(__dirname, '../src/index.js'),
+ options: {
+ importLoaders: false,
+ modules: {
+ localIdentName: 'a--[local]',
+ },
+ },
+ },
+ };
+ const testId = './modules/issue-286/source.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('issue #636', async () => {
+ const config = {
+ loader: {
+ test: /\.s[ca]ss$/i,
+ options: {
+ modules: {
+ localIdentName: '[local]',
+ getLocalIdent: (context, localIdentName, localName) =>
+ `prefix-${localName}`,
+ },
+ importLoaders: 1,
+ },
+ },
+ sassLoader: true,
+ sassLoaderOptions: {
+ // eslint-disable-next-line global-require
+ implementation: require('sass'),
+ },
+ };
+ const testId = './modules/issue-636/source.scss';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('issue #861', async () => {
+ const config = {
+ loader: { options: { modules: true } },
+ };
+ const testId = './modules/resolving-inside-node-modules.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('issue #967', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ mode: 'local',
+ localIdentName:
+ '[path][name]__[local]__/-sep-?-sep-<-sep->-sep-\\\\-sep-:-sep-*-sep-|-sep-"-sep-:',
+ },
+ },
+ },
+ };
+ const testId = './modules/path-placeholder.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('issue #966', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ getLocalIdent: (ctx, localIdentName, localName) =>
+ `${localName}.hey`,
+ },
+ },
+ },
+ };
+ const testId = './modules/issue-966/button.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('issue #980', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ localIdentName: '[name]_[local]_[hash:base64:5]',
+ },
+ },
+ },
+ };
+ const testId = './modules/file.with.many.dots.in.name.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+});
diff --git a/test/onlyLocals-option.test.js b/test/onlyLocals-option.test.js
new file mode 100644
index 00000000..3b547342
--- /dev/null
+++ b/test/onlyLocals-option.test.js
@@ -0,0 +1,29 @@
+import { webpack } from './helpers';
+
+describe('modules', () => {
+ it('true (mode: local)', async () => {
+ const config = {
+ loader: {
+ options: {
+ modules: {
+ mode: 'local',
+ localIdentName: '_[local]',
+ },
+ onlyLocals: true,
+ },
+ },
+ };
+ const testId = `./modules/composes.css`;
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+ const valueModule = modules.find((m) =>
+ m.id.endsWith('./modules/values.css')
+ );
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(valueModule.source).toMatchSnapshot('values module');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+});
diff --git a/test/runtime/__snapshots__/api.test.js.snap b/test/runtime/__snapshots__/api.test.js.snap
new file mode 100644
index 00000000..7f342391
--- /dev/null
+++ b/test/runtime/__snapshots__/api.test.js.snap
@@ -0,0 +1,19 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`api should import modules 1`] = `"body { b: 2; }body { c: 3; }@media print{body { d: 4; }}@media screen{body { a: 1; }}"`;
+
+exports[`api should import named modules 1`] = `"body { b: 2; }body { c: 3; }@media print{body { d: 4; }}@media screen{body { a: 1; }}"`;
+
+exports[`api should toString a single module 1`] = `"body { a: 1; }"`;
+
+exports[`api should toString multiple modules 1`] = `"body { b: 2; }body { a: 1; }"`;
+
+exports[`api should toString with media query 1`] = `"@media screen{body { a: 1; }}"`;
+
+exports[`api should toString with source mapping 1`] = `
+"body { a: 1; }
+/*# sourceURL=webpack://./path/to/test.scss */
+/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJmaWxlIjoidGVzdC5zY3NzIiwic291cmNlcyI6WyIuL3BhdGgvdG8vdGVzdC5zY3NzIl0sIm1hcHBpbmdzIjoiQUFBQTsiLCJzb3VyY2VSb290Ijoid2VicGFjazovLyJ9 */"
+`;
+
+exports[`api should toString without source mapping if btoa not avalibale 1`] = `"body { a: 1; }"`;
diff --git a/test/runtime/__snapshots__/getUrl.test.js.snap b/test/runtime/__snapshots__/getUrl.test.js.snap
new file mode 100644
index 00000000..f03378f4
--- /dev/null
+++ b/test/runtime/__snapshots__/getUrl.test.js.snap
@@ -0,0 +1,47 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`escape should escape url 1`] = `true`;
+
+exports[`escape should escape url 2`] = `"image.png"`;
+
+exports[`escape should escape url 3`] = `"image.png"`;
+
+exports[`escape should escape url 4`] = `"image.png"`;
+
+exports[`escape should escape url 5`] = `"\\"image other.png\\""`;
+
+exports[`escape should escape url 6`] = `"\\"image other.png\\""`;
+
+exports[`escape should escape url 7`] = `"\\"image other.png\\""`;
+
+exports[`escape should escape url 8`] = `"\\"image\\\\\\"other.png\\""`;
+
+exports[`escape should escape url 9`] = `"\\"image\\\\nother.png\\""`;
+
+exports[`escape should escape url 10`] = `"\\"image.png\\""`;
+
+exports[`escape should escape url 11`] = `"\\"image other.png\\""`;
+
+exports[`escape should escape url 12`] = `"\\"image other.png\\""`;
+
+exports[`escape should escape url 13`] = `"image.png"`;
+
+exports[`escape should escape url 14`] = `"image.png"`;
+
+exports[`escape should escape url 15`] = `"image.png"`;
+
+exports[`escape should escape url 16`] = `"\\"image other.png\\""`;
+
+exports[`escape should escape url 17`] = `"\\"image other.png\\""`;
+
+exports[`escape should escape url 18`] = `"\\"image other.png\\""`;
+
+exports[`escape should escape url 19`] = `"\\"image\\\\\\"other.png\\""`;
+
+exports[`escape should escape url 20`] = `"\\"image\\\\nother.png\\""`;
+
+exports[`escape should escape url 21`] = `"\\"image.png\\""`;
+
+exports[`escape should escape url 22`] = `"\\"image.png\\""`;
+
+exports[`escape should escape url 23`] = `"\\"image.png\\""`;
diff --git a/test/runtime/api.test.js b/test/runtime/api.test.js
new file mode 100644
index 00000000..b407af5b
--- /dev/null
+++ b/test/runtime/api.test.js
@@ -0,0 +1,114 @@
+const api = require('../../src/runtime/api');
+
+describe('api', () => {
+ beforeAll(() => {
+ global.btoa = function btoa(str) {
+ let buffer = null;
+
+ if (str instanceof Buffer) {
+ buffer = str;
+ } else {
+ buffer = Buffer.from(str.toString(), 'binary');
+ }
+
+ return buffer.toString('base64');
+ };
+ });
+
+ afterAll(() => {
+ global.btoa = null;
+ });
+
+ it('should toString a single module', () => {
+ const m = api();
+
+ m.push([1, 'body { a: 1; }', '']);
+
+ expect(m.toString()).toMatchSnapshot();
+ });
+
+ it('should toString multiple modules', () => {
+ const m = api();
+
+ m.push([2, 'body { b: 2; }', '']);
+ m.push([1, 'body { a: 1; }', '']);
+
+ expect(m.toString()).toMatchSnapshot();
+ });
+
+ it('should toString with media query', () => {
+ const m = api();
+
+ m.push([1, 'body { a: 1; }', 'screen']);
+
+ expect(m.toString()).toMatchSnapshot();
+ });
+
+ it('should import modules', () => {
+ const m = api();
+ const m1 = [1, 'body { a: 1; }', 'screen'];
+ const m2 = [2, 'body { b: 2; }', ''];
+ const m3 = [3, 'body { c: 3; }', ''];
+ const m4 = [4, 'body { d: 4; }', ''];
+
+ m.i([m2, m3], '');
+ m.i([m2], '');
+ m.i([m2, m4], 'print');
+ m.push(m1);
+
+ expect(m.toString()).toMatchSnapshot();
+ });
+
+ it('should import named modules', () => {
+ const m = api();
+ const m1 = ['./module1', 'body { a: 1; }', 'screen'];
+ const m2 = ['./module2', 'body { b: 2; }', ''];
+ const m3 = ['./module3', 'body { c: 3; }', ''];
+ const m4 = ['./module4', 'body { d: 4; }', ''];
+
+ m.i([m2, m3], '');
+ m.i([m2], '');
+ m.i([m2, m4], 'print');
+ m.push(m1);
+
+ expect(m.toString()).toMatchSnapshot();
+ });
+
+ it('should toString with source mapping', () => {
+ const m = api(true);
+
+ m.push([
+ 1,
+ 'body { a: 1; }',
+ '',
+ {
+ file: 'test.scss',
+ sources: ['./path/to/test.scss'],
+ mappings: 'AAAA;',
+ sourceRoot: 'webpack://',
+ },
+ ]);
+
+ expect(m.toString()).toMatchSnapshot();
+ });
+
+ it('should toString without source mapping if btoa not avalibale', () => {
+ global.btoa = null;
+
+ const m = api(true);
+
+ m.push([
+ 1,
+ 'body { a: 1; }',
+ '',
+ {
+ file: 'test.scss',
+ sources: ['./path/to/test.scss'],
+ mappings: 'AAAA;',
+ sourceRoot: 'webpack://',
+ },
+ ]);
+
+ expect(m.toString()).toMatchSnapshot();
+ });
+});
diff --git a/test/runtime/getUrl.test.js b/test/runtime/getUrl.test.js
new file mode 100644
index 00000000..6f3304dc
--- /dev/null
+++ b/test/runtime/getUrl.test.js
@@ -0,0 +1,54 @@
+const getUrl = require('../../src/runtime/getUrl');
+
+describe('escape', () => {
+ it('should escape url', () => {
+ expect(getUrl(true)).toMatchSnapshot();
+ expect(getUrl('image.png')).toMatchSnapshot();
+ expect(getUrl('"image.png"')).toMatchSnapshot();
+ expect(getUrl("'image.png'")).toMatchSnapshot();
+ expect(getUrl('image other.png')).toMatchSnapshot();
+ expect(getUrl('"image other.png"')).toMatchSnapshot();
+ expect(getUrl("'image other.png'")).toMatchSnapshot();
+ expect(getUrl('image"other.png')).toMatchSnapshot();
+ expect(getUrl('image\nother.png')).toMatchSnapshot();
+
+ expect(getUrl('image.png', true)).toMatchSnapshot();
+ expect(getUrl("'image other.png'", true)).toMatchSnapshot();
+ expect(getUrl('"image other.png"', true)).toMatchSnapshot();
+
+ expect(
+ getUrl({ default: 'image.png', __esModule: true })
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: "'image.png'", __esModule: true })
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: '"image.png"', __esModule: true })
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: 'image other.png', __esModule: true })
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: '"image other.png"', __esModule: true })
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: "'image other.png'", __esModule: true })
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: 'image"other.png', __esModule: true })
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: 'image\nother.png', __esModule: true })
+ ).toMatchSnapshot();
+
+ expect(
+ getUrl({ default: 'image.png', __esModule: true }, true)
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: "'image.png'", __esModule: true }, true)
+ ).toMatchSnapshot();
+ expect(
+ getUrl({ default: '"image.png"', __esModule: true }, true)
+ ).toMatchSnapshot();
+ });
+});
diff --git a/test/simpleTest.js b/test/simpleTest.js
deleted file mode 100644
index 8ff5a662..00000000
--- a/test/simpleTest.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*globals describe */
-
-var assert = require('assert');
-var test = require("./helpers").test;
-var testError = require("./helpers").testError;
-var testMinimize = require("./helpers").testMinimize;
-
-describe("simple", function() {
- test("empty", "", [
- [1, "", ""]
- ]);
- testMinimize("empty minimized", "", [
- [1, "", ""]
- ]);
- test("simple", ".class { a: b c d; }", [
- [1, ".class { a: b c d; }", ""]
- ]);
- test("simple2", ".class { a: b c d; }\n.two {}", [
- [1, ".class { a: b c d; }\n.two {}", ""]
- ]);
- testMinimize("minimized simple", ".class { a: b c d; }", [
- [1, ".class{a:b c d}", ""]
- ]);
- testError("error formatting", ".some {\n invalid css;\n}", function(err) {
- assert.equal(err.message, [
- 'Unknown word (2:2)',
- '',
- ' 1 | .some {',
- '> 2 | invalid css;',
- ' | ^',
- ' 3 | }',
- '',
- ].join('\n'));
- });
-});
diff --git a/test/sourceMap-option.test.js b/test/sourceMap-option.test.js
new file mode 100644
index 00000000..92de774a
--- /dev/null
+++ b/test/sourceMap-option.test.js
@@ -0,0 +1,243 @@
+import path from 'path';
+
+import postcssPresetEnv from 'postcss-preset-env';
+
+import { webpack, evaluated, normalizeSourceMap } from './helpers';
+
+describe('sourceMap option', () => {
+ describe('true', () => {
+ it('should generate source map', async () => {
+ const config = {
+ loader: {
+ options: {
+ sourceMap: true,
+ },
+ },
+ };
+ const testId = './source-map/basic.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(normalizeSourceMap(evaluated(module.source))).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should generate source map when source map is `null` from other loader', async () => {
+ const config = {
+ loader: {
+ options: {
+ sourceMap: true,
+ },
+ },
+ sourceMap: null,
+ };
+ const testId = './source-map/basic.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(normalizeSourceMap(evaluated(module.source))).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should generate source map when source map is `undefined` from other loader', async () => {
+ const config = {
+ loader: {
+ options: {
+ sourceMap: true,
+ },
+ },
+ // eslint-disable-next-line no-undefined
+ sourceMap: undefined,
+ };
+ const testId = './source-map/basic.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(normalizeSourceMap(evaluated(module.source))).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should generate source map when source map is valid and it is string from other loader', async () => {
+ const config = {
+ loader: {
+ options: {
+ sourceMap: true,
+ },
+ },
+ sourceMap: JSON.stringify({
+ version: 3,
+ sources: [
+ path.join(__dirname, 'fixtures/source-map/basic.postcss.css'),
+ ],
+ names: [],
+ mappings:
+ 'AAGA;EACE,gBAAgB;EAChB,mCAAsB;EACtB,yCAA4C;AAC9C;;AAEA;EACE,kBAAqB;EAArB,gBAAqB;EAArB,qBAAqB;AACvB;;AAEA;EACE;IACE,6BAAuB;IAAvB,uBAAuB;IACvB,iGAAsB;IACtB,eAA0B;IAA1B,0BAA0B;IAC1B,6BAAwC;IAAxC,wCAAwC;IACxC,qBAAyB;IACzB,kCAA+C;IAA/C,mCAA+C;IAA/C,6CAA+C;IAA/C,8CAA+C;EACjD;AACF;;AAEA;EACE,aAAe;EAAf,gBAAe;AACjB;;AAEA;EACE;AAKF;;AAHA;GACG,WAAoB;CACtB',
+ file: path.join(__dirname, 'fixtures/source-map/basic.postcss.css'),
+ sourcesContent: [
+ '@custom-media --viewport-medium (width <= 50rem);\n@custom-selector :--heading h1, h2, h3, h4, h5, h6;\n\n:root {\n --fontSize: 1rem;\n --mainColor: #12345678;\n --secondaryColor: lab(32.5 38.5 -47.6 / 90%);\n}\n\nhtml {\n overflow: hidden auto;\n}\n\n@media (--viewport-medium) {\n body {\n color: var(--mainColor);\n font-family: system-ui;\n font-size: var(--fontSize);\n line-height: calc(var(--fontSize) * 1.5);\n overflow-wrap: break-word;\n padding-inline: calc(var(--fontSize) / 2 + 1px);\n }\n}\n\n:--heading {\n margin-block: 0;\n}\n\na {\n color: rgb(0 0 100% / 90%);\n\n&:hover {\n color: rebeccapurple;\n }\n}\n',
+ ],
+ }),
+ };
+ const testId = './source-map/basic.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(normalizeSourceMap(evaluated(module.source))).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should generate source map when source map is valid from other loader (`sass-loader`)', async () => {
+ const config = {
+ loader: {
+ test: /\.s[ca]ss$/i,
+ options: {
+ sourceMap: true,
+ },
+ },
+ sassLoader: true,
+ sassLoaderOptions: {
+ // eslint-disable-next-line global-require
+ implementation: require('sass'),
+ sourceMap: true,
+ },
+ };
+ const testId = './source-map/basic.scss';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(normalizeSourceMap(evaluated(module.source))).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should generate source map when source map is valid from other loader (`postcss-loader`)', async () => {
+ const config = {
+ loader: {
+ options: {
+ sourceMap: true,
+ },
+ },
+ postcssLoader: true,
+ postcssLoaderOptions: {
+ sourceMap: true,
+ plugins: () => [postcssPresetEnv({ stage: 0 })],
+ },
+ };
+ const testId = './source-map/basic.postcss.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(normalizeSourceMap(evaluated(module.source))).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+ });
+
+ describe('false', () => {
+ it('should not generate source map', async () => {
+ const config = {
+ loader: {
+ options: {
+ sourceMap: false,
+ },
+ },
+ };
+ const testId = './source-map/basic.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(evaluated(module.source)).toMatchSnapshot('module (evaluated)');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should not generate source map when source map is `null` from other loader', async () => {
+ const config = {
+ loader: {
+ options: {
+ sourceMap: false,
+ },
+ },
+ sourceMap: null,
+ };
+ const testId = './source-map/basic.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(evaluated(module.source)).toMatchSnapshot('module (evaluated)');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ it('should not generate source map when source map is `undefined` from other loader', async () => {
+ const config = {
+ loader: {
+ options: {
+ sourceMap: false,
+ },
+ },
+ // eslint-disable-next-line no-undefined
+ sourceMap: undefined,
+ };
+ const testId = './source-map/basic.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(evaluated(module.source)).toMatchSnapshot('module (evaluated)');
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+ });
+
+ it('should not generate sourceMap when source map is valid from other loader (`sass-loader`)', async () => {
+ const config = {
+ loader: {
+ test: /\.s[ca]ss$/i,
+ options: {
+ sourceMap: false,
+ },
+ },
+ sassLoader: true,
+ sassLoaderOptions: {
+ // eslint-disable-next-line global-require
+ implementation: require('sass'),
+ sourceMap: true,
+ },
+ };
+ const testId = './source-map/basic.scss';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(normalizeSourceMap(evaluated(module.source))).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+});
diff --git a/test/sourceMapTest.js b/test/sourceMapTest.js
deleted file mode 100644
index 9c29729a..00000000
--- a/test/sourceMapTest.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/*globals describe */
-
-var testWithMap = require("./helpers").testWithMap;
-var testMap = require("./helpers").testMap;
-
-describe("source maps", function() {
- testWithMap("falsy: null map doesn't cause an error", ".class { a: b c d; }", null, [
- [1, ".class { a: b c d; }", ""]
- ]);
- testWithMap("falsy: undefined map doesn't cause an error", ".class { a: b c d; }", undefined, [
- [1, ".class { a: b c d; }", ""]
- ]);
- testMap("generate sourceMap (1 loader)", ".class { a: b c d; }", undefined, {
- loaders: [{request: "/path/css-loader"}],
- options: { context: "/" },
- resource: "/folder/test.css",
- request: "/path/css-loader!/folder/test.css",
- query: "?sourceMap"
- }, [
- [1, ".class { a: b c d; }", "", {
- file: 'test.css',
- mappings: 'AAAA,SAAS,SAAS,EAAE',
- names: [],
- sourceRoot: 'webpack://',
- sources: [ '/./folder/test.css' ],
- sourcesContent: [ '.class { a: b c d; }' ],
- version: 3
- }]
- ]);
- testMap("generate sourceMap (1 loader, relative)", ".class { a: b c d; }", undefined, {
- loaders: [{request: "/path/css-loader"}],
- options: { context: "/other-folder/sub" },
- resource: "/folder/test.css",
- request: "/path/css-loader!/folder/test.css",
- query: "?sourceMap"
- }, [
- [1, ".class { a: b c d; }", "", {
- file: 'test.css',
- mappings: 'AAAA,SAAS,SAAS,EAAE',
- names: [],
- sourceRoot: 'webpack://',
- sources: [ '/../../folder/test.css' ],
- sourcesContent: [ '.class { a: b c d; }' ],
- version: 3
- }]
- ]);
- testMap("generate sourceMap (2 loaders)", ".class { a: b c d; }", undefined, {
- loaders: [{request: "/path/css-loader"}, {request: "/path/sass-loader"}],
- options: { context: "/" },
- resource: "/folder/test.scss",
- request: "/path/css-loader!/path/sass-loader!/folder/test.scss",
- query: "?sourceMap"
- }, [
- [1, ".class { a: b c d; }", "", {
- file: 'test.scss',
- mappings: 'AAAA,SAAS,SAAS,EAAE',
- names: [],
- sourceRoot: 'webpack://',
- sources: [ '/./folder/test.scss' ],
- sourcesContent: [ '.class { a: b c d; }' ],
- version: 3
- }]
- ]);
-});
diff --git a/test/url-option.test.js b/test/url-option.test.js
new file mode 100644
index 00000000..a04faa1f
--- /dev/null
+++ b/test/url-option.test.js
@@ -0,0 +1,89 @@
+import { webpack, evaluated, normalizeErrors } from './helpers';
+
+describe('url option', () => {
+ it('true', async () => {
+ const testId = './url/url.css';
+ const stats = await webpack(testId);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
+ 'warnings'
+ );
+ expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
+ });
+
+ it('false', async () => {
+ const config = { loader: { options: { url: false } } };
+ const testId = './url/url.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(stats.compilation.warnings).toMatchSnapshot('warnings');
+ expect(stats.compilation.errors).toMatchSnapshot('errors');
+ });
+
+ [true, 'local', 'global', false].forEach((modulesValue) => {
+ it(`true and modules \`${modulesValue}\``, async () => {
+ const config = {
+ loader: { options: { modules: modulesValue } },
+ };
+ const testId = './url/url.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
+ 'warnings'
+ );
+ expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot(
+ 'errors'
+ );
+ });
+ });
+
+ it('Function', async () => {
+ const config = {
+ loader: {
+ options: {
+ url: (url, resourcePath) => {
+ expect(typeof resourcePath === 'string').toBe(true);
+
+ // Don't handle `img.png`
+ if (url.includes('img.png')) {
+ return false;
+ }
+
+ return true;
+ },
+ },
+ },
+ };
+ const testId = './url/url.css';
+ const stats = await webpack(testId, config);
+ const { modules } = stats.toJson();
+ const module = modules.find((m) => m.id === testId);
+
+ expect(module.source).toMatchSnapshot('module');
+ expect(evaluated(module.source, modules)).toMatchSnapshot(
+ 'module (evaluated)'
+ );
+ expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot(
+ 'warnings'
+ );
+ expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors');
+ });
+});
diff --git a/test/urlTest.js b/test/urlTest.js
deleted file mode 100644
index b54bf9a8..00000000
--- a/test/urlTest.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/*globals describe */
-
-var test = require("./helpers").test;
-
-describe("url", function() {
- test("background img", ".class { background: green url( \"img.png\" ) xyz }", [
- [1, ".class { background: green url({./img.png}) xyz }", ""]
- ]);
- test("background img 2", ".class { background: green url(~img/png) url(aaa) xyz }", [
- [1, ".class { background: green url({img/png}) url({./aaa}) xyz }", ""]
- ]);
- test("background img 3", ".class { background: green url( 'img.png' ) xyz }", [
- [1, ".class { background: green url({./img.png}) xyz }", ""]
- ]);
- test("background img absolute", ".class { background: green url(/img.png) xyz }", [
- [1, ".class { background: green url(/img.png) xyz }", ""]
- ]);
- test("background img absolute with root", ".class { background: green url(/img.png) xyz }", [
- [1, ".class { background: green url({./img.png}) xyz }", ""]
- ], "?root=.");
- test("background img external",
- ".class { background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz }", [
- [1, ".class { background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz }", ""]
- ]);
- test("background img external data",
- ".class { background-image: url(\"data:image/svg+xml;charset=utf-8, \") }", [
- [1, ".class { background-image: url(\"data:image/svg+xml;charset=utf-8, \") }", ""]
- ]);
- test("data url in filter",
- ".class { filter: url('data:image/svg+xml;charset=utf-8, #filter'); }", [
- [1, ".class { filter: url('data:image/svg+xml;charset=utf-8, #filter'); }", ""]
- ]);
- test("filter hash",
- ".highlight { filter: url(#highlight); }", [
- [1, ".highlight { filter: url(#highlight); }", ""]
- ]);
- test("filter hash quotation marks",
- ".highlight { filter: url('#line-marker'); }", [
- [1, ".highlight { filter: url('#line-marker'); }", ""]
- ]);
- test("font face", "@font-face { src: url(regular.woff) format('woff'), url(~truetype/regular.ttf) format('truetype') }", [
- [1, "@font-face { src: url({./regular.woff}) format('woff'), url({truetype/regular.ttf}) format('truetype') }", ""]
- ]);
- test("media query", "@media (min-width: 500px) { body { background: url(image.png); } }", [
- [1, "@media (min-width: 500px) { body { background: url({./image.png}); } }", ""]
- ]);
- test("url in string", "a { content: \"do not use url(path)\"; } b { content: 'do not \"use\" url(path)'; }", [
- [1, "a { content: \"do not use url(path)\"; } b { content: 'do not \"use\" url(path)'; }", ""]
- ]);
- test("keyframe background img", "@keyframes anim { background: green url('img.png') xyz }", [
- [1, "@keyframes anim { background: green url({./img.png}) xyz }", ""]
- ]);
- test("-webkit-image-set", ".a { background-image: -webkit-image-set(url('url1x.png') 1x, url('url2x.png') 2x) }", [
- [1, ".a { background-image: -webkit-image-set(url({./url1x.png}) 1x, url({./url2x.png}) 2x) }", ""]
- ]);
-
- test("background img with url", ".class { background: green url( \"img.png\" ) xyz }", [
- [1, ".class { background: green url( \"img.png\" ) xyz }", ""]
- ], "?-url");
- test("background img 2 with url", ".class { background: green url(~img/png) url(aaa) xyz }", [
- [1, ".class { background: green url(~img/png) url(aaa) xyz }", ""]
- ], "?-url");
- test("background img 3 with url", ".class { background: green url( 'img.png' ) xyz }", [
- [1, ".class { background: green url( 'img.png' ) xyz }", ""]
- ], "?-url");
- test("background img absolute with url", ".class { background: green url(/img.png) xyz }", [
- [1, ".class { background: green url(/img.png) xyz }", ""]
- ], "?-url");
- test("background img external with url",
- ".class { background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz }", [
- [1, ".class { background: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) xyz }", ""]
- ], "?-url");
- test("background img external data with url",
- ".class { background-image: url(\"data:image/svg+xml;charset=utf-8, \") }", [
- [1, ".class { background-image: url(\"data:image/svg+xml;charset=utf-8, \") }", ""]
- ], "?-url");
- test("data url in filter with url",
- ".class { filter: url('data:image/svg+xml;charset=utf-8, #filter'); }", [
- [1, ".class { filter: url('data:image/svg+xml;charset=utf-8, #filter'); }", ""]
- ], "?-url");
- test("filter hash with url",
- ".highlight { filter: url(#highlight); }", [
- [1, ".highlight { filter: url(#highlight); }", ""]
- ], "?-url");
- test("filter hash quotation marks with url",
- ".highlight { filter: url('#line-marker'); }", [
- [1, ".highlight { filter: url('#line-marker'); }", ""]
- ], "?-url");
- test("font face with url", "@font-face { src: url(regular.woff) format('woff'), url(~truetype/regular.ttf) format('truetype') }", [
- [1, "@font-face { src: url(regular.woff) format('woff'), url(~truetype/regular.ttf) format('truetype') }", ""]
- ], "?-url");
- test("media query with url", "@media (min-width: 500px) { body { background: url(image.png); } }", [
- [1, "@media (min-width: 500px) { body { background: url(image.png); } }", ""]
- ], "?-url");
- test("url in string with url", "a { content: \"do not use url(path)\"; } b { content: 'do not \"use\" url(path)'; }", [
- [1, "a { content: \"do not use url(path)\"; } b { content: 'do not \"use\" url(path)'; }", ""]
- ], "?-url");
- test("keyframe background img with url", "@keyframes anim { background: green url('img.png') xyz }", [
- [1, "@keyframes anim { background: green url('img.png') xyz }", ""]
- ], "?-url");
-});
diff --git a/test/validate-options.test.js b/test/validate-options.test.js
new file mode 100644
index 00000000..1c0dd7a2
--- /dev/null
+++ b/test/validate-options.test.js
@@ -0,0 +1,115 @@
+import loader from '../src/cjs';
+
+it('validate options', () => {
+ const validate = (options) =>
+ loader.call(
+ Object.assign(
+ {},
+ {
+ query: options,
+ loaders: [],
+ remainingRequest: 'file.css',
+ currentRequest: 'file.css',
+ async: () => (error) => {
+ if (error) {
+ throw error;
+ }
+ },
+ }
+ ),
+ 'a { color: red; }'
+ );
+
+ expect(() => validate({ url: true })).not.toThrow();
+ expect(() => validate({ url: false })).not.toThrow();
+ expect(() => validate({ url: () => {} })).not.toThrow();
+ expect(() => validate({ url: 'true' })).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ import: true })).not.toThrow();
+ expect(() => validate({ import: false })).not.toThrow();
+ expect(() => validate({ import: () => {} })).not.toThrow();
+ expect(() => validate({ import: 'true' })).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ modules: true })).not.toThrow();
+ expect(() => validate({ modules: false })).not.toThrow();
+ expect(() => validate({ modules: 'global' })).not.toThrow();
+ expect(() => validate({ modules: 'local' })).not.toThrow();
+ expect(() => validate({ modules: { mode: 'local' } })).not.toThrow();
+ expect(() => validate({ modules: { mode: 'global' } })).not.toThrow();
+ expect(() => validate({ modules: 'true' })).toThrowErrorMatchingSnapshot();
+ expect(() => validate({ modules: 'globals' })).toThrowErrorMatchingSnapshot();
+ expect(() => validate({ modules: 'locals' })).toThrowErrorMatchingSnapshot();
+ expect(() =>
+ validate({ modules: { mode: true } })
+ ).toThrowErrorMatchingSnapshot();
+ expect(() =>
+ validate({ modules: { mode: 'true' } })
+ ).toThrowErrorMatchingSnapshot();
+ expect(() =>
+ validate({ modules: { mode: 'locals' } })
+ ).toThrowErrorMatchingSnapshot();
+ expect(() =>
+ validate({ modules: { mode: 'globals' } })
+ ).toThrowErrorMatchingSnapshot();
+
+ expect(() =>
+ validate({
+ modules: { localIdentName: '[path][name]__[local]--[hash:base64:5]' },
+ })
+ ).not.toThrow();
+ expect(() =>
+ validate({ modules: { localIdentName: true } })
+ ).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ modules: { context: 'context' } })).not.toThrow();
+ expect(() =>
+ validate({ modules: { context: true } })
+ ).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ modules: { hashPrefix: 'hash' } })).not.toThrow();
+ expect(() =>
+ validate({ modules: { hashPrefix: true } })
+ ).toThrowErrorMatchingSnapshot();
+
+ expect(() =>
+ validate({ modules: { getLocalIdent: () => {} } })
+ ).not.toThrow();
+ expect(() => validate({ modules: { getLocalIdent: false } })).not.toThrow();
+ expect(() =>
+ validate({ modules: { getLocalIdent: [] } })
+ ).toThrowErrorMatchingSnapshot();
+
+ expect(() =>
+ validate({ modules: { localIdentRegExp: 'page-(.*)\\.js' } })
+ ).not.toThrow();
+ expect(() =>
+ validate({ modules: { localIdentRegExp: /page-(.*)\.js/ } })
+ ).not.toThrow();
+ expect(() =>
+ validate({ modules: { localIdentRegExp: true } })
+ ).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ sourceMap: true })).not.toThrow();
+ expect(() => validate({ sourceMap: false })).not.toThrow();
+ expect(() => validate({ sourceMap: 'true' })).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ localsConvention: 'camelCase' })).not.toThrow();
+ expect(() => validate({ localsConvention: 'camelCaseOnly' })).not.toThrow();
+ expect(() => validate({ localsConvention: 'dashes' })).not.toThrow();
+ expect(() => validate({ localsConvention: 'dashesOnly' })).not.toThrow();
+ expect(() =>
+ validate({ localsConvention: 'unknown' })
+ ).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ importLoaders: false })).not.toThrow();
+ expect(() => validate({ importLoaders: 0 })).not.toThrow();
+ expect(() => validate({ importLoaders: 1 })).not.toThrow();
+ expect(() => validate({ importLoaders: 2 })).not.toThrow();
+ expect(() => validate({ importLoaders: '1' })).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ onlyLocals: true })).not.toThrow();
+ expect(() => validate({ onlyLocals: false })).not.toThrow();
+ expect(() => validate({ onlyLocals: 'true' })).toThrowErrorMatchingSnapshot();
+
+ expect(() => validate({ unknown: 'unknown' })).toThrowErrorMatchingSnapshot();
+});
diff --git a/test/valuesTest.js b/test/valuesTest.js
deleted file mode 100644
index 57858407..00000000
--- a/test/valuesTest.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/*globals describe */
-
-var testLocals = require("./helpers").testLocals;
-var test = require("./helpers").test;
-
-function testLocal(name, input, result, localsResult, query, modules) {
- result.locals = localsResult;
- test(name, input, result, query, modules);
-}
-
-describe("values", function() {
- testLocals("should export values",
- "@value def: red; @value ghi: 1px solid black",
- {
- def: "red",
- ghi: "1px solid black"
- },
- ""
- );
- testLocals("should export values and locals",
- "@value def: red; .ghi { color: def; }",
- {
- def: "red",
- ghi: "_ghi"
- },
- "?modules&localIdentName=_[local]"
- );
- testLocal("should import values from other module",
- "@value def from './file'; .ghi { color: def; }", [
- [ 2, "", "" ],
- [ 1, ".ghi { color: red; }", "" ]
- ], {
- def: "red"
- }, "", {
- "./file": (function() {
- var a = [[2, "", ""]];
- a.locals = {
- def: "red"
- };
- return a;
- })()
- }
- );
- testLocal("should import values with renaming",
- "@value def as aaa from './file1'; @value def as bbb from './file2'; .ghi { background: aaa, bbb, def; }", [
- [ 2, "", "" ],
- [ 3, "", "" ],
- [ 1, ".ghi { background: red, green, def; }", "" ]
- ], {
- aaa: "red",
- bbb: "green"
- }, "", {
- "./file1": (function() {
- var a = [[2, "", ""]];
- a.locals = {
- def: "red"
- };
- return a;
- })(),
- "./file2": (function() {
- var a = [[3, "", ""]];
- a.locals = {
- def: "green"
- };
- return a;
- })()
- }
- );
-});