diff --git a/.editorconfig b/.editorconfig index 9f89f364..5f795282 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,5 +9,4 @@ insert_final_newline = true trim_trailing_whitespace = true [*.md] -insert_final_newline = true trim_trailing_whitespace = false diff --git a/CHANGELOG.md b/CHANGELOG.md index 31f4e3e4..4c3b7b73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ 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.4.0](https://github.com/webpack-contrib/css-loader/compare/v3.3.1...v3.4.0) (2019-12-17) + + +### Features + +* `esModule` option ([#1026](https://github.com/webpack-contrib/css-loader/issues/1026)) ([d358cdb](https://github.com/webpack-contrib/css-loader/commit/d358cdbe2c026afafa0279003cb6c8a3eff4c419)) + + +### Bug Fixes + +* logic for order and media queries for imports ([#1018](https://github.com/webpack-contrib/css-loader/issues/1018)) ([65450d9](https://github.com/webpack-contrib/css-loader/commit/65450d9c04790ccc9fb06eac81ea6d8f3cdbfaac)) + +### [3.3.2](https://github.com/webpack-contrib/css-loader/compare/v3.3.1...v3.3.2) (2019-12-12) + + +### Bug Fixes + +* logic for order and media queries for imports ([1fb5134](https://github.com/webpack-contrib/css-loader/commit/1fb51340a7719b6f5b517cb71ea85ec5d45c1199)) + ### [3.3.1](https://github.com/webpack-contrib/css-loader/compare/v3.3.0...v3.3.1) (2019-12-12) diff --git a/README.md b/README.md index 9179e787..8020201e 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ module.exports = { | **[`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 | +| **[`esModule`](#esmodule)** | `{Boolean}` | `false` | Use ES modules syntax | ### `url` @@ -857,6 +858,34 @@ module.exports = { }; ``` +### `esModule` + +Type: `Boolean` +Default: `false` + +By default, `css-loader` generates JS modules that use the CommonJS modules syntax. +There are some cases in which using ES modules is beneficial, like in the case of [module concatenation](https://webpack.js.org/plugins/module-concatenation-plugin/) and [tree shaking](https://webpack.js.org/guides/tree-shaking/). + +You can enable a ES module syntax using: + +**webpack.config.js** + +```js +module.exports = { + module: { + rules: [ + { + test: /\.css$/i, + loader: 'css-loader', + options: { + esModule: true, + }, + }, + ], + }, +}; +``` + ## Examples ### Assets diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 500925c2..6616426d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -2,10 +2,13 @@ trigger: - master - next +variables: + npm_config_cache: $(Pipeline.Workspace)/.npm + jobs: - job: Lint pool: - vmImage: ubuntu-16.04 + vmImage: ubuntu-latest steps: - task: NodeTool@0 inputs: @@ -20,10 +23,12 @@ jobs: node -v npm -v displayName: 'Print versions' - - task: Npm@1 + - task: CacheBeta@1 inputs: - command: custom - customCommand: ci + key: npm | $(Agent.OS) | package-lock.json + path: $(npm_config_cache) + displayName: 'Cache npm' + - script: npm ci displayName: 'Install dependencies' - script: npm run lint displayName: 'Run lint' @@ -34,10 +39,13 @@ jobs: - job: Linux pool: - vmImage: ubuntu-16.04 + vmImage: ubuntu-latest strategy: - maxParallel: 4 + maxParallel: 5 matrix: + node-13: + node_version: ^13.0.0 + webpack_version: latest node-12: node_version: ^12.0.0 webpack_version: latest @@ -50,7 +58,6 @@ jobs: node-10-canary: node_version: ^10.13.0 webpack_version: next - continue_on_error: true steps: - task: NodeTool@0 inputs: @@ -65,10 +72,12 @@ jobs: node -v npm -v displayName: 'Print versions' - - task: Npm@1 + - task: CacheBeta@1 inputs: - command: custom - customCommand: ci + key: npm | $(Agent.OS) | package-lock.json + path: $(npm_config_cache) + displayName: 'Cache npm' + - script: npm ci displayName: 'Install dependencies' - script: npm i webpack@$(webpack_version) displayName: 'Install "webpack@$(webpack_version)"' @@ -86,10 +95,13 @@ jobs: - job: macOS pool: - vmImage: macOS-10.14 + vmImage: macOS-latest strategy: - maxParallel: 4 + maxParallel: 5 matrix: + node-13: + node_version: ^13.0.0 + webpack_version: latest node-12: node_version: ^12.0.0 webpack_version: latest @@ -102,7 +114,6 @@ jobs: node-10-canary: node_version: ^10.13.0 webpack_version: next - continue_on_error: true steps: - task: NodeTool@0 inputs: @@ -117,10 +128,12 @@ jobs: node -v npm -v displayName: 'Print versions' - - task: Npm@1 + - task: CacheBeta@1 inputs: - command: custom - customCommand: ci + key: npm | $(Agent.OS) | package-lock.json + path: $(npm_config_cache) + displayName: 'Cache npm' + - script: npm ci displayName: 'Install dependencies' - script: npm i webpack@$(webpack_version) displayName: 'Install "webpack@$(webpack_version)"' @@ -138,10 +151,13 @@ jobs: - job: Windows pool: - vmImage: windows-2019 + vmImage: windows-latest strategy: - maxParallel: 4 + maxParallel: 5 matrix: + node-13: + node_version: ^13.0.0 + webpack_version: latest node-12: node_version: ^12.0.0 webpack_version: latest @@ -154,7 +170,6 @@ jobs: node-10-canary: node_version: ^10.13.0 webpack_version: next - continue_on_error: true steps: - script: 'git config --global core.autocrlf input' displayName: 'Config git core.autocrlf' @@ -172,10 +187,12 @@ jobs: node -v npm -v displayName: 'Print versions' - - task: Npm@1 + - task: CacheBeta@1 inputs: - command: custom - customCommand: ci + key: npm | $(Agent.OS) | package-lock.json + path: $(npm_config_cache) + displayName: 'Cache npm' + - script: npm ci displayName: 'Install dependencies' - script: npm i webpack@$(webpack_version) displayName: 'Install "webpack@$(webpack_version)"' diff --git a/lint-staged.config.js b/lint-staged.config.js index 77a86a71..618a5ec4 100644 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -1,4 +1,4 @@ module.exports = { '*.js': ['prettier --write', 'eslint --fix', 'git add'], - '*.{json,md,yml,css}': ['prettier --write', 'git add'], + '*.{json,md,yml,css,ts}': ['prettier --write', 'git add'], }; diff --git a/package-lock.json b/package-lock.json index eeea1746..ffd83df0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "css-loader", - "version": "3.3.1", + "version": "3.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1476,9 +1476,9 @@ "dev": true }, "@types/node": { - "version": "12.12.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.17.tgz", - "integrity": "sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA==", + "version": "12.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.18.tgz", + "integrity": "sha512-DBkZuIMFuAfjJHiunyRc+aNvmXYNwV1IPMgGKGlwCp6zh6MKrVtmvjSWK/axWcD25KJffkXgkfvFra8ndenXAw==", "dev": true }, "@types/normalize-package-data": { @@ -1691,9 +1691,9 @@ } }, "@webpack-contrib/defaults": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@webpack-contrib/defaults/-/defaults-5.1.1.tgz", - "integrity": "sha512-UvWJSpCBVzDpCASLhBuiSw/S5i57Z3FqO5X2cRqkvDR6TlhaPp0cXLr7R83xyRs2+eZ5pyl9UnP8HtSJx1s7Fw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@webpack-contrib/defaults/-/defaults-6.3.0.tgz", + "integrity": "sha512-B5oYSmvwWbDILf2mgmJFkQe/BdWoiRm3+KbUkVAl/UdowvWKDDFd5w77WpGES3BTY+bgd4+GYf4cBXNQdbEv4Q==", "dev": true, "requires": { "chalk": "^2.3.0", @@ -1786,6 +1786,12 @@ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", "dev": true }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, "aggregate-error": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", @@ -1941,13 +1947,13 @@ "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=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.0.tgz", + "integrity": "sha512-ONOEQoKrvXPKk7Su92Co0YMqYO32FfqJTzkKU9u2UpIXyYZIzLSvpdg4AwvSw4mSUW0czu6inK+zby6Oj6gDjQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.0" } }, "array-union": { @@ -1963,14 +1969,13 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.2.tgz", - "integrity": "sha512-VXjh7lAL4KXKF2hY4FnEW9eRW6IhdvFW1sN/JwLbmECbCgACCnBHNyP3lFiYuttr0jxRN9Bsc5+G27dMseSWqQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.15.0", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.0-next.1" } }, "arrify": { @@ -2370,6 +2375,16 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -2684,9 +2699,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001015", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz", - "integrity": "sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ==", + "version": "1.0.30001016", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz", + "integrity": "sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==", "dev": true }, "caporal": { @@ -3171,11 +3186,12 @@ } }, "conventional-changelog-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.1.1.tgz", - "integrity": "sha512-fBre5P6U9n914Da6Cj82vIfRU2DhTLGr1eDPXWA7AamxTpd4cd0jgdS7Aieas5Vn5WXOJNFRDNl6PrYLEonImg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.1.4.tgz", + "integrity": "sha512-LO58ZbEpp1Ul+y/vOI8rJRsWkovsYkCFbOCVgi6UnVfU8WC0F8K8VQQwaBZWWUpb6JvEiN4GBR5baRP2txZ+Vg==", "dev": true, "requires": { + "add-stream": "^1.0.0", "conventional-changelog-writer": "^4.0.11", "conventional-commits-parser": "^3.0.8", "dateformat": "^3.0.0", @@ -3583,9 +3599,9 @@ "dev": true }, "core-js-compat": { - "version": "3.4.8", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.8.tgz", - "integrity": "sha512-l3WTmnXHV2Sfu5VuD7EHE2w7y+K68+kULKt5RJg8ZJk3YhHF1qLD4O8v8AmNq+8vbOwnPFFDvds25/AoEvMqlQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.5.0.tgz", + "integrity": "sha512-E7iJB72svRjJTnm9HDvujzNVMCm3ZcDYEedkJ/sDTNsy/0yooCd9Cg7GSzE7b4e0LfIkjijdB1tqg0pGwxWeWg==", "dev": true, "requires": { "browserslist": "^4.8.2", @@ -4309,6 +4325,18 @@ "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "errno": { @@ -4330,9 +4358,9 @@ } }, "es-abstract": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.3.tgz", - "integrity": "sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw==", + "version": "1.17.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", + "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -4343,6 +4371,7 @@ "is-regex": "^1.0.4", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", + "object.assign": "^4.1.0", "string.prototype.trimleft": "^2.1.0", "string.prototype.trimright": "^2.1.0" } @@ -4518,9 +4547,9 @@ "dev": true }, "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", + "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -4532,7 +4561,7 @@ "lodash": "^4.17.15", "mute-stream": "0.0.8", "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "rxjs": "^6.5.3", "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" @@ -5061,6 +5090,12 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, + "fast-extend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fast-extend/-/fast-extend-1.0.2.tgz", + "integrity": "sha512-XXA9RmlPatkFKUzqVZAFth18R4Wo+Xug/S+C7YlYA3xrXwfPlW3dqNwOb4hvQo7wZJ2cNDYhrYuPzVOfHy5/uQ==", + "dev": true + }, "fast-glob": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz", @@ -5129,9 +5164,9 @@ } }, "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=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -5192,6 +5227,13 @@ "schema-utils": "^2.5.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -5401,6 +5443,12 @@ "universalify": "^0.1.0" } }, + "fs-monkey": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-0.3.3.tgz", + "integrity": "sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw==", + "dev": true + }, "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -5426,14 +5474,15 @@ "dev": true }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "node-pre-gyp": "*" }, "dependencies": { "abbrev": { @@ -5481,7 +5530,7 @@ } }, "chownr": { - "version": "1.1.1", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true @@ -5511,7 +5560,7 @@ "optional": true }, "debug": { - "version": "4.1.1", + "version": "3.2.6", "bundled": true, "dev": true, "optional": true, @@ -5538,12 +5587,12 @@ "optional": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -5569,7 +5618,7 @@ } }, "glob": { - "version": "7.1.3", + "version": "7.1.6", "bundled": true, "dev": true, "optional": true, @@ -5598,7 +5647,7 @@ } }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true, @@ -5617,7 +5666,7 @@ } }, "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true, "dev": true, "optional": true @@ -5659,7 +5708,7 @@ "optional": true }, "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "dev": true, "optional": true, @@ -5669,12 +5718,12 @@ } }, "minizlib": { - "version": "1.2.1", + "version": "1.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.9.0" } }, "mkdirp": { @@ -5687,24 +5736,24 @@ } }, "ms": { - "version": "2.1.1", + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, "needle": { - "version": "2.3.0", + "version": "2.4.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^4.1.0", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.12.0", + "version": "0.14.0", "bundled": true, "dev": true, "optional": true, @@ -5718,7 +5767,7 @@ "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^4" + "tar": "^4.4.2" } }, "nopt": { @@ -5732,13 +5781,22 @@ } }, "npm-bundled": { - "version": "1.0.6", + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.4.1", + "version": "1.4.7", "bundled": true, "dev": true, "optional": true, @@ -5809,7 +5867,7 @@ "optional": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "dev": true, "optional": true @@ -5850,7 +5908,7 @@ } }, "rimraf": { - "version": "2.6.3", + "version": "2.7.1", "bundled": true, "dev": true, "optional": true, @@ -5877,7 +5935,7 @@ "optional": true }, "semver": { - "version": "5.7.0", + "version": "5.7.1", "bundled": true, "dev": true, "optional": true @@ -5930,18 +5988,18 @@ "optional": true }, "tar": { - "version": "4.4.8", + "version": "4.4.13", "bundled": true, "dev": true, "optional": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "yallist": "^3.0.3" } }, "util-deprecate": { @@ -5966,7 +6024,7 @@ "optional": true }, "yallist": { - "version": "3.0.3", + "version": "3.1.1", "bundled": true, "dev": true, "optional": true @@ -7210,12 +7268,12 @@ "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=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, "is-regexp": { @@ -7556,9 +7614,9 @@ } }, "jest-junit": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-9.0.0.tgz", - "integrity": "sha512-jnABGjL5pd2lhE1w3RIslZSufFbWQZGx8O3eluDES7qKxQuonXMtsPIi+4AKl4rtjb4DvMAjwLi4eHukc2FP/Q==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-10.0.0.tgz", + "integrity": "sha512-dbOVRyxHprdSpwSAR9/YshLwmnwf+RSl5hf0kCGlhAcEeZY9aRqo4oNmaT0tLC16Zy9D0zekDjWkjHGjXlglaQ==", "dev": true, "requires": { "jest-validate": "^24.9.0", @@ -8663,10 +8721,20 @@ "safe-buffer": "^5.1.2" } }, + "memfs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.0.1.tgz", + "integrity": "sha512-v8MPoino1vfmwl2LDbFAg5tgPd7EPvKLvcSkx/CDJGB3JCGyHZSasRtC63wmM+iHFXh4cooYCu+cWCd1dqh2+A==", + "dev": true, + "requires": { + "fast-extend": "1.0.2", + "fs-monkey": "0.3.3" + } + }, "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "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", @@ -9256,13 +9324,13 @@ } }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.pick": { @@ -9275,13 +9343,13 @@ } }, "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" } @@ -9659,9 +9727,9 @@ "dev": true }, "postcss": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.24.tgz", - "integrity": "sha512-Xl0XvdNWg+CblAXzNvbSOUvgJXwSjmbAKORqyw9V2AlHrm1js2gFw9y3jibBAhpKZi8b5JzJCVh/FyzPsTtgTA==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz", + "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -10547,9 +10615,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.1.tgz", + "integrity": "sha512-7LutE94sz/NKSYegK+/4E77+8DipxF+Qn2Tmu362AcmsF2NYq/wx3+ObvU90TKEhjf7hQoFXo23ajjrXP7eUgg==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -11572,9 +11640,9 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, "string-argv": { @@ -11638,14 +11706,13 @@ } }, "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=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "string.prototype.trimleft": { @@ -11830,9 +11897,9 @@ "dev": true }, "terser": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.2.tgz", - "integrity": "sha512-Uufrsvhj9O1ikwgITGsZ5EZS6qPokUOkCegS7fYOdGTv+OA90vndUbU6PEjr5ePqHfNUbGyMO7xyIZv2MhsALQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", + "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -12437,9 +12504,9 @@ "dev": true }, "webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "version": "4.41.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.3.tgz", + "integrity": "sha512-EcNzP9jGoxpQAXq1VOoTet0ik7/VVU1MovIfcUSAjLowc7GhcQku/sOXALvq5nPpSei2HF6VRhibeJSC3i/Law==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -12462,7 +12529,7 @@ "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", + "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.6.0", "webpack-sources": "^1.4.1" }, @@ -12483,16 +12550,6 @@ "estraverse": "^4.1.1" } }, - "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" - } - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", diff --git a/package.json b/package.json index 12ec1230..b92fbf1c 100644 --- a/package.json +++ b/package.json @@ -1,44 +1,46 @@ { "name": "css-loader", - "version": "3.3.1", + "version": "3.4.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", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, "main": "dist/cjs.js", "engines": { "node": ">= 8.9.0" }, "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", + "clean": "del-cli dist", "validate:runtime": "es-check es5 \"dist/runtime/**/*.js\"", + "prebuild": "npm run clean", + "build": "cross-env NODE_ENV=production babel src -d dist --copy-files", "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", + "lint:prettier": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different", + "lint:js": "eslint --cache .", + "lint": "npm-run-all -l -p \"lint:**\"", "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", + "test:watch": "npm run test:only -- --watch", + "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage", "pretest": "npm run lint", - "test": "cross-env NODE_ENV=test npm run test:coverage", + "test": "npm run test:coverage", + "prepare": "npm run build", + "release": "standard-version", "defaults": "webpack-defaults" }, "files": [ - "dist/", - "lib/", - "index.js" + "dist" ], "peerDependencies": { - "webpack": "^4.0.0" + "webpack": "^4.0.0 || ^5.0.0" }, "dependencies": { "camelcase": "^5.3.1", @@ -60,7 +62,7 @@ "@babel/preset-env": "^7.7.4", "@commitlint/cli": "^8.2.0", "@commitlint/config-conventional": "^8.2.0", - "@webpack-contrib/defaults": "^5.0.2", + "@webpack-contrib/defaults": "^6.3.0", "@webpack-contrib/eslint-config-webpack": "^3.0.0", "babel-jest": "^24.9.0", "commitlint-azure-pipelines-cli": "^1.0.2", @@ -74,9 +76,9 @@ "file-loader": "^5.0.2", "husky": "^3.1.0", "jest": "^24.9.0", - "jest-junit": "^9.0.0", + "jest-junit": "^10.0.0", "lint-staged": "^9.5.0", - "memory-fs": "^0.5.0", + "memfs": "^3.0.1", "npm-run-all": "^4.1.5", "postcss-loader": "^3.0.0", "postcss-preset-env": "^6.7.0", @@ -86,7 +88,7 @@ "standard-version": "^7.0.1", "strip-ansi": "^6.0.0", "url-loader": "^3.0.0", - "webpack": "^4.41.2" + "webpack": "^4.41.3" }, "keywords": [ "webpack", diff --git a/src/index.js b/src/index.js index aeb94239..b4d7c311 100644 --- a/src/index.js +++ b/src/index.js @@ -107,12 +107,16 @@ export default function loader(content, map, meta) { } const { importLoaders, localsConvention } = options; + const esModule = + typeof options.esModule !== 'undefined' ? options.esModule : false; + const importCode = getImportCode( this, imports, exportType, sourceMap, - importLoaders + importLoaders, + esModule ); const moduleCode = getModuleCode( this, @@ -126,7 +130,8 @@ export default function loader(content, map, meta) { exports, exportType, replacers, - localsConvention + localsConvention, + esModule ); return callback(null, [importCode, moduleCode, exportCode].join('')); diff --git a/src/options.json b/src/options.json index efa13be8..e3125073 100644 --- a/src/options.json +++ b/src/options.json @@ -94,6 +94,10 @@ "onlyLocals": { "description": "Export only locals (https://github.com/webpack-contrib/css-loader#onlylocals).", "type": "boolean" + }, + "esModule": { + "description": "Use the ES modules syntax (https://github.com/webpack-contrib/css-loader#esmodule).", + "type": "boolean" } }, "type": "object" diff --git a/src/runtime/api.js b/src/runtime/api.js index 117f5263..b2acad8c 100644 --- a/src/runtime/api.js +++ b/src/runtime/api.js @@ -13,7 +13,7 @@ module.exports = function(useSourceMap) { const content = cssWithMappingToString(item, useSourceMap); if (item[2]) { - return `@media ${item[2]}{${content}}`; + return `@media ${item[2]} {${content}}`; } return content; @@ -28,33 +28,18 @@ module.exports = function(useSourceMap) { 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]; + const item = [].concat(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]) { + if (mediaQuery) { + if (!item[2]) { item[2] = mediaQuery; - } else if (mediaQuery) { - item[2] = `(${item[2]}) and (${mediaQuery})`; + } else { + item[2] = `${mediaQuery} and ${item[2]}`; } - - list.push(item); } + + list.push(item); } }; diff --git a/src/utils.js b/src/utils.js index cfbf69f5..c5b00d10 100644 --- a/src/utils.js +++ b/src/utils.js @@ -162,7 +162,7 @@ function normalizeSourceMap(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/, '')); + newMap = JSON.parse(newMap); } // Source maps should use forward slash because it is URLs (https://github.com/mozilla/source-map/issues/91) @@ -205,7 +205,8 @@ function getImportCode( imports, exportType, sourceMap, - importLoaders + importLoaders, + esModule ) { const importItems = []; const codeItems = []; @@ -216,13 +217,20 @@ function getImportCode( if (exportType === 'full') { importItems.push( - `var ___CSS_LOADER_API_IMPORT___ = require(${stringifyRequest( - loaderContext, - require.resolve('./runtime/api') - )});` + esModule + ? `import ___CSS_LOADER_API_IMPORT___ from ${stringifyRequest( + loaderContext, + require.resolve('./runtime/api') + )};` + : `var ___CSS_LOADER_API_IMPORT___ = require(${stringifyRequest( + loaderContext, + require.resolve('./runtime/api') + )});` ); codeItems.push( - `exports = module.exports = ___CSS_LOADER_API_IMPORT___(${sourceMap});` + esModule + ? `var exports = ___CSS_LOADER_API_IMPORT___(${sourceMap});` + : `exports = ___CSS_LOADER_API_IMPORT___(${sourceMap});` ); } @@ -253,10 +261,15 @@ function getImportCode( importName = `___CSS_LOADER_AT_RULE_IMPORT_${atRuleImportNames.size}___`; importItems.push( - `var ${importName} = require(${stringifyRequest( - loaderContext, - importPrefix + url - )});` + esModule + ? `import ${importName} from ${stringifyRequest( + loaderContext, + importPrefix + url + )};` + : `var ${importName} = require(${stringifyRequest( + loaderContext, + importPrefix + url + )});` ); atRuleImportNames.set(url, importName); @@ -269,10 +282,15 @@ function getImportCode( { if (urlImportNames.size === 0) { importItems.push( - `var ___CSS_LOADER_GET_URL_IMPORT___ = require(${stringifyRequest( - loaderContext, - require.resolve('./runtime/getUrl.js') - )});` + esModule + ? `import ___CSS_LOADER_GET_URL_IMPORT___ from ${stringifyRequest( + loaderContext, + require.resolve('./runtime/getUrl.js') + )};` + : `var ___CSS_LOADER_GET_URL_IMPORT___ = require(${stringifyRequest( + loaderContext, + require.resolve('./runtime/getUrl.js') + )});` ); } @@ -283,10 +301,15 @@ function getImportCode( if (!importName) { importName = `___CSS_LOADER_URL_IMPORT_${urlImportNames.size}___`; importItems.push( - `var ${importName} = require(${stringifyRequest( - loaderContext, - url - )});` + esModule + ? `import ${importName} from ${stringifyRequest( + loaderContext, + url + )};` + : `var ${importName} = require(${stringifyRequest( + loaderContext, + url + )});` ); urlImportNames.set(url, importName); @@ -313,10 +336,15 @@ function getImportCode( } importItems.push( - `var ${importName} = require(${stringifyRequest( - loaderContext, - importPrefix + url - )});` + esModule + ? `import ${importName} from ${stringifyRequest( + loaderContext, + importPrefix + url + )};` + : `var ${importName} = require(${stringifyRequest( + loaderContext, + importPrefix + url + )});` ); if (exportType === 'full') { @@ -382,73 +410,91 @@ function getExportCode( exports, exportType, replacers, - localsConvention + localsConvention, + esModule ) { - if (exports.length === 0) { - return ''; - } + const exportItems = []; + let exportLocalsCode; - const items = []; - const addExportedItem = (name, value) => { - items.push(`\t${JSON.stringify(name)}: ${JSON.stringify(value)}`); - }; + if (exports.length > 0) { + const exportLocals = []; + const addExportedLocal = (name, value) => { + exportLocals.push(`\t${JSON.stringify(name)}: ${JSON.stringify(value)}`); + }; - exports.forEach((item) => { - const { name, value } = item; + exports.forEach((item) => { + const { name, value } = item; - switch (localsConvention) { - case 'camelCase': { - addExportedItem(name, value); + switch (localsConvention) { + case 'camelCase': { + addExportedLocal(name, value); - const modifiedName = camelCase(name); + const modifiedName = camelCase(name); - if (modifiedName !== name) { - addExportedItem(modifiedName, value); + if (modifiedName !== name) { + addExportedLocal(modifiedName, value); + } + break; } - break; - } - case 'camelCaseOnly': { - addExportedItem(camelCase(name), value); - break; - } - case 'dashes': { - addExportedItem(name, value); + case 'camelCaseOnly': { + addExportedLocal(camelCase(name), value); + break; + } + case 'dashes': { + addExportedLocal(name, value); - const modifiedName = dashesCamelCase(name); + const modifiedName = dashesCamelCase(name); - if (modifiedName !== name) { - addExportedItem(modifiedName, value); + if (modifiedName !== name) { + addExportedLocal(modifiedName, value); + } + break; } - break; - } - case 'dashesOnly': { - addExportedItem(dashesCamelCase(name), value); - break; + case 'dashesOnly': { + addExportedLocal(dashesCamelCase(name), value); + break; + } + case 'asIs': + default: + addExportedLocal(name, value); + break; } - case 'asIs': - default: - addExportedItem(name, value); - break; - } - }); + }); - let exportCode = `// Exports\n${ - exportType === 'locals' ? 'module.exports' : 'exports.locals' - } = {\n${items.join(',\n')}\n};`; + exportLocalsCode = exportLocals.join(',\n'); - replacers.forEach((replacer) => { - if (replacer.type === 'icss-import') { - const { replacementName, importName, localName } = replacer; + replacers.forEach((replacer) => { + if (replacer.type === 'icss-import') { + const { replacementName, importName, localName } = replacer; - exportCode = exportCode.replace(new RegExp(replacementName, 'g'), () => - exportType === 'locals' - ? `" + ${importName}[${JSON.stringify(localName)}] + "` - : `" + ${importName}.locals[${JSON.stringify(localName)}] + "` - ); + exportLocalsCode = exportLocalsCode.replace( + new RegExp(replacementName, 'g'), + () => + exportType === 'locals' + ? `" + ${importName}[${JSON.stringify(localName)}] + "` + : `" + ${importName}.locals[${JSON.stringify(localName)}] + "` + ); + } + }); + } + + if (exportType === 'locals') { + exportItems.push( + `${ + esModule ? 'export default' : 'module.exports =' + } {\n${exportLocalsCode}\n};` + ); + } else { + if (exportLocalsCode) { + exportItems.push(`exports.locals = {\n${exportLocalsCode}\n};`); } - }); - return exportCode; + exportItems.push( + `${esModule ? 'export default' : 'module.exports ='} exports;` + ); + } + + return `// Exports\n${exportItems.join('\n')}\n`; } export { diff --git a/test/__snapshots__/esModule-option.test.js.snap b/test/__snapshots__/esModule-option.test.js.snap new file mode 100644 index 00000000..9aca855e --- /dev/null +++ b/test/__snapshots__/esModule-option.test.js.snap @@ -0,0 +1,283 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`"esModule" option should work when not specified: errors 1`] = `Array []`; + +exports[`"esModule" option should work when not specified: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"esModule" option should work when not specified: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./es-module/imported.css", + ".foo { + color: red; +} +", + "", + ], + Array [ + "./es-module/source.css", + "@charset \\"UTF-8\\"; + +/* Comment */ + +.class { + color: red; + background: url(/webpack/public/path/img.png); +} +", + "", + ], +] +`; + +exports[`"esModule" option should work when not specified: warnings 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "false": errors 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "false": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"esModule" option should work with a value equal to "false": result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./es-module/imported.css", + ".foo { + color: red; +} +", + "", + ], + Array [ + "./es-module/source.css", + "@charset \\"UTF-8\\"; + +/* Comment */ + +.class { + color: red; + background: url(/webpack/public/path/img.png); +} +", + "", + ], +] +`; + +exports[`"esModule" option should work with a value equal to "false": warnings 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "global": errors 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "global": module 1`] = ` +"// Imports +import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\"; +import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\"; +import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\"; +import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\"; +var exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +export default exports; +" +`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "global": result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./es-module/imported.css", + ".foo { + color: red; +} +", + "", + ], + Array [ + "./es-module/source.css", + "@charset \\"UTF-8\\"; + +/* Comment */ + +.class { + color: red; + background: url(/webpack/public/path/img.png); +} +", + "", + ], +] +`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "global": warnings 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "local": errors 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "local": module 1`] = ` +"// Imports +import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\"; +import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\"; +import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\"; +import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\"; +var exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n._3S58jeCkC6SOPhVLbU-Bwn {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"class\\": \\"_3S58jeCkC6SOPhVLbU-Bwn\\" +}; +export default exports; +" +`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "local": result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./es-module/imported.css", + "._3xfjtZ03Dx7Cld7Debi-wl { + color: red; +} +", + "", + ], + Array [ + "./es-module/source.css", + "@charset \\"UTF-8\\"; + +/* Comment */ + +._3S58jeCkC6SOPhVLbU-Bwn { + color: red; + background: url(/webpack/public/path/img.png); +} +", + "", + ], +] +`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "local": warnings 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "pure": errors 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "pure": module 1`] = ` +"// Imports +import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\"; +import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\"; +import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\"; +import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\"; +var exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n._3S58jeCkC6SOPhVLbU-Bwn {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"class\\": \\"_3S58jeCkC6SOPhVLbU-Bwn\\" +}; +export default exports; +" +`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "pure": result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./es-module/imported.css", + "._3xfjtZ03Dx7Cld7Debi-wl { + color: red; +} +", + "", + ], + Array [ + "./es-module/source.css", + "@charset \\"UTF-8\\"; + +/* Comment */ + +._3S58jeCkC6SOPhVLbU-Bwn { + color: red; + background: url(/webpack/public/path/img.png); +} +", + "", + ], +] +`; + +exports[`"esModule" option should work with a value equal to "true" and the "mode" value equal to "pure": warnings 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "true": errors 1`] = `Array []`; + +exports[`"esModule" option should work with a value equal to "true": module 1`] = ` +"// Imports +import ___CSS_LOADER_API_IMPORT___ from \\"../../../src/runtime/api.js\\"; +import ___CSS_LOADER_AT_RULE_IMPORT_0___ from \\"-!../../../src/index.js??[ident]!./imported.css\\"; +import ___CSS_LOADER_GET_URL_IMPORT___ from \\"../../../src/runtime/getUrl.js\\"; +import ___CSS_LOADER_URL_IMPORT_0___ from \\"./img.png\\"; +var exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +export default exports; +" +`; + +exports[`"esModule" option should work with a value equal to "true": result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./es-module/imported.css", + ".foo { + color: red; +} +", + "", + ], + Array [ + "./es-module/source.css", + "@charset \\"UTF-8\\"; + +/* Comment */ + +.class { + color: red; + background: url(/webpack/public/path/img.png); +} +", + "", + ], +] +`; + +exports[`"esModule" option should work with a value equal to "true": warnings 1`] = `Array []`; diff --git a/test/__snapshots__/icss.test.js.snap b/test/__snapshots__/icss.test.js.snap index ff8f2468..9956ec3e 100644 --- a/test/__snapshots__/icss.test.js.snap +++ b/test/__snapshots__/icss.test.js.snap @@ -1,17 +1,25 @@ // 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 show work with the case "duplicate-export": errors 1`] = `Array []`; + +exports[`ICSS show work with the case "duplicate-export": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"_test\\": \\"_right_value\\" +}; +module.exports = exports; +" `; -exports[`ICSS case duplicate-export: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "duplicate-export": result 1`] = ` Array [ Array [ - 1, + "./icss/tests-cases/duplicate-export/source.css", " ", "", @@ -19,20 +27,28 @@ Array [ ] `; -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 show work with the case "duplicate-export": warnings 1`] = `Array []`; + +exports[`ICSS show work with the case "duplicate-export-in-multiple-export": errors 1`] = `Array []`; + +exports[`ICSS show work with the case "duplicate-export-in-multiple-export": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"_test\\": \\"_right_value\\" +}; +module.exports = exports; +" `; -exports[`ICSS case duplicate-export-in-multiple-export: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "duplicate-export-in-multiple-export": result 1`] = ` Array [ Array [ - 1, + "./icss/tests-cases/duplicate-export-in-multiple-export/source.css", " ", "", @@ -40,16 +56,25 @@ Array [ ] `; -exports[`ICSS case duplicate-export-in-multiple-export: warnings 1`] = `Array []`; +exports[`ICSS show work with the case "duplicate-export-in-multiple-export": warnings 1`] = `Array []`; -exports[`ICSS case empty-export: errors 1`] = `Array []`; +exports[`ICSS show work with the case "empty-export": errors 1`] = `Array []`; -exports[`ICSS case empty-export: locals 1`] = `undefined`; +exports[`ICSS show work with the case "empty-export": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`ICSS case empty-export: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "empty-export": result 1`] = ` Array [ Array [ - 1, + "./icss/tests-cases/empty-export/source.css", " ", "", @@ -57,16 +82,25 @@ Array [ ] `; -exports[`ICSS case empty-export: warnings 1`] = `Array []`; +exports[`ICSS show work with the case "empty-export": warnings 1`] = `Array []`; -exports[`ICSS case empty-import: errors 1`] = `Array []`; +exports[`ICSS show work with the case "empty-import": errors 1`] = `Array []`; -exports[`ICSS case empty-import: locals 1`] = `undefined`; +exports[`ICSS show work with the case "empty-import": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`ICSS case empty-import: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "empty-import": result 1`] = ` Array [ Array [ - 1, + "./icss/tests-cases/empty-import/source.css", " ", "", @@ -74,20 +108,28 @@ Array [ ] `; -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 show work with the case "empty-import": warnings 1`] = `Array []`; + +exports[`ICSS show work with the case "export": errors 1`] = `Array []`; + +exports[`ICSS show work with the case "export": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"_test\\": \\"_test\\" +}; +module.exports = exports; +" `; -exports[`ICSS case export: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "export": result 1`] = ` Array [ Array [ - 1, + "./icss/tests-cases/export/source.css", " ", "", @@ -95,21 +137,29 @@ Array [ ] `; -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 show work with the case "export": warnings 1`] = `Array []`; + +exports[`ICSS show work with the case "export-reserved-keywords": errors 1`] = `Array []`; + +exports[`ICSS show work with the case "export-reserved-keywords": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"constructor\\": \\"constructor\\", + \\"toString\\": \\"toString\\" +}; +module.exports = exports; +" `; -exports[`ICSS case export-reserved-keywords: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "export-reserved-keywords": result 1`] = ` Array [ Array [ - 1, + "./icss/tests-cases/export-reserved-keywords/source.css", " ", "", @@ -117,26 +167,36 @@ Array [ ] `; -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 show work with the case "export-reserved-keywords": warnings 1`] = `Array []`; + +exports[`ICSS show work with the case "import": errors 1`] = `Array []`; + +exports[`ICSS show work with the case "import": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./vars.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".className {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"primary-color\\"] + \\";\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"primary-color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"primary-color\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`ICSS case import: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "import": result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./icss/tests-cases/import/vars.css", " ", "", ], Array [ - 1, + "./icss/tests-cases/import/source.css", ".className { color: red; } @@ -146,27 +206,37 @@ Array [ ] `; -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 show work with the case "import": warnings 1`] = `Array []`; + +exports[`ICSS show work with the case "import-reserved-keywords": errors 1`] = `Array []`; + +exports[`ICSS show work with the case "import-reserved-keywords": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./vars.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".className {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"primary-color\\"] + \\";\\\\n display: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"secondary-color\\"] + \\";\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"primary-color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"primary-color\\"] + \\"\\", + \\"secondary-color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"secondary-color\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`ICSS case import-reserved-keywords: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "import-reserved-keywords": result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./icss/tests-cases/import-reserved-keywords/vars.css", " ", "", ], Array [ - 1, + "./icss/tests-cases/import-reserved-keywords/source.css", ".className { color: red; display: block; @@ -177,21 +247,29 @@ Array [ ] `; -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 show work with the case "import-reserved-keywords": warnings 1`] = `Array []`; + +exports[`ICSS show work with the case "multiple-export": errors 1`] = `Array []`; + +exports[`ICSS show work with the case "multiple-export": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"_test\\": \\"_test\\", + \\"_foo\\": \\"_bar\\" +}; +module.exports = exports; +" `; -exports[`ICSS case multiple-export: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "multiple-export": result 1`] = ` Array [ Array [ - 1, + "./icss/tests-cases/multiple-export/source.css", " ", "", @@ -199,24 +277,32 @@ Array [ ] `; -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 show work with the case "multiple-export": warnings 1`] = `Array []`; + +exports[`ICSS show work with the case "multiple-keys-values-in-export": errors 1`] = `Array []`; + +exports[`ICSS show work with the case "multiple-keys-values-in-export": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"_test\\": \\"_test\\", + \\"_test1\\": \\"1\\", + \\"_test2\\": \\"'string'\\", + \\"_test3\\": \\"1px 2px 3px\\", + \\"_test4\\": \\"1px 2px 3px, 1px 2px 3px\\" +}; +module.exports = exports; +" `; -exports[`ICSS case multiple-keys-values-in-export: module (evaluated) 1`] = ` +exports[`ICSS show work with the case "multiple-keys-values-in-export": result 1`] = ` Array [ Array [ - 1, + "./icss/tests-cases/multiple-keys-values-in-export/source.css", " ", "", @@ -224,4 +310,4 @@ Array [ ] `; -exports[`ICSS case multiple-keys-values-in-export: warnings 1`] = `Array []`; +exports[`ICSS show work with the 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 index e2befe22..2cd39431 100644 --- a/test/__snapshots__/import-option.test.js.snap +++ b/test/__snapshots__/import-option.test.js.snap @@ -1,61 +1,270 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`import option Function: errors 1`] = `Array []`; +exports[`"import" option should keep original order: errors 1`] = `Array []`; -exports[`import option Function: module (evaluated) 1`] = ` +exports[`"import" option should keep original order: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./order-1.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\\"-!../../../src/index.js??[ident]!./order-2.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_2___ = require(\\"-!../../../src/index.js??[ident]!./order-3.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_3___ = require(\\"-!../../../src/index.js??[ident]!./order-4.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___); +exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___, \\"screen and (min-width: 2000px)\\"); +exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_2___); +exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_3___, \\"screen\\"); +// Module +exports.push([module.id, \\"div {\\\\n width: 100%;\\\\n height: 200px;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"import" option should keep original order: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./import/order-1.css", + ".order-1 { + color: red; +} +", + "", + ], + Array [ + "./import/order.css", + "@import url(http://example.com/style.css);", + ], + Array [ + "../../src/index.js?[ident]!./import/order-2.css", + ".order-2 { + color: red; +} +", + "", + ], + Array [ + "./import/order.css", + "@import url(http://example.com/style.css);", + ], + Array [ + "../../src/index.js?[ident]!./import/order-1.css", + ".order-1 { + color: red; +} +", + "", + ], + Array [ + "./import/order.css", + "@import url(http://example.com/style.css);", + ], + Array [ + "../../src/index.js?[ident]!./import/order-2.css", + ".order-2 { + color: red; +} +", + "screen and (min-width: 2000px)", + ], + Array [ + "./import/order.css", + "@import url(http://example.com/style.css);", + ], + Array [ + "../../src/index.js?[ident]!./import/order-3-1.css", + ".order-3-1 { + color: white; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/order-3.css", + ".order-3 { + color: red; +} +", + "", + ], + Array [ + "./import/order.css", + "@import url(http://example.com/style.css);", + ], + Array [ + "../../src/index.js?[ident]!./import/order-4-1.css", + ".order-4-1 { + color: red; +} +", + "screen and (min-width: 1000px)", + ], + Array [ + "../../src/index.js?[ident]!./import/order-4-2-1.css", + ".order-4-2-1 { + color: red; +} +", + "screen and (min-width: 2000px)", + ], + Array [ + "../../src/index.js?[ident]!./import/order-4-2-2.css", + ".order-4-2-2 { + color: red; +} +", + "screen and (min-width: 2000px) and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/order-4-2.css", + ".order-4-2 { + color: red; +} +", + "screen and (min-width: 2000px)", + ], + Array [ + "../../src/index.js?[ident]!./import/order-4.css", + ".order-4 { + color: red; +} +", + "screen", + ], + Array [ + "./import/order.css", + "div { + width: 100%; + height: 200px; +} +", + "", + ], +] +`; + +exports[`"import" option should keep original order: warnings 1`] = `Array []`; + +exports[`"import" option should work when "Function": errors 1`] = `Array []`; + +exports[`"import" option should work when "Function": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./test-media.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\\"-!../../../src/index.js??[ident]!./test-other.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_2___ = require(\\"-!../../../src/index.js??[ident]!./query.css?foo=1&bar=1\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_3___ = require(\\"-!../../../src/index.js??[ident]!./other-query.css?foo=1&bar=1#hash\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_4___ = require(\\"-!../../../src/index.js??[ident]!./relative.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_5___ = require(\\"-!../../../src/index.js??[ident]!../import/top-relative.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_6___ = require(\\"-!../../../src/index.js??[ident]!package/tilde.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_7___ = require(\\"-!../../../src/index.js??[ident]!aliasesImport/alias.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_8___ = require(\\"-!../../../src/index.js??[ident]!./url.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_9___ = require(\\"-!../../../src/index.js??[ident]!./te'st.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___, \\"(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);\\"]); +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 (orientation:landscape)\\"]); +exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and (orientation:landscape)\\"]); +exports.push([module.id, \\"@import url(//example.com/style.css);\\"]); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_2___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_3___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_3___, \\"screen and (orientation:landscape)\\"); +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(___CSS_LOADER_AT_RULE_IMPORT_4___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_5___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_6___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_7___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_8___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// 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 (orientation:landscape);\\\\n@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE);\\\\n@import url(test.css)screen and (orientation:landscape);\\\\n@import url(test.css) screen and (orientation:landscape);\\\\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_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n@import url(./test.css);\\\\n\\\\n@import './te\\\\\\\\\\\\nst.css';\\\\n@import './te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css';\\\\n@import url('./te\\\\\\\\\\\\nst.css');\\\\n@import url('./te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css');\\\\n@import './test test.css';\\\\n@import url('./test test.css');\\\\n@import './test\\\\\\\\ test.css';\\\\n@import url('./test\\\\\\\\ test.css');\\\\n@import './test%20test.css';\\\\n@import url('./test%20test.css');\\\\n@import './\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import './t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import url(./test\\\\\\\\ test.css);\\\\n@import url(./t\\\\\\\\65st%20test.css);\\\\n@import url('./t\\\\\\\\65st%20test.css');\\\\n@import url(\\\\\\"./t\\\\\\\\65st%20test.css\\\\\\");\\\\n@import \\\\\\"./t\\\\\\\\65st%20test.css\\\\\\";\\\\n@import './t\\\\\\\\65st%20test.css';\\\\n@import url( test.css );\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"import" option should work when "Function": result 1`] = ` Array [ Array [ - 3, + "../../src/index.js?[ident]!./import/test-nested-media.css", "a { b: b; } ", - "((min-width: 100px)) and (screen and print)", + "screen and (orientation:landscape) and (min-width: 100px)", ], Array [ - 2, + "../../src/index.js?[ident]!./import/test-media.css", ".test { c: c; } ", - "screen and print", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test-other.css", + ".test { + d: d; +} +", + "(min-width: 100px)", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css#hash);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css?#hash);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css?foo=bar#hash);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/other-style.css);", - "screen and print", + "screen and (orientation:landscape)", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/other-style.css);", - "screen and print", + "screen and (orientation:landscape)", ], Array [ - 1, + "./import/import.css", "@import url(//example.com/style.css);", ], Array [ - 4, + "../../src/index.js?[ident]!./import/query.css?foo=1&bar=1", ".query { e: e; } @@ -63,7 +272,7 @@ Array [ "", ], Array [ - 5, + "../../src/index.js?[ident]!./import/other-query.css?foo=1&bar=1#hash", ".other-query { f: f; } @@ -71,19 +280,27 @@ Array [ "", ], Array [ - 1, + "../../src/index.js?[ident]!./import/other-query.css?foo=1&bar=1#hash", + ".other-query { + f: f; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "./import/import.css", "@import url(https://fonts.googleapis.com/css?family=Roboto);", ], Array [ - 1, + "./import/import.css", "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);", ], Array [ - 1, + "./import/import.css", "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);", ], Array [ - 6, + "../../src/index.js?[ident]!./import/relative.css", ".relative { color: red; } @@ -91,7 +308,7 @@ Array [ "", ], Array [ - 7, + "../../src/index.js?[ident]!./import/top-relative.css", ".top-relative { color: black; } @@ -99,7 +316,7 @@ Array [ "", ], Array [ - 8, + "../../src/index.js?[ident]!./import/node_modules/package/tilde.css", ".tilde { color: yellow; } @@ -107,7 +324,7 @@ Array [ "", ], Array [ - 9, + "../../src/index.js?[ident]!./import/alias.css", ".alias { color: red; } @@ -115,7 +332,7 @@ Array [ "", ], Array [ - 10, + "../../src/index.js?[ident]!./import/url.css", ".background-imported { background: url(/webpack/public/path/img.png); } @@ -123,7 +340,31 @@ Array [ "", ], Array [ - 11, + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", ".strange { color: red; } @@ -131,7 +372,7 @@ Array [ "", ], Array [ - 1, + "./import/import.css", "@import url(test.css); @import url('test.css'); @import url(\\"test.css\\"); @@ -156,10 +397,10 @@ Array [ @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.css) screen and (orientation:landscape); +@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE); +@import url(test.css)screen and (orientation:landscape); +@import url(test.css) screen and (orientation:landscape); @import url(~package/test.css); @import ; @import foo-bar; @@ -215,54 +456,7 @@ st.css'); ] `; -exports[`import option Function: module 1`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./test-media.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_2___ = require(\\"-!../../../src/index.js??ref--4-0!./query.css?foo=1&bar=1\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_3___ = require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_4___ = require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_5___ = require(\\"-!../../../src/index.js??ref--4-0!../import/top-relative.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_6___ = require(\\"-!../../../src/index.js??ref--4-0!package/tilde.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_7___ = require(\\"-!../../../src/index.js??ref--4-0!aliasesImport/alias.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_8___ = require(\\"-!../../../src/index.js??ref--4-0!./url.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_9___ = require(\\"-!../../../src/index.js??ref--4-0!./te'st.css\\"); -var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); -var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and print\\"); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___, \\"(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);\\"]); -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(http://example.com/other-style.css);\\", \\"screen and print\\"]); -exports.push([module.id, \\"@import url(//example.com/style.css);\\"]); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_2___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_3___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_3___, \\"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(___CSS_LOADER_AT_RULE_IMPORT_4___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_5___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_6___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_7___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_8___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); -// 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_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n@import url(./test.css);\\\\n\\\\n@import './te\\\\\\\\\\\\nst.css';\\\\n@import './te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css';\\\\n@import url('./te\\\\\\\\\\\\nst.css');\\\\n@import url('./te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css');\\\\n@import './test test.css';\\\\n@import url('./test test.css');\\\\n@import './test\\\\\\\\ test.css';\\\\n@import url('./test\\\\\\\\ test.css');\\\\n@import './test%20test.css';\\\\n@import url('./test%20test.css');\\\\n@import './\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import './t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import url(./test\\\\\\\\ test.css);\\\\n@import url(./t\\\\\\\\65st%20test.css);\\\\n@import url('./t\\\\\\\\65st%20test.css');\\\\n@import url(\\\\\\"./t\\\\\\\\65st%20test.css\\\\\\");\\\\n@import \\\\\\"./t\\\\\\\\65st%20test.css\\\\\\";\\\\n@import './t\\\\\\\\65st%20test.css';\\\\n@import url( test.css );\\\\n\\", \\"\\"]); -" -`; - -exports[`import option Function: warnings 1`] = ` +exports[`"import" option should work when "Function": warnings 1`] = ` Array [ "ModuleWarning: Module Warning (from \`replaced original path\`): Warning @@ -320,211 +514,182 @@ Warning ] `; -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'); +exports[`"import" option should work when not specified: errors 1`] = `Array []`; -.background { - background: url(/webpack/public/path/img.png); -} - -@import url(./test.css); - -@import './te\\\\ -st.css'; -@import './te\\\\ -\\\\ -\\\\ -st.css'; -@import url('./te\\\\ -st.css'); -@import url('./te\\\\ -\\\\ -\\\\ -st.css'); - -@import \\"./te'st.css\\"; -@import url(\\"./te'st.css\\"); -@import './te\\\\'st.css'; -@import url('./te\\\\'st.css'); -@import './test test.css'; -@import url('./test test.css'); -@import './test\\\\ test.css'; -@import url('./test\\\\ test.css'); -@import './test%20test.css'; -@import url('./test%20test.css'); -@import './\\\\74\\\\65\\\\73\\\\74.css'; -@import url('./\\\\74\\\\65\\\\73\\\\74.css'); -@import './t\\\\65\\\\73\\\\74.css'; -@import url('./t\\\\65\\\\73\\\\74.css'); -@import url(./test\\\\ test.css); -@import url(./t\\\\65st%20test.css); -@import url('./t\\\\65st%20test.css'); -@import url(\\"./t\\\\65st%20test.css\\"); -@import \\"./t\\\\65st%20test.css\\"; -@import './t\\\\65st%20test.css'; -@import url( test.css ); -", - "", - ], -] -`; - -exports[`import option false: module 1`] = ` +exports[`"import" option should work when not specified: module 1`] = ` "// Imports var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./test.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\\"-!../../../src/index.js??[ident]!./test-media.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_2___ = require(\\"-!../../../src/index.js??[ident]!./test-other.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_3___ = require(\\"-!../../../src/index.js??[ident]!package/test.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_4___ = require(\\"-!../../../src/index.js??[ident]!./query.css?foo=1&bar=1\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_5___ = require(\\"-!../../../src/index.js??[ident]!./other-query.css?foo=1&bar=1#hash\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_6___ = require(\\"-!../../../src/index.js??[ident]!./relative.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_7___ = require(\\"-!../../../src/index.js??[ident]!../import/top-relative.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_8___ = require(\\"-!../../../src/index.js??[ident]!package/tilde.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_9___ = require(\\"-!../../../src/index.js??[ident]!aliasesImport/alias.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_10___ = require(\\"-!../../../src/index.js??[ident]!./url.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_11___ = require(\\"-!../../../src/index.js??[ident]!./te'st.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_12___ = require(\\"-!../../../src/index.js??[ident]!./test test.css\\"); var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation: landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_2___, \\"(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);\\"]); +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 (orientation:landscape)\\"]); +exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and (orientation:landscape)\\"]); +exports.push([module.id, \\"@import url(//example.com/style.css);\\"]); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_3___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_4___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_5___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_5___, \\"screen and (orientation:landscape)\\"); +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(___CSS_LOADER_AT_RULE_IMPORT_6___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_7___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_8___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_9___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_10___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_11___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_11___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_11___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_11___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_12___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); // 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_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n@import url(./test.css);\\\\n\\\\n@import './te\\\\\\\\\\\\nst.css';\\\\n@import './te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css';\\\\n@import url('./te\\\\\\\\\\\\nst.css');\\\\n@import url('./te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css');\\\\n\\\\n@import \\\\\\"./te'st.css\\\\\\";\\\\n@import url(\\\\\\"./te'st.css\\\\\\");\\\\n@import './te\\\\\\\\'st.css';\\\\n@import url('./te\\\\\\\\'st.css');\\\\n@import './test test.css';\\\\n@import url('./test test.css');\\\\n@import './test\\\\\\\\ test.css';\\\\n@import url('./test\\\\\\\\ test.css');\\\\n@import './test%20test.css';\\\\n@import url('./test%20test.css');\\\\n@import './\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import './t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import url(./test\\\\\\\\ test.css);\\\\n@import url(./t\\\\\\\\65st%20test.css);\\\\n@import url('./t\\\\\\\\65st%20test.css');\\\\n@import url(\\\\\\"./t\\\\\\\\65st%20test.css\\\\\\");\\\\n@import \\\\\\"./t\\\\\\\\65st%20test.css\\\\\\";\\\\n@import './t\\\\\\\\65st%20test.css';\\\\n@import url( test.css );\\\\n\\", \\"\\"]); +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_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; " `; -exports[`import option false: warnings 1`] = `Array []`; - -exports[`import option should keep original order: errors 1`] = `Array []`; - -exports[`import option should keep original order: module (evaluated) 1`] = ` +exports[`"import" option should work when not specified: result 1`] = ` Array [ Array [ - 2, - "div { - background: red; + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; } ", "", ], Array [ - 1, - "@import url(http://example.com/style.css);", + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", ], Array [ - 3, - "div { - background: blue; + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; } ", "", ], Array [ - 1, - "@import url(http://example.com/style.css);", + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", ], Array [ - 1, - "@import url(http://example.com/style.css);", + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", ], Array [ - 1, - "@import url(http://example.com/style.css);", + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", ], Array [ - 1, - "div { - width: 100%; - height: 200px; + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; } ", "", ], -] -`; - -exports[`import option should keep original order: module 1`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./order-1.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\\"-!../../../src/index.js??ref--4-0!./order-2.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___); -exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___, \\"screen and (min-width: 2000px)\\"); -exports.push([module.id, \\"@import url(http://example.com/style.css);\\"]); -// Module -exports.push([module.id, \\"div {\\\\n width: 100%;\\\\n height: 200px;\\\\n}\\\\n\\", \\"\\"]); -" -`; - -exports[`import option should keep original order: warnings 1`] = `Array []`; - -exports[`import option true: errors 1`] = `Array []`; - -exports[`import option true: module (evaluated) 1`] = ` -Array [ Array [ - 2, + "../../src/index.js?[ident]!./import/test.css", ".test { a: a; } @@ -532,57 +697,97 @@ Array [ "", ], Array [ - 4, + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "screen and (orientation: landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test-nested-media.css", "a { b: b; } ", - "((min-width: 100px)) and (screen and print)", + "screen and (orientation:landscape) and (min-width: 100px)", ], Array [ - 3, + "../../src/index.js?[ident]!./import/test-media.css", ".test { c: c; } ", - "screen and print", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test-other.css", + ".test { + d: d; +} +", + "(min-width: 100px)", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css#hash);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css?#hash);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/style.css?foo=bar#hash);", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/other-style.css);", - "screen and print", + "screen and (orientation:landscape)", ], Array [ - 1, + "./import/import.css", "@import url(http://example.com/other-style.css);", - "screen and print", + "screen and (orientation:landscape)", ], Array [ - 1, + "./import/import.css", "@import url(//example.com/style.css);", ], Array [ - 5, + "../../src/index.js?[ident]!./import/node_modules/package/test.css", ".test { d: d } @@ -590,7 +795,7 @@ Array [ "", ], Array [ - 6, + "../../src/index.js?[ident]!./import/query.css?foo=1&bar=1", ".query { e: e; } @@ -598,7 +803,7 @@ Array [ "", ], Array [ - 7, + "../../src/index.js?[ident]!./import/other-query.css?foo=1&bar=1#hash", ".other-query { f: f; } @@ -606,19 +811,27 @@ Array [ "", ], Array [ - 1, + "../../src/index.js?[ident]!./import/other-query.css?foo=1&bar=1#hash", + ".other-query { + f: f; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "./import/import.css", "@import url(https://fonts.googleapis.com/css?family=Roboto);", ], Array [ - 1, + "./import/import.css", "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);", ], Array [ - 1, + "./import/import.css", "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);", ], Array [ - 8, + "../../src/index.js?[ident]!./import/relative.css", ".relative { color: red; } @@ -626,7 +839,7 @@ Array [ "", ], Array [ - 9, + "../../src/index.js?[ident]!./import/top-relative.css", ".top-relative { color: black; } @@ -634,7 +847,7 @@ Array [ "", ], Array [ - 10, + "../../src/index.js?[ident]!./import/node_modules/package/tilde.css", ".tilde { color: yellow; } @@ -642,7 +855,7 @@ Array [ "", ], Array [ - 11, + "../../src/index.js?[ident]!./import/alias.css", ".alias { color: red; } @@ -650,7 +863,7 @@ Array [ "", ], Array [ - 12, + "../../src/index.js?[ident]!./import/url.css", ".background-imported { background: url(/webpack/public/path/img.png); } @@ -658,104 +871,488 @@ Array [ "", ], Array [ - 13, - ".strange { - color: red; + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; } ", "", ], Array [ - 14, - ".space { - color: gray; + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; } ", "", ], 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'; + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; } - -.background { - background: url(/webpack/public/path/img.png); +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; } ", "", ], -] + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "./import/import.css", + "@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 should work when not specified: 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: module 1`] = ` +exports[`"import" option should work with a value equal to "false": errors 1`] = `Array []`; + +exports[`"import" option should work with a value equal to "false": module 1`] = ` "// Imports var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./test.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\\"-!../../../src/index.js??ref--4-0!./test-media.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_2___ = require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_3___ = require(\\"-!../../../src/index.js??ref--4-0!package/test.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_4___ = require(\\"-!../../../src/index.js??ref--4-0!./query.css?foo=1&bar=1\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_5___ = require(\\"-!../../../src/index.js??ref--4-0!./other-query.css?foo=1&bar=1#hash\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_6___ = require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_7___ = require(\\"-!../../../src/index.js??ref--4-0!../import/top-relative.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_8___ = require(\\"-!../../../src/index.js??ref--4-0!package/tilde.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_9___ = require(\\"-!../../../src/index.js??ref--4-0!aliasesImport/alias.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_10___ = require(\\"-!../../../src/index.js??ref--4-0!./url.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_11___ = require(\\"-!../../../src/index.js??ref--4-0!./te'st.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_12___ = require(\\"-!../../../src/index.js??ref--4-0!./test test.css\\"); var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and print\\"); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and print\\"); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and print\\"); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and print\\"); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___, \\"screen and print\\"); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_2___, \\"(min-width: 100px)\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// 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 (orientation:landscape);\\\\n@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE);\\\\n@import url(test.css)screen and (orientation:landscape);\\\\n@import url(test.css) screen and (orientation:landscape);\\\\n@import url(test-media.css) screen and (orientation:landscape);\\\\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 (orientation:landscape);\\\\n@import url(http://example.com/other-style.css) screen and (orientation:landscape);\\\\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 (orientation:landscape);\\\\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_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n@import url(./test.css);\\\\n\\\\n@import './te\\\\\\\\\\\\nst.css';\\\\n@import './te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css';\\\\n@import url('./te\\\\\\\\\\\\nst.css');\\\\n@import url('./te\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\nst.css');\\\\n\\\\n@import \\\\\\"./te'st.css\\\\\\";\\\\n@import url(\\\\\\"./te'st.css\\\\\\");\\\\n@import './te\\\\\\\\'st.css';\\\\n@import url('./te\\\\\\\\'st.css');\\\\n@import './test test.css';\\\\n@import url('./test test.css');\\\\n@import './test\\\\\\\\ test.css';\\\\n@import url('./test\\\\\\\\ test.css');\\\\n@import './test%20test.css';\\\\n@import url('./test%20test.css');\\\\n@import './\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./\\\\\\\\74\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import './t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css';\\\\n@import url('./t\\\\\\\\65\\\\\\\\73\\\\\\\\74.css');\\\\n@import url(./test\\\\\\\\ test.css);\\\\n@import url(./t\\\\\\\\65st%20test.css);\\\\n@import url('./t\\\\\\\\65st%20test.css');\\\\n@import url(\\\\\\"./t\\\\\\\\65st%20test.css\\\\\\");\\\\n@import \\\\\\"./t\\\\\\\\65st%20test.css\\\\\\";\\\\n@import './t\\\\\\\\65st%20test.css';\\\\n@import url( test.css );\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"import" option should work with a value equal to "false": result 1`] = ` +Array [ + Array [ + "./import/import.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( + 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 (orientation:landscape); +@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE); +@import url(test.css)screen and (orientation:landscape); +@import url(test.css) screen and (orientation:landscape); +@import url(test-media.css) screen and (orientation:landscape); +@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 (orientation:landscape); +@import url(http://example.com/other-style.css) screen and (orientation:landscape); +@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 (orientation:landscape); +@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); +} + +@import url(./test.css); + +@import './te\\\\ +st.css'; +@import './te\\\\ +\\\\ +\\\\ +st.css'; +@import url('./te\\\\ +st.css'); +@import url('./te\\\\ +\\\\ +\\\\ +st.css'); + +@import \\"./te'st.css\\"; +@import url(\\"./te'st.css\\"); +@import './te\\\\'st.css'; +@import url('./te\\\\'st.css'); +@import './test test.css'; +@import url('./test test.css'); +@import './test\\\\ test.css'; +@import url('./test\\\\ test.css'); +@import './test%20test.css'; +@import url('./test%20test.css'); +@import './\\\\74\\\\65\\\\73\\\\74.css'; +@import url('./\\\\74\\\\65\\\\73\\\\74.css'); +@import './t\\\\65\\\\73\\\\74.css'; +@import url('./t\\\\65\\\\73\\\\74.css'); +@import url(./test\\\\ test.css); +@import url(./t\\\\65st%20test.css); +@import url('./t\\\\65st%20test.css'); +@import url(\\"./t\\\\65st%20test.css\\"); +@import \\"./t\\\\65st%20test.css\\"; +@import './t\\\\65st%20test.css'; +@import url( test.css ); +", + "", + ], +] +`; + +exports[`"import" option should work with a value equal to "false": warnings 1`] = `Array []`; + +exports[`"import" option should work with a value equal to "true": errors 1`] = `Array []`; + +exports[`"import" option should work with a value equal to "true": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./test.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\\"-!../../../src/index.js??[ident]!./test-media.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_2___ = require(\\"-!../../../src/index.js??[ident]!./test-other.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_3___ = require(\\"-!../../../src/index.js??[ident]!package/test.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_4___ = require(\\"-!../../../src/index.js??[ident]!./query.css?foo=1&bar=1\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_5___ = require(\\"-!../../../src/index.js??[ident]!./other-query.css?foo=1&bar=1#hash\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_6___ = require(\\"-!../../../src/index.js??[ident]!./relative.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_7___ = require(\\"-!../../../src/index.js??[ident]!../import/top-relative.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_8___ = require(\\"-!../../../src/index.js??[ident]!package/tilde.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_9___ = require(\\"-!../../../src/index.js??[ident]!aliasesImport/alias.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_10___ = require(\\"-!../../../src/index.js??[ident]!./url.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_11___ = require(\\"-!../../../src/index.js??[ident]!./te'st.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_12___ = require(\\"-!../../../src/index.js??[ident]!./test test.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation: landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_1___, \\"screen and (orientation:landscape)\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_2___, \\"(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);\\"]); 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(http://example.com/other-style.css);\\", \\"screen and print\\"]); +exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and (orientation:landscape)\\"]); +exports.push([module.id, \\"@import url(http://example.com/other-style.css);\\", \\"screen and (orientation:landscape)\\"]); exports.push([module.id, \\"@import url(//example.com/style.css);\\"]); exports.i(___CSS_LOADER_AT_RULE_IMPORT_3___); exports.i(___CSS_LOADER_AT_RULE_IMPORT_4___); exports.i(___CSS_LOADER_AT_RULE_IMPORT_5___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_5___, \\"screen and print\\"); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_5___, \\"screen and (orientation:landscape)\\"); 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);\\"]); @@ -793,10 +1390,519 @@ exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); // 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_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; " `; -exports[`import option true: warnings 1`] = ` +exports[`"import" option should work with a value equal to "true": result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "screen and (orientation: landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test-nested-media.css", + "a { + b: b; +} +", + "screen and (orientation:landscape) and (min-width: 100px)", + ], + Array [ + "../../src/index.js?[ident]!./import/test-media.css", + ".test { + c: c; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "../../src/index.js?[ident]!./import/test-other.css", + ".test { + d: d; +} +", + "(min-width: 100px)", + ], + Array [ + "./import/import.css", + "@import url(http://example.com/style.css);", + ], + Array [ + "./import/import.css", + "@import url(http://example.com/style.css);", + ], + Array [ + "./import/import.css", + "@import url(http://example.com/style.css#hash);", + ], + Array [ + "./import/import.css", + "@import url(http://example.com/style.css?#hash);", + ], + Array [ + "./import/import.css", + "@import url(http://example.com/style.css?foo=bar#hash);", + ], + Array [ + "./import/import.css", + "@import url(http://example.com/other-style.css);", + "screen and (orientation:landscape)", + ], + Array [ + "./import/import.css", + "@import url(http://example.com/other-style.css);", + "screen and (orientation:landscape)", + ], + Array [ + "./import/import.css", + "@import url(//example.com/style.css);", + ], + Array [ + "../../src/index.js?[ident]!./import/node_modules/package/test.css", + ".test { + d: d +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/query.css?foo=1&bar=1", + ".query { + e: e; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/other-query.css?foo=1&bar=1#hash", + ".other-query { + f: f; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/other-query.css?foo=1&bar=1#hash", + ".other-query { + f: f; +} +", + "screen and (orientation:landscape)", + ], + Array [ + "./import/import.css", + "@import url(https://fonts.googleapis.com/css?family=Roboto);", + ], + Array [ + "./import/import.css", + "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC);", + ], + Array [ + "./import/import.css", + "@import url(https://fonts.googleapis.com/css?family=Noto+Sans+TC|Roboto);", + ], + Array [ + "../../src/index.js?[ident]!./import/relative.css", + ".relative { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/top-relative.css", + ".top-relative { + color: black; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/node_modules/package/tilde.css", + ".tilde { + color: yellow; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/alias.css", + ".alias { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/url.css", + ".background-imported { + background: url(/webpack/public/path/img.png); +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/te'st.css", + ".strange { + color: red; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test test.css", + ".space { + color: gray; +} +", + "", + ], + Array [ + "../../src/index.js?[ident]!./import/test.css", + ".test { + a: a; +} +", + "", + ], + Array [ + "./import/import.css", + "@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 should work with a value equal to "true": warnings 1`] = ` Array [ "ModuleWarning: Module Warning (from \`replaced original path\`): Warning diff --git a/test/__snapshots__/importLoaders-option.test.js.snap b/test/__snapshots__/importLoaders-option.test.js.snap index 9f71c56f..ec9a1d38 100644 --- a/test/__snapshots__/importLoaders-option.test.js.snap +++ b/test/__snapshots__/importLoaders-option.test.js.snap @@ -1,11 +1,24 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`importLoaders option 0 (\`postcss-loader\` before): errors 1`] = `Array []`; +exports[`"importLoaders" option should work when not specified: errors 1`] = `Array []`; -exports[`importLoaders option 0 (\`postcss-loader\` before): module (evaluated) 1`] = ` +exports[`"importLoaders" option should work when not specified: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js!./imported.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgba(0, 0, 255, 0.9);\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"importLoaders" option should work when not specified: result 1`] = ` Array [ Array [ - 2, + "../../src/index.js!./nested-import/imported.css", ".bar { color: blue; color: rgb(0 0 100% / 90%); @@ -14,7 +27,7 @@ Array [ "", ], Array [ - 1, + "./nested-import/source.css", ".foo { color: red; color: rgba(0, 0, 255, 0.9); @@ -25,34 +38,36 @@ Array [ ] `; -exports[`importLoaders option 0 (\`postcss-loader\` before): module 1`] = ` +exports[`"importLoaders" option should work when not specified: warnings 1`] = `Array []`; + +exports[`"importLoaders" option should work with a value equal to "0" (\`postcss-loader\` before): errors 1`] = `Array []`; + +exports[`"importLoaders" option should work with a value equal to "0" (\`postcss-loader\` before): module 1`] = ` "// Imports var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); // Module exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgba(0, 0, 255, 0.9);\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; " `; -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`] = ` +exports[`"importLoaders" option should work with a value equal to "0" (\`postcss-loader\` before): result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./nested-import/imported.css", ".bar { color: blue; - color: rgba(0, 0, 255, 0.9); + color: rgb(0 0 100% / 90%); } ", "", ], Array [ - 1, + "./nested-import/source.css", ".foo { color: red; color: rgba(0, 0, 255, 0.9); @@ -63,37 +78,39 @@ Array [ ] `; -exports[`importLoaders option 1 (\`postcss-loader\` before): module 1`] = ` +exports[`"importLoaders" option should work with a value equal to "0" (\`postcss-loader\` before): warnings 1`] = `Array []`; + +exports[`"importLoaders" option should work with a value equal to "1" ("postcss-loader" before): errors 1`] = `Array []`; + +exports[`"importLoaders" option should work with a value equal to "1" ("postcss-loader" before): module 1`] = ` "// Imports var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!../../../node_modules/postcss-loader/src/index.js??ref--4-1!./imported.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); // Module exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgba(0, 0, 255, 0.9);\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; " `; -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`] = ` +exports[`"importLoaders" option should work with a value equal to "1" ("postcss-loader" before): result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./nested-import/imported.css", ".bar { color: blue; - color: rgb(0 0 100% / 90%); + color: rgba(0, 0, 255, 0.9); } ", "", ], Array [ - 1, + "./nested-import/source.css", ".foo { color: red; - color: rgb(0 0 100% / 90%); + color: rgba(0, 0, 255, 0.9); } ", "", @@ -101,37 +118,39 @@ Array [ ] `; -exports[`importLoaders option 1 (no loaders before): module 1`] = ` +exports[`"importLoaders" option should work with a value equal to "1" ("postcss-loader" before): warnings 1`] = `Array []`; + +exports[`"importLoaders" option should work with a value equal to "1" (no loaders before): errors 1`] = `Array []`; + +exports[`"importLoaders" option should work with a value equal to "1" (no loaders before): module 1`] = ` "// Imports var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); // Module exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgb(0 0 100% / 90%);\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; " `; -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`] = ` +exports[`"importLoaders" option should work with a value equal to "1" (no loaders before): result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./nested-import/imported.css", ".bar { color: blue; - color: rgba(0, 0, 255, 0.9); + color: rgb(0 0 100% / 90%); } ", "", ], Array [ - 1, + "./nested-import/source.css", ".foo { color: red; - color: rgba(0, 0, 255, 0.9); + color: rgb(0 0 100% / 90%); } ", "", @@ -139,34 +158,36 @@ Array [ ] `; -exports[`importLoaders option 2 (\`postcss-loader\` before): module 1`] = ` +exports[`"importLoaders" option should work with a value equal to "1" (no loaders before): warnings 1`] = `Array []`; + +exports[`"importLoaders" option should work with a value equal to "2" ("postcss-loader" before): errors 1`] = `Array []`; + +exports[`"importLoaders" option should work with a value equal to "2" ("postcss-loader" before): module 1`] = ` "// Imports var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!../../../node_modules/postcss-loader/src/index.js??ref--4-1!./imported.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); // Module exports.push([module.id, \\".foo {\\\\n color: red;\\\\n color: rgba(0, 0, 255, 0.9);\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; " `; -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`] = ` +exports[`"importLoaders" option should work with a value equal to "2" ("postcss-loader" before): result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./nested-import/imported.css", ".bar { color: blue; - color: rgb(0 0 100% / 90%); + color: rgba(0, 0, 255, 0.9); } ", "", ], Array [ - 1, + "./nested-import/source.css", ".foo { color: red; color: rgba(0, 0, 255, 0.9); @@ -177,15 +198,4 @@ Array [ ] `; -exports[`importLoaders option not specify (no loader before): module 1`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -// 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 []`; +exports[`"importLoaders" option should work with a value equal to "2" ("postcss-loader" before): warnings 1`] = `Array []`; diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index 0405fbdd..ef5ed1b2 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -1,146 +1,142 @@ // 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(''); - }; +exports[`loader should reuse \`ast\` from "postcss-loader": errors 1`] = `Array []`; - // 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); - } - } - }; +exports[`loader should reuse \`ast\` from "postcss-loader": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img1x.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./img2x.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +// 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_REPLACEMENT_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_REPLACEMENT_1___ + \\");\\\\n}\\\\n}\\\\n\\\\nmain.hero, .hero.main {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") 2x);\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") 2x);\\\\n}\\\\n\\\\na {\\\\n color: rgba(0, 0, 255, 0.9)\\\\n}\\\\n\\\\na:hover {\\\\n color: #639;\\\\n }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; - return list; -}; +exports[`loader should reuse \`ast\` from "postcss-loader": result 1`] = ` +Array [ + Array [ + "./postcss-present-env/source.css", + ":root { + --fontSize: 1rem; + --mainColor: rgba(18,52,86,0.47059); + --secondaryColor: rgba(102, 51, 153, 0.9); +} -function cssWithMappingToString(item, useSourceMap) { - const content = item[1] || ''; - // eslint-disable-next-line prefer-destructuring - const cssMapping = item[3]; +html { + overflow-x: hidden; + overflow-y: auto; + overflow: hidden auto; +} - if (!cssMapping) { - return content; +@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); } +} - if (useSourceMap && typeof btoa === 'function') { - const sourceMapping = toComment(cssMapping); - const sourceURLs = cssMapping.sources.map( - (source) => \`/*# sourceURL=\${cssMapping.sourceRoot}\${source} */\` - ); +h1,h2,h3,h4,h5,h6 { + margin-top: 0; + margin-bottom: 0; +} - return [content] - .concat(sourceURLs) - .concat([sourceMapping]) - .join('\\\\n'); - } +main.hero, .hero.main { + background-image: url(/webpack/public/path/img1x.png); +} + +@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { - return [content].join('\\\\n'); +main.hero, .hero.main { + background-image: url(/webpack/public/path/img2x.png); +} } -// 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}\`; +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); +} - return \`/*# \${data} */\`; +a { + color: rgba(0, 0, 255, 0.9) } -" + +a:hover { + color: #639; + } +", + "", + ], +] `; -exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): errors 1`] = `Array []`; +exports[`loader should reuse \`ast\` from "postcss-loader": warnings 1`] = `Array []`; -exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): escape 1`] = ` -"module.exports = (url, options) => { - if (!options) { - // eslint-disable-next-line no-param-reassign - options = {}; - } +exports[`loader should throw error on invalid css syntax: errors 1`] = ` +Array [ + "ModuleBuildError: Module build failed (from \`replaced original path\`): +CssSyntaxError - // eslint-disable-next-line no-underscore-dangle, no-param-reassign - url = url && url.__esModule ? url.default : url; +(2:3) Unknown word - if (typeof url !== 'string') { - return url; - } + 1 | .some { +> 2 | invalid css; + | ^ + 3 | } + 4 | +", +] +`; - // If url is already wrapped in quotes, remove them - if (/^['\\"].*['\\"]$/.test(url)) { - // eslint-disable-next-line no-param-reassign - url = url.slice(1, -1); - } +exports[`loader should throw error on invalid css syntax: warnings 1`] = `Array []`; - if (options.hash) { - // eslint-disable-next-line no-param-reassign - url += options.hash; - } +exports[`loader should throws error when no loader(s) 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)", +] +`; - // Should url be wrapped? - // See https://drafts.csswg.org/css-values-3/#urls - if (/[\\"'() \\\\t\\\\n]/.test(url) || options.needQuotes) { - return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`; - } +exports[`loader should throws error when no loader(s) for assets: warnings 1`] = `Array []`; - return url; -}; +exports[`loader should work with "asset" module type: errors 1`] = `Array []`; + +exports[`loader should work with "asset" module type: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../src/index.js!./imported.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./url/img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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 +module.exports = exports; " `; -exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): module (evaluated) 1`] = ` +exports[`loader should work with "asset" module type: result 1`] = ` Array [ Array [ - 2, + "../../src/index.js!./imported.css", ".foo { color: red; } @@ -148,7 +144,7 @@ Array [ "", ], Array [ - 1, + "./basic.css", "@charset \\"UTF-8\\"; /* Comment */ @@ -290,181 +286,113 @@ a[href=\\"\\" i] { ] `; -exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`global\`): module 1`] = ` +exports[`loader should work with "asset" module type: warnings 1`] = `Array []`; + +exports[`loader should work with "sass-loader": errors 1`] = `Array []`; + +exports[`loader should work with "sass-loader": module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../src/index.js??ref--4-0!./imported.css\\"); -var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); -var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./url/img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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.push([module.id, \\"body {\\\\n font: 100% Helvetica, sans-serif;\\\\n color: #333;\\\\n}\\", \\"\\"]); +// Exports +module.exports = exports; " `; -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(''); - }; +exports[`loader should work with "sass-loader": result 1`] = ` +Array [ + Array [ + "./scss/source.scss", + "body { + font: 100% Helvetica, sans-serif; + color: #333; +}", + "", + ], +] +`; - // 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); - } - } - }; +exports[`loader should work with "sass-loader": warnings 1`] = `Array []`; - return list; -}; +exports[`loader should work with ModuleConcatenationPlugin (file-loader): errors 1`] = `Array []`; -function cssWithMappingToString(item, useSourceMap) { - const content = item[1] || ''; - // eslint-disable-next-line prefer-destructuring - const cssMapping = item[3]; +exports[`loader should work with ModuleConcatenationPlugin (file-loader): warnings 1`] = `Array []`; - if (!cssMapping) { - return content; - } +exports[`loader should work with ModuleConcatenationPlugin (url-loader): errors 1`] = `Array []`; - if (useSourceMap && typeof btoa === 'function') { - const sourceMapping = toComment(cssMapping); - const sourceURLs = cssMapping.sources.map( - (source) => \`/*# sourceURL=\${cssMapping.sourceRoot}\${source} */\` - ); +exports[`loader should work with ModuleConcatenationPlugin (url-loader): warnings 1`] = `Array []`; - return [content] - .concat(sourceURLs) - .concat([sourceMapping]) - .join('\\\\n'); - } +exports[`loader should work with ModuleConcatenationPlugin: errors 1`] = `Array []`; - return [content].join('\\\\n'); -} +exports[`loader should work with ModuleConcatenationPlugin: warnings 1`] = `Array []`; -// 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}\`; +exports[`loader should work with empty css: errors 1`] = `Array []`; - return \`/*# \${data} */\`; -} +exports[`loader should work with empty css: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\", \\"\\"]); +// Exports +module.exports = exports; " `; -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, options) => { - if (!options) { - // eslint-disable-next-line no-param-reassign - options = {}; - } - - // eslint-disable-next-line no-underscore-dangle, no-param-reassign - url = 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); - } +exports[`loader should work with empty css: result 1`] = ` +Array [ + Array [ + "./empty.css", + "", + "", + ], +] +`; - if (options.hash) { - // eslint-disable-next-line no-param-reassign - url += options.hash; - } +exports[`loader should work with empty css: warnings 1`] = `Array []`; - // Should url be wrapped? - // See https://drafts.csswg.org/css-values-3/#urls - if (/[\\"'() \\\\t\\\\n]/.test(url) || options.needQuotes) { - return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`; - } +exports[`loader should work with empty options: errors 1`] = `Array []`; - return url; -}; +exports[`loader should work with empty options: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../src/index.js??[ident]!./imported.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./url/img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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 +module.exports = exports; " `; -exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`local\`): module (evaluated) 1`] = ` +exports[`loader should work with empty options: result 1`] = ` Array [ Array [ - 2, - ".KTxgbb6qrDrjy0obHlZaJ { + "../../src/index.js?[ident]!./imported.css", + ".foo { color: red; } ", "", ], Array [ - 1, + "./basic.css", "@charset \\"UTF-8\\"; /* Comment */ -._1PSZ4tK4URrenXyNSoawrx { +.class { color: red; background: url(/webpack/public/path/img.png); } -._3YYoEr128Gk7ZgfRycu4tr { +.class-duplicate-url { background: url(/webpack/public/path/img.png); } @@ -473,13 +401,13 @@ Array [ --bar: 2px; } -._1PSZ4tK4URrenXyNSoawrx { a: b c d; } +.class { a: b c d; } -._1LWD9ZV4XMmN23IPiMONS3 {} +.two {} -._3i3CD1fyX8bvzRt1H0IV-f { a: b c d; } +.u-m\\\\+ { a: b c d; } -._1PSZ4tK4URrenXyNSoawrx { content: \\"\\\\F10C\\" } +.class { content: \\"\\\\F10C\\" } @media only screen and (max-width: 600px) { body { @@ -487,7 +415,7 @@ Array [ } } -._1PSZ4tK4URrenXyNSoawrx { +.class { content: \\"\\\\2193\\"; content: \\"\\\\2193\\\\2193\\"; content: \\"\\\\2193 \\\\2193\\"; @@ -495,53 +423,53 @@ Array [ content: \\"\\\\2193 \\\\2193 \\\\2193\\"; } -._1fWEySWrY44TvDnJ8JNxnE {} -._1fWEySWrY44TvDnJ8JNxnE {} +.-top {} +.\\\\-top {} -#Zmuw5k7Gg4hpgd6CVBEkq {} +#\\\\#test {} -.nz2GDQ2B9PRi6GmzRwbUM { +.grid { display: flex; flex-wrap: wrap; } -.nz2GDQ2B9PRi6GmzRwbUM._1fWEySWrY44TvDnJ8JNxnE { +.grid.\\\\-top { align-items: flex-start; } -.nz2GDQ2B9PRi6GmzRwbUM._1fWEySWrY44TvDnJ8JNxnE { +.grid.-top { align-items: flex-start; } -.nz2GDQ2B9PRi6GmzRwbUM._12Sbi_HmVVsUl9TM-zo3h- { +.grid.\\\\-middle { align-items: center; } -.nz2GDQ2B9PRi6GmzRwbUM.gpFhy6a0Dyg4XrktE4jA3 { +.grid.\\\\-bottom { align-items: flex-end; } -._3i3CD1fyX8bvzRt1H0IV-f {} +.u-m\\\\00002b {} -.YDvxHwoU5TyTmW1oTkKgw {} +.u-m00002b {} -#_3i3CD1fyX8bvzRt1H0IV-f {} +#u-m\\\\+ {} body { font-family: '微软雅黑'; /* some chinese font name */ } -._3txeRUnk43pQ_ialOcI-1F { +.myStyle { content: '\\\\e901'; } -._3txeRUnk43pQ_ialOcI-1F { +.myStyle { 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=\\"©\\" */ +.\\\\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; @@ -558,7 +486,7 @@ body { }; } -._2mQhIWfQwYBHR8C-27Rb-E { +.test { content: \\"\\\\2014\\\\A0\\"; content: \\"\\\\2014 \\\\A0\\"; content: \\"\\\\A0 \\\\2014\\"; @@ -567,11 +495,11 @@ body { background-color: #000\\\\9; } -._2H1jUQC4I1yE2c9CEwXfAS._3HDHfIW-5V2j3qdUcRiaMD ._2eB5NM0D15e1HQWl3AHa8q:before{ +.light.on .bulb:before{ content: '💡'; } -.JNjvwXXuHnb_zjhkwPzBD { +.base64 { background: url(data:img/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAhxJREFUSA3tk71rU1EYxnMTEoJUkowWwdJ2akEHBfGjCiIF6ZylVUKSm2TqZLGI+A/oIu2UXm8C4lAyF4SWji0tdFLo1Eo7VN0SaBEhH7e/Nz0nPTfGOjiaCyfPc5734zlfCQT6X/8E/vUErL81KBaL9y3LSnued5PcITjUOwR3gsFg2bbtjYt6/NGgXC4P1et1l2aPLmpAbD0SidjpdPqgV15PA9d17zQajU8UxHQRK/4G35Q5pveAK8LlI1ZjPMnlcltnyvnvbwaO41xvtVqy7YHztMACq5xnlb9EY3dRdvcGo1kj5wR+t1AofDG0gM+A875E8DNjRCexsrV8Pj9ZqVQitVrtqejxePxjMpmss5hVTB4buXvMb2DyU2tBTRS+BjvNlVYUpPl7iuVO3Gq1uoQx1FtSOW1gPgp5ZWrdBtNmUDgv5asgxQ8F1af5vhY0YjyjuWC3wTszKJz7GBOkcFlQfW2ONq4FjWi+Hj6DRCKxQOK2TlY4x92EuYd5dvMAbYIzfikau3pu5tJ8KxaLLfo0cyKci7tK4TZjUMcoXAmHwzle0Q/RaC5P1GFMyVx9R9Fo9HYqlTrSgqDvFelAqVQa5hmuMR/WGtjAaBdjwBoDQ0ZsnwVMZjKZ9n0Zem8DSeDPdrnZbL6F2l3NOvUYNZk4oVDoRTabPe4EDNJzB0ZcjAYxeoZ2i3FNxQ7BHYw/cB/fldaH//UETgHHO8S44KbfXgAAAABJRU5ErkJggg==); } @@ -596,187 +524,30 @@ a[href=\\"\\" i] { ] `; -exports[`loader should compile with \`css\` entry point (with \`modules\` and scope \`local\`): module 1`] = ` +exports[`loader should work with empty options: warnings 1`] = `Array []`; + +exports[`loader should work: errors 1`] = `Array []`; + +exports[`loader should work: module 1`] = ` "// Imports var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../src/index.js??ref--4-0!./imported.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../src/index.js??[ident]!./imported.css\\"); var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./url/img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +exports = ___CSS_LOADER_API_IMPORT___(false); exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); // Module -exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n._1PSZ4tK4URrenXyNSoawrx {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n._3YYoEr128Gk7ZgfRycu4tr {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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 -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, options) => { - if (!options) { - // eslint-disable-next-line no-param-reassign - options = {}; - } - - // eslint-disable-next-line no-underscore-dangle, no-param-reassign - url = 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); - } - - if (options.hash) { - // eslint-disable-next-line no-param-reassign - url += options.hash; - } - - // Should url be wrapped? - // See https://drafts.csswg.org/css-values-3/#urls - if (/[\\"'() \\\\t\\\\n]/.test(url) || options.needQuotes) { - return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`; - } - - return url; -}; +module.exports = exports; " `; -exports[`loader should compile with \`css\` entry point: module (evaluated) 1`] = ` +exports[`loader should work: result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./imported.css", ".foo { color: red; } @@ -784,7 +555,7 @@ Array [ "", ], Array [ - 1, + "./basic.css", "@charset \\"UTF-8\\"; /* Comment */ @@ -926,1095 +697,4 @@ a[href=\\"\\" i] { ] `; -exports[`loader should compile with \`css\` entry point: module 1`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../src/index.js??ref--4-0!./imported.css\\"); -var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); -var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./url/img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); -// Module -exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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, options) => { - if (!options) { - // eslint-disable-next-line no-param-reassign - options = {}; - } - - // eslint-disable-next-line no-underscore-dangle, no-param-reassign - url = 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); - } - - if (options.hash) { - // eslint-disable-next-line no-param-reassign - url += options.hash; - } - - // Should url be wrapped? - // See https://drafts.csswg.org/css-values-3/#urls - if (/[\\"'() \\\\t\\\\n]/.test(url) || options.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`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../src/index.js??ref--4-0!./imported.css\\"); -var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); -var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./url/img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); -// Module -exports.push([module.id, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(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`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(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 should work with ModuleConcatenationPlugin (file-loader): assets 1`] = ` -"/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = \\"\\"; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 1); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -/* - 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} */\`; -} - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -/* eslint-disable */ -const styles = __webpack_require__(2); - -console.log(styles); - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -// Imports -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(0); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = __webpack_require__(3); -var ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(4); -var ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(5); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); -// Module -exports.push([module.i, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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\\", \\"\\"]); - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -// Imports -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(0); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -// Module -exports.push([module.i, \\".foo {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -module.exports = (url, options) => { - if (!options) { - // eslint-disable-next-line no-param-reassign - options = {}; - } - - // eslint-disable-next-line no-underscore-dangle, no-param-reassign - url = 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); - } - - if (options.hash) { - // eslint-disable-next-line no-param-reassign - url += options.hash; - } - - // Should url be wrapped? - // See https://drafts.csswg.org/css-values-3/#urls - if (/[\\"'() \\\\t\\\\n]/.test(url) || options.needQuotes) { - return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`; - } - - return url; -}; - - -/***/ }), -/* 5 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -\\"use strict\\"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__[\\"default\\"] = (__webpack_require__.p + \\"img.png\\"); - -/***/ }) -/******/ ]); -//# sourceMappingURL=main.bundle.js.map" -`; - -exports[`loader should work with ModuleConcatenationPlugin (file-loader): errors 1`] = `Array []`; - -exports[`loader should work with ModuleConcatenationPlugin (file-loader): warnings 1`] = `Array []`; - -exports[`loader should work with ModuleConcatenationPlugin (url-loader): assets 1`] = ` -"/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = \\"\\"; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 1); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -/* - 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} */\`; -} - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -/* eslint-disable */ -const styles = __webpack_require__(2); - -console.log(styles); - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -// Imports -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(0); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = __webpack_require__(3); -var ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(4); -var ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(5); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); -// Module -exports.push([module.i, \\"@charset \\\\\\"UTF-8\\\\\\";\\\\n\\\\n/* Comment */\\\\n\\\\n.class {\\\\n color: red;\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class-duplicate-url {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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\\", \\"\\"]); - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -// Imports -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(0); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -// Module -exports.push([module.i, \\".foo {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -module.exports = (url, options) => { - if (!options) { - // eslint-disable-next-line no-param-reassign - options = {}; - } - - // eslint-disable-next-line no-underscore-dangle, no-param-reassign - url = 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); - } - - if (options.hash) { - // eslint-disable-next-line no-param-reassign - url += options.hash; - } - - // Should url be wrapped? - // See https://drafts.csswg.org/css-values-3/#urls - if (/[\\"'() \\\\t\\\\n]/.test(url) || options.needQuotes) { - return \`\\"\${url.replace(/\\"/g, '\\\\\\\\\\"').replace(/\\\\n/g, '\\\\\\\\n')}\\"\`; - } - - return url; -}; - - -/***/ }), -/* 5 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -\\"use strict\\"; -__webpack_require__.r(__webpack_exports__); -/* harmony default export */ __webpack_exports__[\\"default\\"] = (\\"data:image/png;base64,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\\"); - -/***/ }) -/******/ ]); -//# sourceMappingURL=main.bundle.js.map" -`; - -exports[`loader should work with ModuleConcatenationPlugin (url-loader): errors 1`] = `Array []`; - -exports[`loader should work with ModuleConcatenationPlugin (url-loader): 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`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); -var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img1x.png\\"); -var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./img2x.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); -// 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_REPLACEMENT_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_REPLACEMENT_1___ + \\");\\\\n}\\\\n}\\\\n\\\\nmain.hero, .hero.main {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") 2x);\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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": errors 2`] = `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 (evaluated) 2`] = ` -Array [ - Array [ - 1, - "body { - font: 100% Helvetica, sans-serif; - color: #333; -}", - "", - ], -] -`; - -exports[`loader using together with "sass-loader": module 1`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -// Module -exports.push([module.id, \\"body {\\\\n font: 100% Helvetica, sans-serif;\\\\n color: #333;\\\\n}\\", \\"\\"]); -" -`; - -exports[`loader using together with "sass-loader": module 2`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(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 []`; - -exports[`loader using together with "sass-loader": warnings 2`] = `Array []`; +exports[`loader should work: warnings 1`] = `Array []`; diff --git a/test/__snapshots__/localsConvention-option.test.js.snap b/test/__snapshots__/localsConvention-option.test.js.snap index 4925e0ac..637ddd50 100644 --- a/test/__snapshots__/localsConvention-option.test.js.snap +++ b/test/__snapshots__/localsConvention-option.test.js.snap @@ -1,30 +1,38 @@ // 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 should work when not specified: errors 1`] = `Array []`; + +exports[`"localsConvention" option should work when not specified: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".erBXHZCN_thRYfCnk-aH8 {\\\\n color: blue;\\\\n}\\\\n\\\\n._2YsQE-S0o0NRXfC6XNApz2 {\\\\n color: blue;\\\\n}\\\\n\\\\n._3gGBcJHZU3seQVP5aq7Ksq {\\\\n color: red;\\\\n}\\\\n\\\\na {\\\\n color: yellow;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"bar\\", + \\"my-btn-info_is-disabled\\": \\"value\\", + \\"btn-info_is-disabled\\": \\"erBXHZCN_thRYfCnk-aH8\\", + \\"btn--info_is-disabled_1\\": \\"_2YsQE-S0o0NRXfC6XNApz2\\", + \\"simple\\": \\"_3gGBcJHZU3seQVP5aq7Ksq\\" +}; +module.exports = exports; +" `; -exports[`localsConvention option asIs: module (evaluated) 1`] = ` +exports[`"localsConvention" option should work when not specified: result 1`] = ` Array [ Array [ - 1, - "._2HovG-ymIjf-Q-jdQr_LQ- { + "./modules/localsConvention/localsConvention.css", + ".erBXHZCN_thRYfCnk-aH8 { color: blue; } -.aF9yrid0BHOaiL3bSWCyJ { +._2YsQE-S0o0NRXfC6XNApz2 { color: blue; } -._2UqJ0qi8H2Q5R46tr_dUvz { +._3gGBcJHZU3seQVP5aq7Ksq { color: red; } @@ -37,36 +45,41 @@ a { ] `; -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 should work when not specified: warnings 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "asIs": errors 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "asIs": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".erBXHZCN_thRYfCnk-aH8 {\\\\n color: blue;\\\\n}\\\\n\\\\n._2YsQE-S0o0NRXfC6XNApz2 {\\\\n color: blue;\\\\n}\\\\n\\\\n._3gGBcJHZU3seQVP5aq7Ksq {\\\\n color: red;\\\\n}\\\\n\\\\na {\\\\n color: yellow;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"bar\\", + \\"my-btn-info_is-disabled\\": \\"value\\", + \\"btn-info_is-disabled\\": \\"erBXHZCN_thRYfCnk-aH8\\", + \\"btn--info_is-disabled_1\\": \\"_2YsQE-S0o0NRXfC6XNApz2\\", + \\"simple\\": \\"_3gGBcJHZU3seQVP5aq7Ksq\\" +}; +module.exports = exports; +" `; -exports[`localsConvention option camelCase: module (evaluated) 1`] = ` +exports[`"localsConvention" option should work with a value equal to "asIs": result 1`] = ` Array [ Array [ - 1, - "._2HovG-ymIjf-Q-jdQr_LQ- { + "./modules/localsConvention/localsConvention.css", + ".erBXHZCN_thRYfCnk-aH8 { color: blue; } -.aF9yrid0BHOaiL3bSWCyJ { +._2YsQE-S0o0NRXfC6XNApz2 { color: blue; } -._2UqJ0qi8H2Q5R46tr_dUvz { +._3gGBcJHZU3seQVP5aq7Ksq { color: red; } @@ -79,33 +92,44 @@ a { ] `; -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 should work with a value equal to "asIs": warnings 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "camelCase": errors 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "camelCase": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".erBXHZCN_thRYfCnk-aH8 {\\\\n color: blue;\\\\n}\\\\n\\\\n._2YsQE-S0o0NRXfC6XNApz2 {\\\\n color: blue;\\\\n}\\\\n\\\\n._3gGBcJHZU3seQVP5aq7Ksq {\\\\n color: red;\\\\n}\\\\n\\\\na {\\\\n color: yellow;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"bar\\", + \\"my-btn-info_is-disabled\\": \\"value\\", + \\"myBtnInfoIsDisabled\\": \\"value\\", + \\"btn-info_is-disabled\\": \\"erBXHZCN_thRYfCnk-aH8\\", + \\"btnInfoIsDisabled\\": \\"erBXHZCN_thRYfCnk-aH8\\", + \\"btn--info_is-disabled_1\\": \\"_2YsQE-S0o0NRXfC6XNApz2\\", + \\"btnInfoIsDisabled1\\": \\"_2YsQE-S0o0NRXfC6XNApz2\\", + \\"simple\\": \\"_3gGBcJHZU3seQVP5aq7Ksq\\" +}; +module.exports = exports; +" `; -exports[`localsConvention option camelCaseOnly: module (evaluated) 1`] = ` +exports[`"localsConvention" option should work with a value equal to "camelCase": result 1`] = ` Array [ Array [ - 1, - "._2HovG-ymIjf-Q-jdQr_LQ- { + "./modules/localsConvention/localsConvention.css", + ".erBXHZCN_thRYfCnk-aH8 { color: blue; } -.aF9yrid0BHOaiL3bSWCyJ { +._2YsQE-S0o0NRXfC6XNApz2 { color: blue; } -._2UqJ0qi8H2Q5R46tr_dUvz { +._3gGBcJHZU3seQVP5aq7Ksq { color: red; } @@ -118,36 +142,41 @@ a { ] `; -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 should work with a value equal to "camelCase": warnings 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "camelCaseOnly": errors 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "camelCaseOnly": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".erBXHZCN_thRYfCnk-aH8 {\\\\n color: blue;\\\\n}\\\\n\\\\n._2YsQE-S0o0NRXfC6XNApz2 {\\\\n color: blue;\\\\n}\\\\n\\\\n._3gGBcJHZU3seQVP5aq7Ksq {\\\\n color: red;\\\\n}\\\\n\\\\na {\\\\n color: yellow;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"bar\\", + \\"myBtnInfoIsDisabled\\": \\"value\\", + \\"btnInfoIsDisabled\\": \\"erBXHZCN_thRYfCnk-aH8\\", + \\"btnInfoIsDisabled1\\": \\"_2YsQE-S0o0NRXfC6XNApz2\\", + \\"simple\\": \\"_3gGBcJHZU3seQVP5aq7Ksq\\" +}; +module.exports = exports; +" `; -exports[`localsConvention option dashes: module (evaluated) 1`] = ` +exports[`"localsConvention" option should work with a value equal to "camelCaseOnly": result 1`] = ` Array [ Array [ - 1, - "._2HovG-ymIjf-Q-jdQr_LQ- { + "./modules/localsConvention/localsConvention.css", + ".erBXHZCN_thRYfCnk-aH8 { color: blue; } -.aF9yrid0BHOaiL3bSWCyJ { +._2YsQE-S0o0NRXfC6XNApz2 { color: blue; } -._2UqJ0qi8H2Q5R46tr_dUvz { +._3gGBcJHZU3seQVP5aq7Ksq { color: red; } @@ -160,33 +189,44 @@ a { ] `; -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 should work with a value equal to "camelCaseOnly": warnings 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "dashes": errors 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "dashes": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".erBXHZCN_thRYfCnk-aH8 {\\\\n color: blue;\\\\n}\\\\n\\\\n._2YsQE-S0o0NRXfC6XNApz2 {\\\\n color: blue;\\\\n}\\\\n\\\\n._3gGBcJHZU3seQVP5aq7Ksq {\\\\n color: red;\\\\n}\\\\n\\\\na {\\\\n color: yellow;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"bar\\", + \\"my-btn-info_is-disabled\\": \\"value\\", + \\"myBtnInfo_isDisabled\\": \\"value\\", + \\"btn-info_is-disabled\\": \\"erBXHZCN_thRYfCnk-aH8\\", + \\"btnInfo_isDisabled\\": \\"erBXHZCN_thRYfCnk-aH8\\", + \\"btn--info_is-disabled_1\\": \\"_2YsQE-S0o0NRXfC6XNApz2\\", + \\"btnInfo_isDisabled_1\\": \\"_2YsQE-S0o0NRXfC6XNApz2\\", + \\"simple\\": \\"_3gGBcJHZU3seQVP5aq7Ksq\\" +}; +module.exports = exports; +" `; -exports[`localsConvention option dashesOnly: module (evaluated) 1`] = ` +exports[`"localsConvention" option should work with a value equal to "dashes": result 1`] = ` Array [ Array [ - 1, - "._2HovG-ymIjf-Q-jdQr_LQ- { + "./modules/localsConvention/localsConvention.css", + ".erBXHZCN_thRYfCnk-aH8 { color: blue; } -.aF9yrid0BHOaiL3bSWCyJ { +._2YsQE-S0o0NRXfC6XNApz2 { color: blue; } -._2UqJ0qi8H2Q5R46tr_dUvz { +._3gGBcJHZU3seQVP5aq7Ksq { color: red; } @@ -199,33 +239,41 @@ a { ] `; -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 should work with a value equal to "dashes": warnings 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "dashesOnly": errors 1`] = `Array []`; + +exports[`"localsConvention" option should work with a value equal to "dashesOnly": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".erBXHZCN_thRYfCnk-aH8 {\\\\n color: blue;\\\\n}\\\\n\\\\n._2YsQE-S0o0NRXfC6XNApz2 {\\\\n color: blue;\\\\n}\\\\n\\\\n._3gGBcJHZU3seQVP5aq7Ksq {\\\\n color: red;\\\\n}\\\\n\\\\na {\\\\n color: yellow;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"bar\\", + \\"myBtnInfo_isDisabled\\": \\"value\\", + \\"btnInfo_isDisabled\\": \\"erBXHZCN_thRYfCnk-aH8\\", + \\"btnInfo_isDisabled_1\\": \\"_2YsQE-S0o0NRXfC6XNApz2\\", + \\"simple\\": \\"_3gGBcJHZU3seQVP5aq7Ksq\\" +}; +module.exports = exports; +" `; -exports[`localsConvention option not specified: module (evaluated) 1`] = ` +exports[`"localsConvention" option should work with a value equal to "dashesOnly": result 1`] = ` Array [ Array [ - 1, - "._2HovG-ymIjf-Q-jdQr_LQ- { + "./modules/localsConvention/localsConvention.css", + ".erBXHZCN_thRYfCnk-aH8 { color: blue; } -.aF9yrid0BHOaiL3bSWCyJ { +._2YsQE-S0o0NRXfC6XNApz2 { color: blue; } -._2UqJ0qi8H2Q5R46tr_dUvz { +._3gGBcJHZU3seQVP5aq7Ksq { color: red; } @@ -238,4 +286,4 @@ a { ] `; -exports[`localsConvention option not specified: warnings 1`] = `Array []`; +exports[`"localsConvention" option should work with a value equal to "dashesOnly": warnings 1`] = `Array []`; diff --git a/test/__snapshots__/modules-option.test.js.snap b/test/__snapshots__/modules-option.test.js.snap index f4fb5883..3bedff47 100644 --- a/test/__snapshots__/modules-option.test.js.snap +++ b/test/__snapshots__/modules-option.test.js.snap @@ -1,81 +1,133 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`modules case \`animation\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option issue #286: errors 1`] = `Array []`; -exports[`modules case \`animation\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option issue #286: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"./dep.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".b--main { }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"main\\": \\"b--main \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"red\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`animation\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option issue #286: result 1`] = ` Array [ Array [ - 1, - "a { - animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out; - -} + "./modules/issue-286/dep.css", + ".a--red { color: red } +", + "", + ], + Array [ + "./modules/issue-286/source.css", + ".b--main { } ", "", ], ] `; -exports[`modules case \`animation\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option issue #286: warnings 1`] = `Array []`; -exports[`modules case \`animation\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option issue #636: errors 1`] = `Array []`; -exports[`modules case \`animation\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`; +exports[`"modules" option issue #636: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??[ident]!./foo.scss\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".prefix-bar {\\\\n}\\", \\"\\"]); +// Exports +exports.locals = { + \\"bar\\": \\"prefix-bar \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"foo\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`animation\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option issue #636: result 1`] = ` Array [ Array [ - 1, - "a { - animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out; - -} -", + "../../src/index.js?[ident]!./modules/issue-636/foo.scss", + ".prefix-foo { + color: red; +}", + "", + ], + Array [ + "./modules/issue-636/source.scss", + ".prefix-bar { +}", "", ], ] `; -exports[`modules case \`animation\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option issue #636: warnings 1`] = `Array []`; -exports[`modules case \`animation\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option issue #861: errors 1`] = `Array []`; -exports[`modules case \`animation\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "fade-in": "_3XZSV759G141XcbTZgtQkF", - "slide-right": "_2jinakhsfBWcUNZSsOxUHz", -} +exports[`"modules" option issue #861: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??[ident]!./node_modules/@localpackage/color.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../src/index.js??[ident]!./node_modules/@localpackage/style.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._2TvhMv03l8C6o3eyE8OUU3 {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color-grey\\"] + \\";\\\\n margin: 0;\\\\n padding: 0;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color-grey\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color-grey\\"] + \\"\\", + \\"copyright\\": \\"_2TvhMv03l8C6o3eyE8OUU3 \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"type-heading\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`animation\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option issue #861: result 1`] = ` Array [ Array [ - 1, - "a { - animation: _2jinakhsfBWcUNZSsOxUHz 300ms forwards ease-out, _3XZSV759G141XcbTZgtQkF 300ms forwards ease-out; - + "../../src/index.js?[ident]!./modules/issue-861/node_modules/@localpackage/color.css", + " +", + "", + ], + Array [ + "../../src/index.js?[ident]!./modules/issue-861/node_modules/@otherlocalpackage/style.css", + "._3_UmHSyGSKHfkAuB_4PF0r { + display: flex; } ", "", ], -] -`; - -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; - + "../../src/index.js?[ident]!./modules/issue-861/node_modules/@localpackage/style.css", + "._3tsKb6RyTte_M89z1nGia_ { + color: red; + margin: 0; + padding: 0; +} +", + "", + ], + Array [ + "./modules/issue-861/resolving-from-node_modules.css", + "._2TvhMv03l8C6o3eyE8OUU3 { + color: gray; + margin: 0; + padding: 0; } ", "", @@ -83,24 +135,30 @@ Array [ ] `; -exports[`modules case \`animation\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option issue #861: warnings 1`] = `Array []`; -exports[`modules case \`animation\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option issue #966: 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" option issue #966: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".button.hey {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"button\\": \\"button.hey\\" +}; +module.exports = exports; +" `; -exports[`modules case \`animation\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option issue #966: result 1`] = ` Array [ Array [ - 1, - "a { - animation: _slide-right 300ms forwards ease-out, _fade-in 300ms forwards ease-out; - + "./modules/issue-966/button.css", + ".button.hey { + color: red; } ", "", @@ -108,24 +166,40 @@ Array [ ] `; -exports[`modules case \`animation\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option issue #966: warnings 1`] = `Array []`; -exports[`modules case \`animation\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option issue #967: errors 1`] = `Array []`; -exports[`modules case \`animation\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "fade-in": "_3XZSV759G141XcbTZgtQkF", - "slide-right": "_2jinakhsfBWcUNZSsOxUHz", -} +exports[`"modules" option issue #967: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".modules-issue-967-path-placeholder__foo__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {\\\\n color: red;\\\\n}\\\\n\\\\n.modules-issue-967-path-placeholder__foo\\\\\\\\/bar__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {\\\\n color: blue;\\\\n}\\\\n\\\\n.modules-issue-967-path-placeholder__\\\\\\\\[\\\\\\\\/\\\\\\\\?\\\\\\\\<\\\\\\\\>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\3A \\\\\\\\*\\\\\\\\|\\\\\\\\\\\\\\"\\\\\\\\3A \\\\\\\\]__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- {\\\\n color: yellow;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"modules-issue-967-path-placeholder__foo__--sep---sep---sep---sep----sep---sep---sep---sep---sep--\\", + \\"foo/bar\\": \\"modules-issue-967-path-placeholder__foo/bar__--sep---sep---sep---sep----sep---sep---sep---sep---sep--\\", + \\"[/?<>\\\\\\\\\\\\\\\\:*|\\\\\\":]\\": \\"modules-issue-967-path-placeholder__[/?<>\\\\\\\\\\\\\\\\:*|\\\\\\":]__--sep---sep---sep---sep----sep---sep---sep---sep---sep--\\" +}; +module.exports = exports; +" `; -exports[`modules case \`animation\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option issue #967: result 1`] = ` Array [ Array [ - 1, - "a { - animation: _2jinakhsfBWcUNZSsOxUHz 300ms forwards ease-out, _3XZSV759G141XcbTZgtQkF 300ms forwards ease-out; + "./modules/issue-967/path-placeholder.css", + ".modules-issue-967-path-placeholder__foo__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- { + color: red; +} +.modules-issue-967-path-placeholder__foo\\\\/bar__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- { + color: blue; +} + +.modules-issue-967-path-placeholder__\\\\[\\\\/\\\\?\\\\<\\\\>\\\\\\\\\\\\\\\\\\\\3A \\\\*\\\\|\\\\\\"\\\\3A \\\\]__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- { + color: yellow; } ", "", @@ -133,18 +207,30 @@ Array [ ] `; -exports[`modules case \`animation\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option issue #967: warnings 1`] = `Array []`; -exports[`modules case \`class-names\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option issue #980: errors 1`] = `Array []`; -exports[`modules case \`class-names\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option issue #980: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".file-with-many-dots-in-name_a_22FL3 {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"file-with-many-dots-in-name_a_22FL3\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`class-names\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option issue #980: result 1`] = ` Array [ Array [ - 1, - ".class-1, .class-10 .bar-1 { - color: green; + "./modules/issue-980/file.with.many.dots.in.name.css", + ".file-with-many-dots-in-name_a_22FL3 { + color: red; } ", "", @@ -152,1014 +238,1241 @@ Array [ ] `; -exports[`modules case \`class-names\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option issue #980: warnings 1`] = `Array []`; -exports[`modules case \`class-names\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option issue #995: errors 1`] = `Array []`; -exports[`modules case \`class-names\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`; +exports[`"modules" option issue #995: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"/* class=\\\\\\"😀\\\\\\" */\\\\n.a {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.a.b {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.a .b {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.😀 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.😀.😓 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.😀 .😓 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.\\\\\\\\1F600.\\\\\\\\1F613 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.\\\\\\\\1F600 .\\\\\\\\1F613 {\\\\n color: red;\\\\n}\\\\n\\\\n/* Local */\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.\\\\\\\\1F600.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.\\\\\\\\1F600 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .a .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .\\\\\\\\1F600 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\ndiv:not(.\\\\\\\\1F600) {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .b {\\\\n color: red;\\\\n}\\\\n\\\\n.b .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F613 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F613 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 > .\\\\\\\\1F600 > .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"😀\\", + \\"b\\": \\"😀\\", + \\"c\\": \\"😀\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`class-names\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option issue #995: result 1`] = ` Array [ Array [ - 1, - ".class-1, .class-10 .bar-1 { - color: green; + "./modules/issue-995/issue-995.css", + "/* class=\\"😀\\" */ +.a { + color: red; } -", - "", - ], -] -`; -exports[`modules case \`class-names\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +/* class=\\"😀 😓\\" */ +.a.b { + color: red; +} -exports[`modules case \`class-names\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +/* class=\\"😀\\" > class=\\"😓\\" */ +.a .b { + color: red; +} -exports[`modules case \`class-names\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "bar-1": "_3GpM4NK17tELexNK1Szvws", - "class-1": "_1GNZOTxutjEX7cZ3Ec7knU", - "class-10": "_15N9BXxWirSgwhYficwysK", +/* class=\\"😀\\" */ +.😀 { + color: red; } -`; -exports[`modules case \`class-names\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._1GNZOTxutjEX7cZ3Ec7knU, ._15N9BXxWirSgwhYficwysK ._3GpM4NK17tELexNK1Szvws { - color: green; +/* class=\\"😀 😓\\" */ +.😀.😓 { + color: red; } -", - "", - ], -] -`; -exports[`modules case \`class-names\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +/* class=\\"😀\\" > class=\\"😓\\" */ +.😀 .😓 { + color: red; +} -exports[`modules case \`class-names\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +/* class=\\"😀\\" */ +.\\\\1F600 { + color: red; +} -exports[`modules case \`class-names\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`; +/* class=\\"😀 😓\\" */ +.\\\\1F600.\\\\1F613 { + color: red; +} -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; +/* class=\\"😀\\" > class=\\"😓\\" */ +.\\\\1F600 .\\\\1F613 { + color: red; } -", - "", - ], -] -`; -exports[`modules case \`class-names\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +/* Local */ -exports[`modules case \`class-names\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +/* class=\\"😀\\" */ +.\\\\1F600 { + color: red; +} -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", +/* class=\\"😀 😓\\" */ +.\\\\1F600.\\\\1F600 { + color: red; } -`; -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; +/* class=\\"😀\\" > class=\\"😓\\" */ +.\\\\1F600 .\\\\1F600 { + color: red; } -", - "", - ], -] -`; -exports[`modules case \`class-names\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +.\\\\1F600 .a .\\\\1F600 { + color: red; +} -exports[`modules case \`class-names\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +.\\\\1F600 .\\\\1F600 .\\\\1F600 { + color: red; +} -exports[`modules case \`class-names\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "bar-1": "_3GpM4NK17tELexNK1Szvws", - "class-1": "_1GNZOTxutjEX7cZ3Ec7knU", - "class-10": "_15N9BXxWirSgwhYficwysK", +div:not(.\\\\1F600) { + color: red; } -`; -exports[`modules case \`class-names\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._1GNZOTxutjEX7cZ3Ec7knU, ._15N9BXxWirSgwhYficwysK ._3GpM4NK17tELexNK1Szvws { - color: green; +.\\\\1F600 .b { + color: red; } -", - "", - ], -] -`; -exports[`modules case \`class-names\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +.b .\\\\1F600 { + color: red; +} -exports[`modules case \`comment-in-local\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +.\\\\1F613 .\\\\1F600 { + color: red; +} -exports[`modules case \`comment-in-local\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +.\\\\1F613 .\\\\1F600 { + color: red; +} -exports[`modules case \`comment-in-local\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ":local(.c1/*.c2*/.c3) { background: red; } +.\\\\1F600 > .\\\\1F600 > .\\\\1F600 { + color: red; +} ", "", ], ] `; -exports[`modules case \`comment-in-local\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option issue #995: warnings 1`] = `Array []`; -exports[`modules case \`comment-in-local\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should avoid unnecessary "require": 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" option should avoid unnecessary "require": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??[ident]!./imported-simple.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._1UgilPFsYxSK4gX5ZkTYCj {\\\\n color: red;\\\\n}\\\\n\\\\n._3V5dPWs_xG519C1PGI1Njd {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"simple-foo\\": \\"_1UgilPFsYxSK4gX5ZkTYCj \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"imported-simple\\"] + \\"\\", + \\"simple-bar\\": \\"_3V5dPWs_xG519C1PGI1Njd \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"imported-simple\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`comment-in-local\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should avoid unnecessary "require": result 1`] = ` Array [ Array [ - 1, - "._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; } + "../../src/index.js?[ident]!./modules/composes/imported-simple.css", + "._15HqoDBChWnuDGxJ6jOtUV { + display: block; +} ", "", ], -] -`; + Array [ + "./modules/composes/composes-duplicate.css", + "._1UgilPFsYxSK4gX5ZkTYCj { + color: 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", +._3V5dPWs_xG519C1PGI1Njd { + color: red; } -`; - -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" option should avoid unnecessary "require": warnings 1`] = `Array []`; -exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should keep order: 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" option should keep order: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??[ident]!./order-1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../src/index.js??[ident]!./order-2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\".Wjk4jowq_W5p9UqAWNj8p {\\\\n display: block;\\\\n}\\\\n\\\\n._1hTJaGPJyAIYbIwkbYwOGW {\\\\n display: inline;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"simple\\": \\"Wjk4jowq_W5p9UqAWNj8p \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"order-1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"order-2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"order-1-1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"order-2-2\\"] + \\"\\", + \\"simple-other\\": \\"_1hTJaGPJyAIYbIwkbYwOGW \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"order-1\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should keep order: result 1`] = ` Array [ Array [ - 1, - "._c1/*.c2*/._c3 { background: red; } + "../../src/index.js?[ident]!./modules/order/order-1.css", + "._2r9YTNQEwCk0bSiZCuc7Ol { + color: red; +} + +.He7W3er8OE_ZP1m7aP7eb { + color: aliceblue; +} ", "", ], -] -`; - -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", + Array [ + "../../src/index.js?[ident]!./modules/order/order-2.css", + "._18ve634MAK3QtupmRo9lo3 { + color: blue; } -`; -exports[`modules case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._c1/*.c2*/._c3 { background: red; } +.z6vp19LKudIK0nOAVOTAc { + color: azure; +} ", "", ], -] -`; - -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", + Array [ + "./modules/order/index.css", + ".Wjk4jowq_W5p9UqAWNj8p { + display: block; } -`; -exports[`modules case \`comment-in-local\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; } +._1hTJaGPJyAIYbIwkbYwOGW { + display: inline; +} ", "", ], ] `; -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" option should keep order: warnings 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 - */ +exports[`"modules" option should should work with two leading hyphens: errors 1`] = `Array []`; -.bg { - background-image: url(/webpack/public/path/img.png); +exports[`"modules" option should should work with two leading hyphens: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._--test {\\\\n background: red;\\\\n}\\\\n\\\\n._--_test {\\\\n background: blue;\\\\n}\\\\n\\\\n._--className {\\\\n background: red;\\\\n}\\\\n\\\\n#_--someId {\\\\n background: green;\\\\n}\\\\n\\\\n._--className ._--subClass {\\\\n color: green;\\\\n}\\\\n\\\\n#_--someId ._--subClass {\\\\n color: blue;\\\\n}\\\\n\\\\n._---a0-34a___f {\\\\n color: red;\\\\n}\\\\n\\\\n._--m_x_\\\\\\\\@ {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n._--B\\\\\\\\&W\\\\\\\\? {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n._--\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n._--\\\\\\\\31 a2b3c {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#_--\\\\\\\\#fake-id {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#_---a-b-c- {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#_--© {\\\\n color: black;\\\\n}\\\\n\\\\n._--♥ { background: lime; }\\\\n._--© { background: lime; }\\\\n._--“‘’” { background: lime; }\\\\n._--☺☃ { background: lime; }\\\\n._--⌘⌥ { background: lime; }\\\\n._--𝄞♪♩♫♬ { background: lime; }\\\\n._--💩 { background: lime; }\\\\n._--\\\\\\\\? { background: lime; }\\\\n._--\\\\\\\\@ { background: lime; }\\\\n._--\\\\\\\\. { background: lime; }\\\\n._--\\\\\\\\3A \\\\\\\\) { background: lime; }\\\\n._--\\\\\\\\3A \\\\\\\\\`\\\\\\\\( { background: lime; }\\\\n._--\\\\\\\\31 23 { background: lime; }\\\\n._--\\\\\\\\31 a2b3c { background: lime; }\\\\n._--\\\\\\\\
{ background: lime; }\\\\n._--\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\> { background: lime; }\\\\n._--\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\. { background: lime; }\\\\n._--\\\\\\\\# { background: lime; }\\\\n._--\\\\\\\\#\\\\\\\\# { background: lime; }\\\\n._--\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\# { background: lime; }\\\\n._--\\\\\\\\_ { background: lime; }\\\\n._--\\\\\\\\{\\\\\\\\} { background: lime; }\\\\n._--\\\\\\\\#fake\\\\\\\\-id { background: lime; }\\\\n._--foo\\\\\\\\.bar { background: lime; }\\\\n._--\\\\\\\\3A hover { background: lime; }\\\\n._--\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active { background: lime; }\\\\n._--\\\\\\\\[attr\\\\\\\\=value\\\\\\\\] { background: lime; }\\\\n._--f\\\\\\\\/o\\\\\\\\/o { background: lime; }\\\\n._--f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o { background: lime; }\\\\n._--f\\\\\\\\*o\\\\\\\\*o { background: lime; }\\\\n._--f\\\\\\\\!o\\\\\\\\!o { background: lime; }\\\\n._--f\\\\\\\\'o\\\\\\\\'o { background: lime; }\\\\n._--f\\\\\\\\~o\\\\\\\\~o { background: lime; }\\\\n._--f\\\\\\\\+o\\\\\\\\+o { background: lime; }\\\\n\\\\n._--foo\\\\\\\\/bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._--foo\\\\\\\\\\\\\\\\bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._--foo\\\\\\\\/bar\\\\\\\\/baz {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._--foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"_--123\\", + \\"test\\": \\"_--test\\", + \\"_test\\": \\"_--_test\\", + \\"className\\": \\"_--className\\", + \\"someId\\": \\"_--someId\\", + \\"subClass\\": \\"_--subClass\\", + \\"-a0-34a___f\\": \\"_---a0-34a___f\\", + \\"m_x_@\\": \\"_--m_x_@\\", + \\"B&W?\\": \\"_--B&W?\\", + \\":\`(\\": \\"_--:\`(\\", + \\"1a2b3c\\": \\"_--1a2b3c\\", + \\"#fake-id\\": \\"_--#fake-id\\", + \\"-a-b-c-\\": \\"_---a-b-c-\\", + \\"©\\": \\"_--©\\", + \\"♥\\": \\"_--♥\\", + \\"“‘’”\\": \\"_--“‘’”\\", + \\"☺☃\\": \\"_--☺☃\\", + \\"⌘⌥\\": \\"_--⌘⌥\\", + \\"𝄞♪♩♫♬\\": \\"_--𝄞♪♩♫♬\\", + \\"💩\\": \\"_--💩\\", + \\"?\\": \\"_--?\\", + \\"@\\": \\"_--@\\", + \\".\\": \\"_--.\\", + \\":)\\": \\"_--:)\\", + \\"
\\": \\"_--
\\", + \\"<><<<>><>\\": \\"_--<><<<>><>\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"_--++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\", + \\"#\\": \\"_--#\\", + \\"##\\": \\"_--##\\", + \\"#.#.#\\": \\"_--#.#.#\\", + \\"_\\": \\"_--_\\", + \\"{}\\": \\"_--{}\\", + \\"foo.bar\\": \\"_--foo.bar\\", + \\":hover\\": \\"_--:hover\\", + \\":hover:focus:active\\": \\"_--:hover:focus:active\\", + \\"[attr=value]\\": \\"_--[attr=value]\\", + \\"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\\", + \\"f+o+o\\": \\"_--f+o+o\\", + \\"foo/bar\\": \\"_--foo/bar\\", + \\"foo\\\\\\\\bar\\": \\"_--foo\\\\\\\\bar\\", + \\"foo/bar/baz\\": \\"_--foo/bar/baz\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"_--foo\\\\\\\\bar\\\\\\\\baz\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should should work with two leading hyphens: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + "._--test { + background: red; } -/* - * a ' below - */ -", - "", - ], -] -`; - -exports[`modules case \`comments\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +._--_test { + background: blue; +} -exports[`modules case \`comments\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +._--className { + background: red; +} -exports[`modules case \`comments\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`; +#_--someId { + background: green; +} -exports[`modules case \`comments\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "/* - * a ' above - */ +._--className ._--subClass { + color: green; +} -.bg { - background-image: url(/webpack/public/path/img.png); +#_--someId ._--subClass { + color: blue; } -/* - * a ' below - */ -", - "", - ], -] -`; +._---a0-34a___f { + color: red; +} -exports[`modules case \`comments\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +._--m_x_\\\\@ { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`comments\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +._--B\\\\&W\\\\? { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`comments\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "bg": "_28-VAWbJ8gQCgX50Jcqtzs", +/* matches elements with class=\\":\`(\\" */ +._--\\\\3A \\\\\`\\\\( { + color: aqua; } -`; -exports[`modules case \`comments\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "/* - * a ' above - */ +/* matches elements with class=\\"1a2b3c\\" */ +._--\\\\31 a2b3c { + color: aliceblue; +} -._28-VAWbJ8gQCgX50Jcqtzs { - background-image: url(/webpack/public/path/img.png); +/* matches the element with id=\\"#fake-id\\" */ +#_--\\\\#fake-id { + color: antiquewhite; } -/* - * a ' below - */ -", - "", - ], -] -`; +/* matches the element with id=\\"-a-b-c-\\" */ +#_---a-b-c- { + color: azure; +} -exports[`modules case \`comments\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +/* matches the element with id=\\"©\\" */ +#_--© { + color: black; +} -exports[`modules case \`comments\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +._--♥ { 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; } -exports[`modules case \`comments\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`; +._--foo\\\\/bar { + background: hotpink; +} -exports[`modules case \`comments\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "/* - * a ' above - */ +._--foo\\\\\\\\bar { + background: hotpink; +} -.bg { - background-image: url(/webpack/public/path/img.png); +._--foo\\\\/bar\\\\/baz { + background: hotpink; } -/* - * a ' below - */ +._--foo\\\\\\\\bar\\\\\\\\baz { + background: hotpink; +} ", "", ], ] `; -exports[`modules case \`comments\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should should work with two leading hyphens: warnings 1`] = `Array []`; -exports[`modules case \`comments\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should should work with two leading underscore: errors 1`] = `Array []`; -exports[`modules case \`comments\` (\`modules\` value is \`object with mode local)\`: locals 1`] = ` -Object { - "bg": "_bg", +exports[`"modules" option should should work with two leading underscore: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".__test {\\\\n background: red;\\\\n}\\\\n\\\\n.___test {\\\\n background: blue;\\\\n}\\\\n\\\\n.__className {\\\\n background: red;\\\\n}\\\\n\\\\n#__someId {\\\\n background: green;\\\\n}\\\\n\\\\n.__className .__subClass {\\\\n color: green;\\\\n}\\\\n\\\\n#__someId .__subClass {\\\\n color: blue;\\\\n}\\\\n\\\\n.__-a0-34a___f {\\\\n color: red;\\\\n}\\\\n\\\\n.__m_x_\\\\\\\\@ {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.__B\\\\\\\\&W\\\\\\\\? {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.__\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.__\\\\\\\\31 a2b3c {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#__\\\\\\\\#fake-id {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#__-a-b-c- {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#__© {\\\\n color: black;\\\\n}\\\\n\\\\n.__♥ { background: lime; }\\\\n.__© { background: lime; }\\\\n.__“‘’” { background: lime; }\\\\n.__☺☃ { background: lime; }\\\\n.__⌘⌥ { background: lime; }\\\\n.__𝄞♪♩♫♬ { background: lime; }\\\\n.__💩 { background: lime; }\\\\n.__\\\\\\\\? { background: lime; }\\\\n.__\\\\\\\\@ { background: lime; }\\\\n.__\\\\\\\\. { background: lime; }\\\\n.__\\\\\\\\3A \\\\\\\\) { background: lime; }\\\\n.__\\\\\\\\3A \\\\\\\\\`\\\\\\\\( { background: lime; }\\\\n.__\\\\\\\\31 23 { background: lime; }\\\\n.__\\\\\\\\31 a2b3c { background: lime; }\\\\n.__\\\\\\\\
{ background: lime; }\\\\n.__\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\> { background: lime; }\\\\n.__\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\. { background: lime; }\\\\n.__\\\\\\\\# { background: lime; }\\\\n.__\\\\\\\\#\\\\\\\\# { background: lime; }\\\\n.__\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\# { background: lime; }\\\\n.__\\\\\\\\_ { background: lime; }\\\\n.__\\\\\\\\{\\\\\\\\} { background: lime; }\\\\n.__\\\\\\\\#fake\\\\\\\\-id { background: lime; }\\\\n.__foo\\\\\\\\.bar { background: lime; }\\\\n.__\\\\\\\\3A hover { background: lime; }\\\\n.__\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active { background: lime; }\\\\n.__\\\\\\\\[attr\\\\\\\\=value\\\\\\\\] { background: lime; }\\\\n.__f\\\\\\\\/o\\\\\\\\/o { background: lime; }\\\\n.__f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o { background: lime; }\\\\n.__f\\\\\\\\*o\\\\\\\\*o { background: lime; }\\\\n.__f\\\\\\\\!o\\\\\\\\!o { background: lime; }\\\\n.__f\\\\\\\\'o\\\\\\\\'o { background: lime; }\\\\n.__f\\\\\\\\~o\\\\\\\\~o { background: lime; }\\\\n.__f\\\\\\\\+o\\\\\\\\+o { background: lime; }\\\\n\\\\n.__foo\\\\\\\\/bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.__foo\\\\\\\\\\\\\\\\bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.__foo\\\\\\\\/bar\\\\\\\\/baz {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.__foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"__123\\", + \\"test\\": \\"__test\\", + \\"_test\\": \\"___test\\", + \\"className\\": \\"__className\\", + \\"someId\\": \\"__someId\\", + \\"subClass\\": \\"__subClass\\", + \\"-a0-34a___f\\": \\"__-a0-34a___f\\", + \\"m_x_@\\": \\"__m_x_@\\", + \\"B&W?\\": \\"__B&W?\\", + \\":\`(\\": \\"__:\`(\\", + \\"1a2b3c\\": \\"__1a2b3c\\", + \\"#fake-id\\": \\"__#fake-id\\", + \\"-a-b-c-\\": \\"__-a-b-c-\\", + \\"©\\": \\"__©\\", + \\"♥\\": \\"__♥\\", + \\"“‘’”\\": \\"__“‘’”\\", + \\"☺☃\\": \\"__☺☃\\", + \\"⌘⌥\\": \\"__⌘⌥\\", + \\"𝄞♪♩♫♬\\": \\"__𝄞♪♩♫♬\\", + \\"💩\\": \\"__💩\\", + \\"?\\": \\"__?\\", + \\"@\\": \\"__@\\", + \\".\\": \\"__.\\", + \\":)\\": \\"__:)\\", + \\"
\\": \\"__
\\", + \\"<><<<>><>\\": \\"__<><<<>><>\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"__++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\", + \\"#\\": \\"__#\\", + \\"##\\": \\"__##\\", + \\"#.#.#\\": \\"__#.#.#\\", + \\"_\\": \\"___\\", + \\"{}\\": \\"__{}\\", + \\"foo.bar\\": \\"__foo.bar\\", + \\":hover\\": \\"__:hover\\", + \\":hover:focus:active\\": \\"__:hover:focus:active\\", + \\"[attr=value]\\": \\"__[attr=value]\\", + \\"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\\", + \\"f+o+o\\": \\"__f+o+o\\", + \\"foo/bar\\": \\"__foo/bar\\", + \\"foo\\\\\\\\bar\\": \\"__foo\\\\\\\\bar\\", + \\"foo/bar/baz\\": \\"__foo/bar/baz\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"__foo\\\\\\\\bar\\\\\\\\baz\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should should work with two leading underscore: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + ".__test { + background: red; } -`; -exports[`modules case \`comments\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "/* - * a ' above - */ +.___test { + background: blue; +} -._bg { - background-image: url(/webpack/public/path/img.png); +.__className { + background: red; } -/* - * a ' below - */ -", - "", - ], -] -`; +#__someId { + background: green; +} -exports[`modules case \`comments\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +.__className .__subClass { + color: green; +} -exports[`modules case \`comments\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +#__someId .__subClass { + color: blue; +} -exports[`modules case \`comments\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "bg": "_28-VAWbJ8gQCgX50Jcqtzs", +.__-a0-34a___f { + color: red; } -`; -exports[`modules case \`comments\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "/* - * a ' above - */ +.__m_x_\\\\@ { + margin-left: auto !important; + margin-right: auto !important; +} -._28-VAWbJ8gQCgX50Jcqtzs { - background-image: url(/webpack/public/path/img.png); +.__B\\\\&W\\\\? { + margin-left: auto !important; + margin-right: auto !important; } -/* - * a ' below - */ -", - "", - ], -] -`; +/* matches elements with class=\\":\`(\\" */ +.__\\\\3A \\\\\`\\\\( { + color: aqua; +} -exports[`modules case \`comments\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +/* matches elements with class=\\"1a2b3c\\" */ +.__\\\\31 a2b3c { + color: aliceblue; +} -exports[`modules case \`composes\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +/* matches the element with id=\\"#fake-id\\" */ +#__\\\\#fake-id { + color: antiquewhite; +} -exports[`modules case \`composes\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +/* matches the element with id=\\"-a-b-c-\\" */ +#__-a-b-c- { + color: azure; +} -exports[`modules case \`composes\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ":local(.c1) { a: 1; } -:local(.c2) { composes: c1; b: 1; } -", - "", - ], -] -`; +/* matches the element with id=\\"©\\" */ +#__© { + color: black; +} -exports[`modules case \`composes\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +.__♥ { 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; +} -exports[`modules case \`composes\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +.__foo\\\\\\\\bar { + background: hotpink; +} -exports[`modules case \`composes\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "c1": "_2lVGKlfYXzywV6_acW1a3J", - "c2": "_2FPXZHdIWogtLWkFQcjYj7 _2lVGKlfYXzywV6_acW1a3J", +.__foo\\\\/bar\\\\/baz { + background: hotpink; } -`; -exports[`modules case \`composes\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._2lVGKlfYXzywV6_acW1a3J { a: 1; } -._2FPXZHdIWogtLWkFQcjYj7 { b: 1; } +.__foo\\\\\\\\bar\\\\\\\\baz { + background: hotpink; +} ", "", ], ] `; -exports[`modules case \`composes\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should should work with two leading underscore: warnings 1`] = `Array []`; -exports[`modules case \`composes\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should support resolving in composes: 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" option should support resolving in composes: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??[ident]!./values.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../src/index.js??[ident]!./something.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_2___ = require(\\"-!../../../../src/index.js??[ident]!./imported-simple.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_3___ = require(\\"-!../../../../src/index.js??[ident]!./relative.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_4___ = require(\\"-!../../../../src/index.js??[ident]!./top-relative.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_5___ = require(\\"-!../../../../src/index.js??[ident]!../issue-861/node_modules/package/style.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_6___ = require(\\"-!../../../../src/index.js??[ident]!aliasesComposes/alias.css\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../../src/index.js??[ident]!./test-other.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"../../url/img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +exports.i(___CSS_LOADER_ICSS_IMPORT_2___); +exports.i(___CSS_LOADER_ICSS_IMPORT_3___); +exports.i(___CSS_LOADER_ICSS_IMPORT_4___); +exports.i(___CSS_LOADER_ICSS_IMPORT_5___); +exports.i(___CSS_LOADER_ICSS_IMPORT_6___); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"(min-width: 100px)\\"); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\".fSErEFKw3e7Iv0EmVr4Ii {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\";\\\\n}\\\\n\\\\n._1NrOxbibeQ5qcRoPL7kDtu {\\\\n color: blue;\\\\n}\\\\n\\\\n.djNAVB7y500wM1pkOwuGn {\\\\n display: block;\\\\n}\\\\n\\\\n._291GtMV2HIwa4Iis74myBh {\\\\n width: \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"v-something\\"] + \\";\\\\n}\\\\n\\\\n._2KPSOif5_L54Ue252-4SMZ {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n._1ZuFusdyp6cE2KJ9RECux1 {\\\\n prop: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\";\\\\n duplicate: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n.dMcylihD3G3oGCNWDsAa3 {\\\\n color: red;\\\\n}\\\\n\\\\n._2t9qA9qE4OH2A3DVwUtOFP {\\\\n color: yellow;\\\\n}\\\\n\\\\n._1XQGy4UOqsVVHSULdn-uc6 {\\\\n color: gray;\\\\n}\\\\n\\\\n._3oZRfl5v6W4ji2oerfYhpL {\\\\n color: gray;\\\\n}\\\\n\\\\n._1KLfOsDDmt6EGUIDKukOvV {\\\\n color: gainsboro;\\\\n}\\\\n\\\\n.PxB1r-csu3e3lUOZiD69t {\\\\n color: #BF4040;\\\\n}\\\\n\\\\n._2nUmv-YIlxvzza9j2rJQjJ {\\\\n color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n ._21OP3aGLw7Si4lLuiK3vhf {\\\\n padding: 0 20px;\\\\n }\\\\n}\\\\n\\\\n.\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"s-white\\"] + \\" {\\\\n color: white;\\\\n}\\\\n\\\\n@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"m-small\\"] + \\" {\\\\n ._21OP3aGLw7Si4lLuiK3vhf {\\\\n padding: 20px 20px;\\\\n }\\\\n}\\\\n@value v-comment: /* comment */;\\\\n\\\\n.zbowt65f4EBNzWh_uiPv0 {\\\\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\\\\n._3yApLlXpoidfnd3JfO_WEf {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"v-def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\"\\", + \\"v-other\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\"\\", + \\"s-white\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"s-white\\"] + \\"\\", + \\"m-small\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"m-small\\"] + \\"\\", + \\"v-something\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.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\\": \\"fSErEFKw3e7Iv0EmVr4Ii\\", + \\"class\\": \\"_1NrOxbibeQ5qcRoPL7kDtu\\", + \\"other\\": \\"djNAVB7y500wM1pkOwuGn\\", + \\"other-other\\": \\"_291GtMV2HIwa4Iis74myBh\\", + \\"green\\": \\"_2KPSOif5_L54Ue252-4SMZ\\", + \\"foo\\": \\"_1ZuFusdyp6cE2KJ9RECux1\\", + \\"simple\\": \\"dMcylihD3G3oGCNWDsAa3 \\" + ___CSS_LOADER_ICSS_IMPORT_2___.locals[\\"imported-simple\\"] + \\"\\", + \\"relative\\": \\"_2t9qA9qE4OH2A3DVwUtOFP \\" + ___CSS_LOADER_ICSS_IMPORT_3___.locals[\\"imported-relative\\"] + \\"\\", + \\"top-relative\\": \\"_1XQGy4UOqsVVHSULdn-uc6 \\" + ___CSS_LOADER_ICSS_IMPORT_4___.locals[\\"imported-relative\\"] + \\"\\", + \\"module\\": \\"_3oZRfl5v6W4ji2oerfYhpL \\" + ___CSS_LOADER_ICSS_IMPORT_5___.locals[\\"imported-module\\"] + \\"\\", + \\"alias\\": \\"_1KLfOsDDmt6EGUIDKukOvV \\" + ___CSS_LOADER_ICSS_IMPORT_6___.locals[\\"imported-alias\\"] + \\"\\", + \\"primary-selector\\": \\"PxB1r-csu3e3lUOZiD69t\\", + \\"black-selector\\": \\"_2nUmv-YIlxvzza9j2rJQjJ\\", + \\"header\\": \\"_21OP3aGLw7Si4lLuiK3vhf\\", + \\"foobarbaz\\": \\"zbowt65f4EBNzWh_uiPv0\\", + \\"url\\": \\"_3yApLlXpoidfnd3JfO_WEf\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should support resolving in composes: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/composes/values.css", + " ", "", ], -] -`; - -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; } + "../../src/index.js?[ident]!./modules/composes/something.css", + " ", "", ], -] -`; - -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; } + "../../src/index.js?[ident]!./modules/composes/imported-simple.css", + "._15HqoDBChWnuDGxJ6jOtUV { + display: block; +} ", "", ], -] -`; - -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; } + "../../src/index.js?[ident]!./modules/composes/relative.css", + "._2XpGrQ60AX7p8fQT9hACyH { + display: inline; +} ", "", ], -] -`; - -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; } + "../../src/index.js?[ident]!./modules/composes/top-relative.css", + "._1Ua1iZV27bUg7cs1NExheb { + display: flex; +} ", "", ], -] -`; - -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 + "../../src/index.js?[ident]!./modules/issue-861/node_modules/package/style.css", + ".HM73Ud1_EQz1eaYocwagZ { + display: inline-block; } ", "", ], Array [ - 1, - "._1DZQbqp1oX8etdFa5oSOnV { b: 1; } -._1PKuwglb3xQB3gwJBZx6_G { b: 3; } -._1MtdK0_soIbU20fcYBbRAe { b: 5; } + "../../src/index.js?[ident]!./modules/composes/alias.css", + "._1qxfPu6Vbru-xS0LA5GWJT { + display: table; +} ", "", ], -] -`; - -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", + Array [ + "../../src/index.js?[ident]!./modules/composes/test-other.css", + "._2KbNYW68v_VxbQ8XdpUuGh { + d: d; } -`; - -exports[`modules case \`composes-1\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ +", + "(min-width: 100px)", + ], Array [ - 2, - "._1xYJRliqpSHYzUvktbdaCo { + "./modules/composes/composes.css", + ".fSErEFKw3e7Iv0EmVr4Ii { color: red; } -._1jdJRc6HaM3lHykxBSOeII { +._1NrOxbibeQ5qcRoPL7kDtu { color: blue; } -._3YdnDqqBfyyJ_9JKWIle3X{ - c: d +.djNAVB7y500wM1pkOwuGn { + display: block; } -", - "", - ], - 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 []`; +._291GtMV2HIwa4Iis74myBh { + width: 2112moon; +} -exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +._2KPSOif5_L54Ue252-4SMZ { + color: green; +} -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", +._1ZuFusdyp6cE2KJ9RECux1 { + prop: red; + duplicate: green; } -`; -exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._c2 { +.dMcylihD3G3oGCNWDsAa3 { color: red; } -._c4 { - color: blue; +._2t9qA9qE4OH2A3DVwUtOFP { + color: yellow; } -.test{ - c: d +._1XQGy4UOqsVVHSULdn-uc6 { + color: gray; } -", - "", - ], - 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 []`; +._3oZRfl5v6W4ji2oerfYhpL { + color: gray; +} -exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +._1KLfOsDDmt6EGUIDKukOvV { + color: gainsboro; +} -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", +.PxB1r-csu3e3lUOZiD69t { + color: #BF4040; } -`; -exports[`modules case \`composes-1\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._c2 { - color: red; +._2nUmv-YIlxvzza9j2rJQjJ { + color: black; } -._c4 { - color: blue; +@media (min-width: 960px) { + ._21OP3aGLw7Si4lLuiK3vhf { + padding: 0 20px; + } } -._test{ - c: d +.white { + color: white; } -", - "", - ], - 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 []`; +@media (min-width: 320px) { + ._21OP3aGLw7Si4lLuiK3vhf { + padding: 20px 20px; + } +} +@value v-comment: /* comment */; + +.zbowt65f4EBNzWh_uiPv0 { + 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%; +} -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", +a { + content: 'content'; } -`; -exports[`modules case \`composes-1\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._1xYJRliqpSHYzUvktbdaCo { - color: red; +@supports (content: 'content') { + a { + content: 'content'; + } } -._1jdJRc6HaM3lHykxBSOeII { - color: blue; +[class~='content'] { + color:green; } -._3YdnDqqBfyyJ_9JKWIle3X{ - c: d +._3yApLlXpoidfnd3JfO_WEf { + background: url(/webpack/public/path/img.png); } -", - "", - ], - 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" option should support resolving in composes: warnings 1`] = `Array []`; -exports[`modules case \`composes-2\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work and correctly replace escaped symbols: errors 1`] = `Array []`; -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" option should work and correctly replace escaped symbols: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".test--_cpw {\\\\n background: red;\\\\n}\\\\n\\\\n._test--1dIr {\\\\n background: blue;\\\\n}\\\\n\\\\n.className--2YAI {\\\\n background: red;\\\\n}\\\\n\\\\n#someId--2mXV {\\\\n background: green;\\\\n}\\\\n\\\\n.className--2YAI .subClass--hcOs {\\\\n color: green;\\\\n}\\\\n\\\\n#someId--2mXV .subClass--hcOs {\\\\n color: blue;\\\\n}\\\\n\\\\n.-a0-34a___f--AnzW {\\\\n color: red;\\\\n}\\\\n\\\\n.m_x_\\\\\\\\@--Nqdt {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.B\\\\\\\\&W\\\\\\\\?--IYdL {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\(--riRD {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.\\\\\\\\31 a2b3c--zIJ8 {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#\\\\\\\\#fake-id--3i8C {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#-a-b-c---1LFn {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#©--1rph {\\\\n color: black;\\\\n}\\\\n\\\\n.♥--3hI- { background: lime; }\\\\n.©--1rph { background: lime; }\\\\n.“‘’”--2-Fc { background: lime; }\\\\n.☺☃--1ndr { background: lime; }\\\\n.⌘⌥--gxaZ { background: lime; }\\\\n.𝄞♪♩♫♬--mLhO { background: lime; }\\\\n.💩--2t9K { background: lime; }\\\\n.\\\\\\\\?--2I0o { background: lime; }\\\\n.\\\\\\\\@--sCVd { background: lime; }\\\\n.\\\\\\\\.--1HRZ { background: lime; }\\\\n.\\\\\\\\3A \\\\\\\\)--mhBL { background: lime; }\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\(--riRD { background: lime; }\\\\n.\\\\\\\\31 23--12FW { background: lime; }\\\\n.\\\\\\\\31 a2b3c--zIJ8 { background: lime; }\\\\n.\\\\\\\\
--IjVt { background: lime; }\\\\n.\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\>--oXLW { background: lime; }\\\\n.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.--2HMg { background: lime; }\\\\n.\\\\\\\\#--2hLv { background: lime; }\\\\n.\\\\\\\\#\\\\\\\\#--2LwZ { background: lime; }\\\\n.\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\#--i0DF { background: lime; }\\\\n.\\\\\\\\_--1er0 { background: lime; }\\\\n.\\\\\\\\{\\\\\\\\}--2qPT { background: lime; }\\\\n.\\\\\\\\#fake\\\\\\\\-id--3i8C { background: lime; }\\\\n.foo\\\\\\\\.bar--1Tdk { background: lime; }\\\\n.\\\\\\\\3A hover--1vI4 { background: lime; }\\\\n.\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active--2ElO { background: lime; }\\\\n.\\\\\\\\[attr\\\\\\\\=value\\\\\\\\]--1AJ- { background: lime; }\\\\n.f\\\\\\\\/o\\\\\\\\/o--3Zs0 { background: lime; }\\\\n.f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o--3D2d { background: lime; }\\\\n.f\\\\\\\\*o\\\\\\\\*o--2HQY { background: lime; }\\\\n.f\\\\\\\\!o\\\\\\\\!o--1HIX { background: lime; }\\\\n.f\\\\\\\\'o\\\\\\\\'o--3hCQ { background: lime; }\\\\n.f\\\\\\\\~o\\\\\\\\~o--fXtA { background: lime; }\\\\n.f\\\\\\\\+o\\\\\\\\+o--7duh { background: lime; }\\\\n\\\\n.foo\\\\\\\\/bar--1iGa {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\\\\\\\\\bar--7qaP {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\/bar\\\\\\\\/baz--24g3 {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz--2NRI {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"123--12FW\\", + \\"test\\": \\"test--_cpw\\", + \\"_test\\": \\"_test--1dIr\\", + \\"className\\": \\"className--2YAI\\", + \\"someId\\": \\"someId--2mXV\\", + \\"subClass\\": \\"subClass--hcOs\\", + \\"-a0-34a___f\\": \\"-a0-34a___f--AnzW\\", + \\"m_x_@\\": \\"m_x_@--Nqdt\\", + \\"B&W?\\": \\"B&W?--IYdL\\", + \\":\`(\\": \\":\`(--riRD\\", + \\"1a2b3c\\": \\"1a2b3c--zIJ8\\", + \\"#fake-id\\": \\"#fake-id--3i8C\\", + \\"-a-b-c-\\": \\"-a-b-c---1LFn\\", + \\"©\\": \\"©--1rph\\", + \\"♥\\": \\"♥--3hI-\\", + \\"“‘’”\\": \\"“‘’”--2-Fc\\", + \\"☺☃\\": \\"☺☃--1ndr\\", + \\"⌘⌥\\": \\"⌘⌥--gxaZ\\", + \\"𝄞♪♩♫♬\\": \\"𝄞♪♩♫♬--mLhO\\", + \\"💩\\": \\"💩--2t9K\\", + \\"?\\": \\"?--2I0o\\", + \\"@\\": \\"@--sCVd\\", + \\".\\": \\".--1HRZ\\", + \\":)\\": \\":)--mhBL\\", + \\"
\\": \\"
--IjVt\\", + \\"<><<<>><>\\": \\"<><<<>><>--oXLW\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.--2HMg\\", + \\"#\\": \\"#--2hLv\\", + \\"##\\": \\"##--2LwZ\\", + \\"#.#.#\\": \\"#.#.#--i0DF\\", + \\"_\\": \\"_--1er0\\", + \\"{}\\": \\"{}--2qPT\\", + \\"foo.bar\\": \\"foo.bar--1Tdk\\", + \\":hover\\": \\":hover--1vI4\\", + \\":hover:focus:active\\": \\":hover:focus:active--2ElO\\", + \\"[attr=value]\\": \\"[attr=value]--1AJ-\\", + \\"f/o/o\\": \\"f/o/o--3Zs0\\", + \\"f\\\\\\\\o\\\\\\\\o\\": \\"f\\\\\\\\o\\\\\\\\o--3D2d\\", + \\"f*o*o\\": \\"f*o*o--2HQY\\", + \\"f!o!o\\": \\"f!o!o--1HIX\\", + \\"f'o'o\\": \\"f'o'o--3hCQ\\", + \\"f~o~o\\": \\"f~o~o--fXtA\\", + \\"f+o+o\\": \\"f+o+o--7duh\\", + \\"foo/bar\\": \\"foo/bar--1iGa\\", + \\"foo\\\\\\\\bar\\": \\"foo\\\\\\\\bar--7qaP\\", + \\"foo/bar/baz\\": \\"foo/bar/baz--24g3\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"foo\\\\\\\\bar\\\\\\\\baz--2NRI\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and correctly replace escaped symbols: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + ".test--_cpw { + background: red; +} -exports[`modules case \`composes-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +._test--1dIr { + background: blue; +} -exports[`modules case \`composes-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +.className--2YAI { + background: red; +} -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", +#someId--2mXV { + background: green; } -`; -exports[`modules case \`composes-2\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._3CxjkH18CkEkRZ4FO4v-NQ { - color: red; +.className--2YAI .subClass--hcOs { + color: green; } -.G8VU3XI3HtOvZPlSEb9S3 { +#someId--2mXV .subClass--hcOs { color: blue; } -.test{ - c: d +.-a0-34a___f--AnzW { + color: red; } -", - "", - ], - 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 []`; +.m_x_\\\\@--Nqdt { + margin-left: auto !important; + margin-right: auto !important; +} -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", +.B\\\\&W\\\\?--IYdL { + margin-left: auto !important; + margin-right: auto !important; } -`; -exports[`modules case \`composes-2\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._3CxjkH18CkEkRZ4FO4v-NQ { - color: red; +/* matches elements with class=\\":\`(\\" */ +.\\\\3A \\\\\`\\\\(--riRD { + color: aqua; } -.G8VU3XI3HtOvZPlSEb9S3 { - color: blue; +/* matches elements with class=\\"1a2b3c\\" */ +.\\\\31 a2b3c--zIJ8 { + color: aliceblue; } -._10rrqoQ7Mb3ZcY6LixlnpR{ - c: d +/* matches the element with id=\\"#fake-id\\" */ +#\\\\#fake-id--3i8C { + color: antiquewhite; } -", - "", - ], - Array [ - 1, - "._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; } -._1TPNBQGz_snQ6aGvXARYo0 { b: 3; } -.rkDOmH5RkgZGaQ5Fey09Z { b: 5; } -", - "", - ], -] -`; -exports[`modules case \`composes-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +/* matches the element with id=\\"-a-b-c-\\" */ +#-a-b-c---1LFn { + color: azure; +} -exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +/* matches the element with id=\\"©\\" */ +#©--1rph { + color: black; +} -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", +.♥--3hI- { background: lime; } +.©--1rph { background: lime; } +.“‘’”--2-Fc { background: lime; } +.☺☃--1ndr { background: lime; } +.⌘⌥--gxaZ { background: lime; } +.𝄞♪♩♫♬--mLhO { background: lime; } +.💩--2t9K { background: lime; } +.\\\\?--2I0o { background: lime; } +.\\\\@--sCVd { background: lime; } +.\\\\.--1HRZ { background: lime; } +.\\\\3A \\\\)--mhBL { background: lime; } +.\\\\3A \\\\\`\\\\(--riRD { background: lime; } +.\\\\31 23--12FW { background: lime; } +.\\\\31 a2b3c--zIJ8 { background: lime; } +.\\\\
--IjVt { background: lime; } +.\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\>--oXLW { background: lime; } +.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\.--2HMg { background: lime; } +.\\\\#--2hLv { background: lime; } +.\\\\#\\\\#--2LwZ { background: lime; } +.\\\\#\\\\.\\\\#\\\\.\\\\#--i0DF { background: lime; } +.\\\\_--1er0 { background: lime; } +.\\\\{\\\\}--2qPT { background: lime; } +.\\\\#fake\\\\-id--3i8C { background: lime; } +.foo\\\\.bar--1Tdk { background: lime; } +.\\\\3A hover--1vI4 { background: lime; } +.\\\\3A hover\\\\3A focus\\\\3A active--2ElO { background: lime; } +.\\\\[attr\\\\=value\\\\]--1AJ- { background: lime; } +.f\\\\/o\\\\/o--3Zs0 { background: lime; } +.f\\\\\\\\o\\\\\\\\o--3D2d { background: lime; } +.f\\\\*o\\\\*o--2HQY { background: lime; } +.f\\\\!o\\\\!o--1HIX { background: lime; } +.f\\\\'o\\\\'o--3hCQ { background: lime; } +.f\\\\~o\\\\~o--fXtA { background: lime; } +.f\\\\+o\\\\+o--7duh { background: lime; } + +.foo\\\\/bar--1iGa { + background: hotpink; } -`; -exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._c-2 { - color: red; +.foo\\\\\\\\bar--7qaP { + background: hotpink; } -._c4 { - color: blue; +.foo\\\\/bar\\\\/baz--24g3 { + background: hotpink; } -.test{ - c: d +.foo\\\\\\\\bar\\\\\\\\baz--2NRI { + background: hotpink; } -", - "", - ], - 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" option should work and correctly replace escaped symbols: warnings 1`] = `Array []`; + +exports[`"modules" option should work and has "undefined" context if no context was given: errors 1`] = `Array []`; -exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and has "undefined" context if no context was given: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".foo {\\\\n background: red;\\\\n}\\\\n\\\\n.foo {\\\\n background: blue;\\\\n}\\\\n\\\\n.foo {\\\\n background: red;\\\\n}\\\\n\\\\n#foo {\\\\n background: green;\\\\n}\\\\n\\\\n.foo .foo {\\\\n color: green;\\\\n}\\\\n\\\\n#foo .foo {\\\\n color: blue;\\\\n}\\\\n\\\\n.foo {\\\\n color: red;\\\\n}\\\\n\\\\n.foo {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.foo {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.foo {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.foo {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#foo {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#foo {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#foo {\\\\n color: black;\\\\n}\\\\n\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n\\\\n.foo {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"foo\\", + \\"test\\": \\"foo\\", + \\"_test\\": \\"foo\\", + \\"className\\": \\"foo\\", + \\"someId\\": \\"foo\\", + \\"subClass\\": \\"foo\\", + \\"-a0-34a___f\\": \\"foo\\", + \\"m_x_@\\": \\"foo\\", + \\"B&W?\\": \\"foo\\", + \\":\`(\\": \\"foo\\", + \\"1a2b3c\\": \\"foo\\", + \\"#fake-id\\": \\"foo\\", + \\"-a-b-c-\\": \\"foo\\", + \\"©\\": \\"foo\\", + \\"♥\\": \\"foo\\", + \\"“‘’”\\": \\"foo\\", + \\"☺☃\\": \\"foo\\", + \\"⌘⌥\\": \\"foo\\", + \\"𝄞♪♩♫♬\\": \\"foo\\", + \\"💩\\": \\"foo\\", + \\"?\\": \\"foo\\", + \\"@\\": \\"foo\\", + \\".\\": \\"foo\\", + \\":)\\": \\"foo\\", + \\"
\\": \\"foo\\", + \\"<><<<>><>\\": \\"foo\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"foo\\", + \\"#\\": \\"foo\\", + \\"##\\": \\"foo\\", + \\"#.#.#\\": \\"foo\\", + \\"_\\": \\"foo\\", + \\"{}\\": \\"foo\\", + \\"foo.bar\\": \\"foo\\", + \\":hover\\": \\"foo\\", + \\":hover:focus:active\\": \\"foo\\", + \\"[attr=value]\\": \\"foo\\", + \\"f/o/o\\": \\"foo\\", + \\"f\\\\\\\\o\\\\\\\\o\\": \\"foo\\", + \\"f*o*o\\": \\"foo\\", + \\"f!o!o\\": \\"foo\\", + \\"f'o'o\\": \\"foo\\", + \\"f~o~o\\": \\"foo\\", + \\"f+o+o\\": \\"foo\\", + \\"foo/bar\\": \\"foo\\", + \\"foo\\\\\\\\bar\\": \\"foo\\", + \\"foo/bar/baz\\": \\"foo\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"foo\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and has "undefined" context if no context was given: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + ".foo { + background: red; +} -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", +.foo { + background: blue; } -`; -exports[`modules case \`composes-2\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._c-2 { - color: red; +.foo { + background: red; } -._c4 { +#foo { + background: green; +} + +.foo .foo { + color: green; +} + +#foo .foo { color: blue; } -._test{ - c: d +.foo { + color: red; } -", - "", - ], - 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 []`; +.foo { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`composes-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +.foo { + margin-left: auto !important; + margin-right: auto !important; +} -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", +/* matches elements with class=\\":\`(\\" */ +.foo { + color: aqua; } -`; -exports[`modules case \`composes-2\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._3CxjkH18CkEkRZ4FO4v-NQ { - color: red; +/* matches elements with class=\\"1a2b3c\\" */ +.foo { + color: aliceblue; } -.G8VU3XI3HtOvZPlSEb9S3 { - color: blue; +/* matches the element with id=\\"#fake-id\\" */ +#foo { + color: antiquewhite; } -._10rrqoQ7Mb3ZcY6LixlnpR{ - c: d +/* matches the element with id=\\"-a-b-c-\\" */ +#foo { + color: azure; } -", - "", - ], - Array [ - 1, - "._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; } -._1TPNBQGz_snQ6aGvXARYo0 { b: 3; } -.rkDOmH5RkgZGaQ5Fey09Z { b: 5; } -", - "", - ], -] -`; -exports[`modules case \`composes-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +/* matches the element with id=\\"©\\" */ +#foo { + color: black; +} -exports[`modules case \`composes-multiple\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } + +.foo { + background: hotpink; +} -exports[`modules case \`composes-multiple\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +.foo { + background: hotpink; +} -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\\"; +.foo { + background: hotpink; +} + +.foo { + background: hotpink; } ", "", @@ -1167,113 +1480,186 @@ Array [ ] `; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and has "undefined" context if no context was given: warnings 1`] = `Array []`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and prefix leading hyphen when digit is first: errors 1`] = `Array []`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "abc": "_1bAv4bLL8-hE3a7MyZXrT- _3hEvHUTrMHercKPgTBsK6W _1UYEX_kWsPgokwmdBHI8pU", +exports[`"modules" option should work and prefix leading hyphen when digit is first: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._-1test {\\\\n background: red;\\\\n}\\\\n\\\\n._-1_test {\\\\n background: blue;\\\\n}\\\\n\\\\n._-1className {\\\\n background: red;\\\\n}\\\\n\\\\n#_-1someId {\\\\n background: green;\\\\n}\\\\n\\\\n._-1className ._-1subClass {\\\\n color: green;\\\\n}\\\\n\\\\n#_-1someId ._-1subClass {\\\\n color: blue;\\\\n}\\\\n\\\\n._-1-a0-34a___f {\\\\n color: red;\\\\n}\\\\n\\\\n._-1m_x_\\\\\\\\@ {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n._-1B\\\\\\\\&W\\\\\\\\? {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n._-1\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n._-1\\\\\\\\31 a2b3c {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#_-1\\\\\\\\#fake-id {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#_-1-a-b-c- {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#_-1© {\\\\n color: black;\\\\n}\\\\n\\\\n._-1♥ { background: lime; }\\\\n._-1© { background: lime; }\\\\n._-1“‘’” { background: lime; }\\\\n._-1☺☃ { background: lime; }\\\\n._-1⌘⌥ { background: lime; }\\\\n._-1𝄞♪♩♫♬ { background: lime; }\\\\n._-1💩 { background: lime; }\\\\n._-1\\\\\\\\? { background: lime; }\\\\n._-1\\\\\\\\@ { background: lime; }\\\\n._-1\\\\\\\\. { background: lime; }\\\\n._-1\\\\\\\\3A \\\\\\\\) { background: lime; }\\\\n._-1\\\\\\\\3A \\\\\\\\\`\\\\\\\\( { background: lime; }\\\\n._-1\\\\\\\\31 23 { background: lime; }\\\\n._-1\\\\\\\\31 a2b3c { background: lime; }\\\\n._-1\\\\\\\\
{ background: lime; }\\\\n._-1\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\> { background: lime; }\\\\n._-1\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\. { background: lime; }\\\\n._-1\\\\\\\\# { background: lime; }\\\\n._-1\\\\\\\\#\\\\\\\\# { background: lime; }\\\\n._-1\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\# { background: lime; }\\\\n._-1\\\\\\\\_ { background: lime; }\\\\n._-1\\\\\\\\{\\\\\\\\} { background: lime; }\\\\n._-1\\\\\\\\#fake\\\\\\\\-id { background: lime; }\\\\n._-1foo\\\\\\\\.bar { background: lime; }\\\\n._-1\\\\\\\\3A hover { background: lime; }\\\\n._-1\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active { background: lime; }\\\\n._-1\\\\\\\\[attr\\\\\\\\=value\\\\\\\\] { background: lime; }\\\\n._-1f\\\\\\\\/o\\\\\\\\/o { background: lime; }\\\\n._-1f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o { background: lime; }\\\\n._-1f\\\\\\\\*o\\\\\\\\*o { background: lime; }\\\\n._-1f\\\\\\\\!o\\\\\\\\!o { background: lime; }\\\\n._-1f\\\\\\\\'o\\\\\\\\'o { background: lime; }\\\\n._-1f\\\\\\\\~o\\\\\\\\~o { background: lime; }\\\\n._-1f\\\\\\\\+o\\\\\\\\+o { background: lime; }\\\\n\\\\n._-1foo\\\\\\\\/bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._-1foo\\\\\\\\\\\\\\\\bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._-1foo\\\\\\\\/bar\\\\\\\\/baz {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._-1foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"_-1123\\", + \\"test\\": \\"_-1test\\", + \\"_test\\": \\"_-1_test\\", + \\"className\\": \\"_-1className\\", + \\"someId\\": \\"_-1someId\\", + \\"subClass\\": \\"_-1subClass\\", + \\"-a0-34a___f\\": \\"_-1-a0-34a___f\\", + \\"m_x_@\\": \\"_-1m_x_@\\", + \\"B&W?\\": \\"_-1B&W?\\", + \\":\`(\\": \\"_-1:\`(\\", + \\"1a2b3c\\": \\"_-11a2b3c\\", + \\"#fake-id\\": \\"_-1#fake-id\\", + \\"-a-b-c-\\": \\"_-1-a-b-c-\\", + \\"©\\": \\"_-1©\\", + \\"♥\\": \\"_-1♥\\", + \\"“‘’”\\": \\"_-1“‘’”\\", + \\"☺☃\\": \\"_-1☺☃\\", + \\"⌘⌥\\": \\"_-1⌘⌥\\", + \\"𝄞♪♩♫♬\\": \\"_-1𝄞♪♩♫♬\\", + \\"💩\\": \\"_-1💩\\", + \\"?\\": \\"_-1?\\", + \\"@\\": \\"_-1@\\", + \\".\\": \\"_-1.\\", + \\":)\\": \\"_-1:)\\", + \\"
\\": \\"_-1
\\", + \\"<><<<>><>\\": \\"_-1<><<<>><>\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"_-1++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\", + \\"#\\": \\"_-1#\\", + \\"##\\": \\"_-1##\\", + \\"#.#.#\\": \\"_-1#.#.#\\", + \\"_\\": \\"_-1_\\", + \\"{}\\": \\"_-1{}\\", + \\"foo.bar\\": \\"_-1foo.bar\\", + \\":hover\\": \\"_-1:hover\\", + \\":hover:focus:active\\": \\"_-1:hover:focus:active\\", + \\"[attr=value]\\": \\"_-1[attr=value]\\", + \\"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\\", + \\"f+o+o\\": \\"_-1f+o+o\\", + \\"foo/bar\\": \\"_-1foo/bar\\", + \\"foo\\\\\\\\bar\\": \\"_-1foo\\\\\\\\bar\\", + \\"foo/bar/baz\\": \\"_-1foo/bar/baz\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"_-1foo\\\\\\\\bar\\\\\\\\baz\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and prefix leading hyphen when digit is first: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + "._-1test { + background: red; } -`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._3hEvHUTrMHercKPgTBsK6W { - color: red; +._-1_test { + background: blue; } -", - "", - ], - Array [ - 3, - "._1UYEX_kWsPgokwmdBHI8pU { + +._-1className { + background: red; +} + +#_-1someId { + background: green; +} + +._-1className ._-1subClass { + color: green; +} + +#_-1someId ._-1subClass { color: blue; } -", - "", - ], - Array [ - 1, - "._1bAv4bLL8-hE3a7MyZXrT- { + +._-1-a0-34a___f { + color: red; } -", - "", - ], -] -`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +._-1m_x_\\\\@ { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`composes-multiple\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +._-1B\\\\&W\\\\? { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`composes-multiple\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "abc": "_1bAv4bLL8-hE3a7MyZXrT- _3hEvHUTrMHercKPgTBsK6W _1UYEX_kWsPgokwmdBHI8pU", +/* matches elements with class=\\":\`(\\" */ +._-1\\\\3A \\\\\`\\\\( { + color: aqua; } -`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._3hEvHUTrMHercKPgTBsK6W { - color: red; +/* matches elements with class=\\"1a2b3c\\" */ +._-1\\\\31 a2b3c { + color: aliceblue; } -", - "", - ], - Array [ - 3, - "._1UYEX_kWsPgokwmdBHI8pU { - color: blue; + +/* matches the element with id=\\"#fake-id\\" */ +#_-1\\\\#fake-id { + color: antiquewhite; } -", - "", - ], - Array [ - 1, - "._1bAv4bLL8-hE3a7MyZXrT- { + +/* matches the element with id=\\"-a-b-c-\\" */ +#_-1-a-b-c- { + color: azure; } -", - "", - ], -] -`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +/* matches the element with id=\\"©\\" */ +#_-1© { + color: black; +} -exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +._-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; } -exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "abc": "_abc _def1 _def2", +._-1foo\\\\/bar { + background: hotpink; } -`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._def1 { - color: red; +._-1foo\\\\\\\\bar { + background: hotpink; } -", - "", - ], - Array [ - 3, - "._def2 { - color: blue; + +._-1foo\\\\/bar\\\\/baz { + background: hotpink; } -", - "", - ], - Array [ - 1, - "._abc { + +._-1foo\\\\\\\\bar\\\\\\\\baz { + background: hotpink; } ", "", @@ -1281,124 +1667,186 @@ Array [ ] `; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and prefix leading hyphen when digit is first: warnings 1`] = `Array []`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and respect the "context" option: errors 1`] = `Array []`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: locals 1`] = ` -Object { - "abc": "_abc _def1 _def2", +exports[`"modules" option should work and respect the "context" option: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._3bArYx5R {\\\\n background: red;\\\\n}\\\\n\\\\n.XTGsNhBt {\\\\n background: blue;\\\\n}\\\\n\\\\n._2ilfWoxp {\\\\n background: red;\\\\n}\\\\n\\\\n#_3v-9Lk1C {\\\\n background: green;\\\\n}\\\\n\\\\n._2ilfWoxp ._3DLY7Ja5 {\\\\n color: green;\\\\n}\\\\n\\\\n#_3v-9Lk1C ._3DLY7Ja5 {\\\\n color: blue;\\\\n}\\\\n\\\\n._2skz9EDS {\\\\n color: red;\\\\n}\\\\n\\\\n._1pEJLEFa {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n._36Mz6bXX {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n._3smFtgP1 {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n._3nWh_bmc {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#_3zyOTdoW {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#SXlBpmLd {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#_3wIdKrg5 {\\\\n color: black;\\\\n}\\\\n\\\\n._3CvZATcw { background: lime; }\\\\n._3wIdKrg5 { background: lime; }\\\\n._1lLtTh58 { background: lime; }\\\\n._129OOBpF { background: lime; }\\\\n._31l8-xW6 { background: lime; }\\\\n._3PTmP7dH { background: lime; }\\\\n._3iDx9JjF { background: lime; }\\\\n.gjylLYRz { background: lime; }\\\\n.t5XxN6Cw { background: lime; }\\\\n.fEcdI_Ta { background: lime; }\\\\n._3JwMk5Ks { background: lime; }\\\\n._3smFtgP1 { background: lime; }\\\\n._30YAJl6C { background: lime; }\\\\n._3nWh_bmc { background: lime; }\\\\n.juMfCdyH { background: lime; }\\\\n._1nZHf2m5 { background: lime; }\\\\n._3tH-JgLJ { background: lime; }\\\\n._1d4pWlls { background: lime; }\\\\n._1yrD9kGf { background: lime; }\\\\n._181tN6YI { background: lime; }\\\\n._3XX_EoMh { background: lime; }\\\\n._1okItBzL { background: lime; }\\\\n._3zyOTdoW { background: lime; }\\\\n.D1UTMFUQ { background: lime; }\\\\n._1VdiVnid { background: lime; }\\\\n._3bwG403y { background: lime; }\\\\n._2dg-ho4t { background: lime; }\\\\n._3MAXcubw { background: lime; }\\\\n.S0VDfqvq { background: lime; }\\\\n._1Dj0PRAS { background: lime; }\\\\n._3SZwCzRS { background: lime; }\\\\n.mapSsRAG { background: lime; }\\\\n._10Kpk0ys { background: lime; }\\\\n._3t38eY4A { background: lime; }\\\\n\\\\n._37a0QYL7 {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._2hUYlBhh {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._1GrpvCLQ {\\\\n background: hotpink;\\\\n}\\\\n\\\\n._2iqkFI_a {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"_30YAJl6C\\", + \\"test\\": \\"_3bArYx5R\\", + \\"_test\\": \\"XTGsNhBt\\", + \\"className\\": \\"_2ilfWoxp\\", + \\"someId\\": \\"_3v-9Lk1C\\", + \\"subClass\\": \\"_3DLY7Ja5\\", + \\"-a0-34a___f\\": \\"_2skz9EDS\\", + \\"m_x_@\\": \\"_1pEJLEFa\\", + \\"B&W?\\": \\"_36Mz6bXX\\", + \\":\`(\\": \\"_3smFtgP1\\", + \\"1a2b3c\\": \\"_3nWh_bmc\\", + \\"#fake-id\\": \\"_3zyOTdoW\\", + \\"-a-b-c-\\": \\"SXlBpmLd\\", + \\"©\\": \\"_3wIdKrg5\\", + \\"♥\\": \\"_3CvZATcw\\", + \\"“‘’”\\": \\"_1lLtTh58\\", + \\"☺☃\\": \\"_129OOBpF\\", + \\"⌘⌥\\": \\"_31l8-xW6\\", + \\"𝄞♪♩♫♬\\": \\"_3PTmP7dH\\", + \\"💩\\": \\"_3iDx9JjF\\", + \\"?\\": \\"gjylLYRz\\", + \\"@\\": \\"t5XxN6Cw\\", + \\".\\": \\"fEcdI_Ta\\", + \\":)\\": \\"_3JwMk5Ks\\", + \\"
\\": \\"juMfCdyH\\", + \\"<><<<>><>\\": \\"_1nZHf2m5\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"_3tH-JgLJ\\", + \\"#\\": \\"_1d4pWlls\\", + \\"##\\": \\"_1yrD9kGf\\", + \\"#.#.#\\": \\"_181tN6YI\\", + \\"_\\": \\"_3XX_EoMh\\", + \\"{}\\": \\"_1okItBzL\\", + \\"foo.bar\\": \\"D1UTMFUQ\\", + \\":hover\\": \\"_1VdiVnid\\", + \\":hover:focus:active\\": \\"_3bwG403y\\", + \\"[attr=value]\\": \\"_2dg-ho4t\\", + \\"f/o/o\\": \\"_3MAXcubw\\", + \\"f\\\\\\\\o\\\\\\\\o\\": \\"S0VDfqvq\\", + \\"f*o*o\\": \\"_1Dj0PRAS\\", + \\"f!o!o\\": \\"_3SZwCzRS\\", + \\"f'o'o\\": \\"mapSsRAG\\", + \\"f~o~o\\": \\"_10Kpk0ys\\", + \\"f+o+o\\": \\"_3t38eY4A\\", + \\"foo/bar\\": \\"_37a0QYL7\\", + \\"foo\\\\\\\\bar\\": \\"_2hUYlBhh\\", + \\"foo/bar/baz\\": \\"_1GrpvCLQ\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"_2iqkFI_a\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and respect the "context" option: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + "._3bArYx5R { + background: red; } -`; -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; +.XTGsNhBt { + background: blue; } -", - "", - ], - Array [ - 1, - "._abc { + +._2ilfWoxp { + background: red; } -", - "", - ], -] -`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +#_3v-9Lk1C { + background: green; +} -exports[`modules case \`composes-multiple\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +._2ilfWoxp ._3DLY7Ja5 { + color: green; +} -exports[`modules case \`composes-multiple\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "abc": "_1bAv4bLL8-hE3a7MyZXrT- _3hEvHUTrMHercKPgTBsK6W _1UYEX_kWsPgokwmdBHI8pU", +#_3v-9Lk1C ._3DLY7Ja5 { + color: blue; } -`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._3hEvHUTrMHercKPgTBsK6W { +._2skz9EDS { color: red; } -", - "", - ], - Array [ - 3, - "._1UYEX_kWsPgokwmdBHI8pU { - color: blue; + +._1pEJLEFa { + margin-left: auto !important; + margin-right: auto !important; } -", - "", - ], - Array [ - 1, - "._1bAv4bLL8-hE3a7MyZXrT- { + +._36Mz6bXX { + margin-left: auto !important; + margin-right: auto !important; } -", - "", - ], -] -`; -exports[`modules case \`composes-multiple\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +/* matches elements with class=\\":\`(\\" */ +._3smFtgP1 { + color: aqua; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +/* matches elements with class=\\"1a2b3c\\" */ +._3nWh_bmc { + color: aliceblue; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +/* matches the element with id=\\"#fake-id\\" */ +#_3zyOTdoW { + color: antiquewhite; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ":local(.abc) { - composes: def from \\"./file.css\\"; +/* matches the element with id=\\"-a-b-c-\\" */ +#SXlBpmLd { + color: azure; } -", - "", - ], -] -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +/* matches the element with id=\\"©\\" */ +#_3wIdKrg5 { + color: black; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +._3CvZATcw { background: lime; } +._3wIdKrg5 { background: lime; } +._1lLtTh58 { background: lime; } +._129OOBpF { background: lime; } +._31l8-xW6 { background: lime; } +._3PTmP7dH { background: lime; } +._3iDx9JjF { background: lime; } +.gjylLYRz { background: lime; } +.t5XxN6Cw { background: lime; } +.fEcdI_Ta { background: lime; } +._3JwMk5Ks { background: lime; } +._3smFtgP1 { background: lime; } +._30YAJl6C { background: lime; } +._3nWh_bmc { background: lime; } +.juMfCdyH { background: lime; } +._1nZHf2m5 { background: lime; } +._3tH-JgLJ { background: lime; } +._1d4pWlls { background: lime; } +._1yrD9kGf { background: lime; } +._181tN6YI { background: lime; } +._3XX_EoMh { background: lime; } +._1okItBzL { background: lime; } +._3zyOTdoW { background: lime; } +.D1UTMFUQ { background: lime; } +._1VdiVnid { background: lime; } +._3bwG403y { background: lime; } +._2dg-ho4t { background: lime; } +._3MAXcubw { background: lime; } +.S0VDfqvq { background: lime; } +._1Dj0PRAS { background: lime; } +._3SZwCzRS { background: lime; } +.mapSsRAG { background: lime; } +._10Kpk0ys { background: lime; } +._3t38eY4A { background: lime; } + +._37a0QYL7 { + background: hotpink; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "abc": "_3sT-Lzs6aj6TM9J3mM7_Cj zu3DT3PNuTYdVravHX310", +._2hUYlBhh { + background: hotpink; } -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - ".zu3DT3PNuTYdVravHX310 { - color: red; +._1GrpvCLQ { + background: hotpink; } -", - "", - ], - Array [ - 1, - "._3sT-Lzs6aj6TM9J3mM7_Cj { + +._2iqkFI_a { + background: hotpink; } ", "", @@ -1406,119 +1854,186 @@ Array [ ] `; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and respect the "context" option: warnings 1`] = `Array []`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and respect the "getLocalIdent" option: errors 1`] = `Array []`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "abc": "_3sT-Lzs6aj6TM9J3mM7_Cj zu3DT3PNuTYdVravHX310", +exports[`"modules" option should work and respect the "getLocalIdent" option: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".foo {\\\\n background: red;\\\\n}\\\\n\\\\n.foo {\\\\n background: blue;\\\\n}\\\\n\\\\n.foo {\\\\n background: red;\\\\n}\\\\n\\\\n#foo {\\\\n background: green;\\\\n}\\\\n\\\\n.foo .foo {\\\\n color: green;\\\\n}\\\\n\\\\n#foo .foo {\\\\n color: blue;\\\\n}\\\\n\\\\n.foo {\\\\n color: red;\\\\n}\\\\n\\\\n.foo {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.foo {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.foo {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.foo {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#foo {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#foo {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#foo {\\\\n color: black;\\\\n}\\\\n\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n.foo { background: lime; }\\\\n\\\\n.foo {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"foo\\", + \\"test\\": \\"foo\\", + \\"_test\\": \\"foo\\", + \\"className\\": \\"foo\\", + \\"someId\\": \\"foo\\", + \\"subClass\\": \\"foo\\", + \\"-a0-34a___f\\": \\"foo\\", + \\"m_x_@\\": \\"foo\\", + \\"B&W?\\": \\"foo\\", + \\":\`(\\": \\"foo\\", + \\"1a2b3c\\": \\"foo\\", + \\"#fake-id\\": \\"foo\\", + \\"-a-b-c-\\": \\"foo\\", + \\"©\\": \\"foo\\", + \\"♥\\": \\"foo\\", + \\"“‘’”\\": \\"foo\\", + \\"☺☃\\": \\"foo\\", + \\"⌘⌥\\": \\"foo\\", + \\"𝄞♪♩♫♬\\": \\"foo\\", + \\"💩\\": \\"foo\\", + \\"?\\": \\"foo\\", + \\"@\\": \\"foo\\", + \\".\\": \\"foo\\", + \\":)\\": \\"foo\\", + \\"
\\": \\"foo\\", + \\"<><<<>><>\\": \\"foo\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"foo\\", + \\"#\\": \\"foo\\", + \\"##\\": \\"foo\\", + \\"#.#.#\\": \\"foo\\", + \\"_\\": \\"foo\\", + \\"{}\\": \\"foo\\", + \\"foo.bar\\": \\"foo\\", + \\":hover\\": \\"foo\\", + \\":hover:focus:active\\": \\"foo\\", + \\"[attr=value]\\": \\"foo\\", + \\"f/o/o\\": \\"foo\\", + \\"f\\\\\\\\o\\\\\\\\o\\": \\"foo\\", + \\"f*o*o\\": \\"foo\\", + \\"f!o!o\\": \\"foo\\", + \\"f'o'o\\": \\"foo\\", + \\"f~o~o\\": \\"foo\\", + \\"f+o+o\\": \\"foo\\", + \\"foo/bar\\": \\"foo\\", + \\"foo\\\\\\\\bar\\": \\"foo\\", + \\"foo/bar/baz\\": \\"foo\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"foo\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and respect the "getLocalIdent" option: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + ".foo { + background: red; } -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - ".zu3DT3PNuTYdVravHX310 { - color: red; +.foo { + background: blue; } -", - "", - ], - Array [ - 1, - "._3sT-Lzs6aj6TM9J3mM7_Cj { + +.foo { + background: red; } -", - "", - ], -] -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +#foo { + background: green; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +.foo .foo { + color: green; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "abc": "_abc _def", +#foo .foo { + color: blue; } -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._def { +.foo { color: red; } -", - "", - ], - Array [ - 1, - "._abc { + +.foo { + margin-left: auto !important; + margin-right: auto !important; } -", - "", - ], -] -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +.foo { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +/* matches elements with class=\\":\`(\\" */ +.foo { + color: aqua; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: locals 1`] = ` -Object { - "abc": "_abc _def", +/* matches elements with class=\\"1a2b3c\\" */ +.foo { + color: aliceblue; } -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - "._def { - color: red; +/* matches the element with id=\\"#fake-id\\" */ +#foo { + color: antiquewhite; } -", - "", - ], - Array [ - 1, - "._abc { + +/* matches the element with id=\\"-a-b-c-\\" */ +#foo { + color: azure; } -", - "", - ], -] -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +/* matches the element with id=\\"©\\" */ +#foo { + color: black; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } +.foo { background: lime; } + +.foo { + background: hotpink; +} -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "abc": "_3sT-Lzs6aj6TM9J3mM7_Cj zu3DT3PNuTYdVravHX310", +.foo { + background: hotpink; } -`; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - ".zu3DT3PNuTYdVravHX310 { - color: red; +.foo { + background: hotpink; } -", - "", - ], - Array [ - 1, - "._3sT-Lzs6aj6TM9J3mM7_Cj { + +.foo { + background: hotpink; } ", "", @@ -1526,114 +2041,186 @@ Array [ ] `; -exports[`modules case \`composes-with-importing\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and respect the "getLocalIdent" option: warnings 1`] = `Array []`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and respect the "hashPrefix" option: 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; +exports[`"modules" option should work and respect the "hashPrefix" option: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".test--0142b21a44dabb9819108414c865df64 {\\\\n background: red;\\\\n}\\\\n\\\\n._test--cde93c8860a038e1411d22cb771488ac {\\\\n background: blue;\\\\n}\\\\n\\\\n.className--c26790b0ff95d07b06b20d60cf577fd0 {\\\\n background: red;\\\\n}\\\\n\\\\n#someId--8eb7b7f9ce9981fd21fd6d5fc4381bf6 {\\\\n background: green;\\\\n}\\\\n\\\\n.className--c26790b0ff95d07b06b20d60cf577fd0 .subClass--54070e7ec2a737162df117984ecc1761 {\\\\n color: green;\\\\n}\\\\n\\\\n#someId--8eb7b7f9ce9981fd21fd6d5fc4381bf6 .subClass--54070e7ec2a737162df117984ecc1761 {\\\\n color: blue;\\\\n}\\\\n\\\\n.-a0-34a___f--e6b44b8956c576006aee9cdfc7b8d960 {\\\\n color: red;\\\\n}\\\\n\\\\n.m_x_\\\\\\\\@--fbb667cb25a70369de60821c8e36b6fd {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.B\\\\\\\\&W\\\\\\\\?--f1decb173a621f94b1a405675462d8d2 {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\(--0cb50f97a33928f08d2935be79b3fb60 {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.\\\\\\\\31 a2b3c--4fd20a7ba770527d2b5181e00d5edc42 {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#\\\\\\\\#fake-id--f50da82e1d107cda50fa45b135c86822 {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#-a-b-c---db03ce70db75ed1c1bce599b1d18a186 {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#©--7e0826759ac2aeb5fca6e32aa1edb329 {\\\\n color: black;\\\\n}\\\\n\\\\n.♥--e5560e4053337bd76daf9c2e75d3d7d0 { background: lime; }\\\\n.©--7e0826759ac2aeb5fca6e32aa1edb329 { background: lime; }\\\\n.“‘’”--8e1e3e4cc7221b3ff51633038fafe426 { background: lime; }\\\\n.☺☃--ebe5c837d5daf12d16f0daa8c61eb11e { background: lime; }\\\\n.⌘⌥--a85dfad97e5b6b370e7c1477411c7af2 { background: lime; }\\\\n.𝄞♪♩♫♬--4c4549c449045769b60d0b58e8938127 { background: lime; }\\\\n.💩--864ce6a5b06391cf964f32c546bfda16 { background: lime; }\\\\n.\\\\\\\\?--03cb0d319a1c01d96b21cce53cc35bf4 { background: lime; }\\\\n.\\\\\\\\@--dd774107a0c2a338e9f095f7f70b54d7 { background: lime; }\\\\n.\\\\\\\\.--e11fe8c7f53154b0b2d6cc27502a200e { background: lime; }\\\\n.\\\\\\\\3A \\\\\\\\)--a796bbeca4dff990227350b8dd6f9034 { background: lime; }\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\(--0cb50f97a33928f08d2935be79b3fb60 { background: lime; }\\\\n.\\\\\\\\31 23--87aac6eecc0561fe00a4fab8675db52e { background: lime; }\\\\n.\\\\\\\\31 a2b3c--4fd20a7ba770527d2b5181e00d5edc42 { background: lime; }\\\\n.\\\\\\\\
--3477ce97df51423d68db9eb33e056c6b { background: lime; }\\\\n.\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\>--a62ab97a8311b28d0df9758cadb75555 { background: lime; }\\\\n.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.--8a18745abe2facd291ae8c5c6ceabbdf { background: lime; }\\\\n.\\\\\\\\#--57d53edb0e5a6757ce6b205b47cc174d { background: lime; }\\\\n.\\\\\\\\#\\\\\\\\#--ed672da0a00b94520ab8a4eb3c786471 { background: lime; }\\\\n.\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\#--f686c0028f3b4932cfd2689eae7db8e7 { background: lime; }\\\\n.\\\\\\\\_--709d19d25c02b59c930033d7ebb27bf3 { background: lime; }\\\\n.\\\\\\\\{\\\\\\\\}--03559aa34d08925b7b37b68cbbbab061 { background: lime; }\\\\n.\\\\\\\\#fake\\\\\\\\-id--f50da82e1d107cda50fa45b135c86822 { background: lime; }\\\\n.foo\\\\\\\\.bar--cdeeba651d743a1c9c8726b82a53f3e7 { background: lime; }\\\\n.\\\\\\\\3A hover--eedb9b11365e5f804ae9e9ca4e4a93eb { background: lime; }\\\\n.\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active--fd12204dbd7c44f5cdba57e249953c73 { background: lime; }\\\\n.\\\\\\\\[attr\\\\\\\\=value\\\\\\\\]--fedf0fe616433390cc587cefb1e06f3c { background: lime; }\\\\n.f\\\\\\\\/o\\\\\\\\/o--872f3df58491fec851e2d142ef35a3f6 { background: lime; }\\\\n.f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o--afacca2cad66f8fa5b5cf8423518de57 { background: lime; }\\\\n.f\\\\\\\\*o\\\\\\\\*o--098250e92a511c126ef033e2590afcf0 { background: lime; }\\\\n.f\\\\\\\\!o\\\\\\\\!o--5f5ea08f8761ed29077cbf1f17dc6b68 { background: lime; }\\\\n.f\\\\\\\\'o\\\\\\\\'o--43951ef60179b3812e63d74831c1e010 { background: lime; }\\\\n.f\\\\\\\\~o\\\\\\\\~o--5f27f8554b923243815e3866b257c4e4 { background: lime; }\\\\n.f\\\\\\\\+o\\\\\\\\+o--61ecc2824b4db3e9cc7e5a2afedce309 { background: lime; }\\\\n\\\\n.foo\\\\\\\\/bar--282fddfcdf932d9d3664c146306a3c3a {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\\\\\\\\\bar--aec6247bb9290ae6726f5a36f5816c09 {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\/bar\\\\\\\\/baz--d2a732e8a4a273013b0b929ab95835c2 {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz--bc6ce37cc0c680420ee5056f527a94e7 {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"123--87aac6eecc0561fe00a4fab8675db52e\\", + \\"test\\": \\"test--0142b21a44dabb9819108414c865df64\\", + \\"_test\\": \\"_test--cde93c8860a038e1411d22cb771488ac\\", + \\"className\\": \\"className--c26790b0ff95d07b06b20d60cf577fd0\\", + \\"someId\\": \\"someId--8eb7b7f9ce9981fd21fd6d5fc4381bf6\\", + \\"subClass\\": \\"subClass--54070e7ec2a737162df117984ecc1761\\", + \\"-a0-34a___f\\": \\"-a0-34a___f--e6b44b8956c576006aee9cdfc7b8d960\\", + \\"m_x_@\\": \\"m_x_@--fbb667cb25a70369de60821c8e36b6fd\\", + \\"B&W?\\": \\"B&W?--f1decb173a621f94b1a405675462d8d2\\", + \\":\`(\\": \\":\`(--0cb50f97a33928f08d2935be79b3fb60\\", + \\"1a2b3c\\": \\"1a2b3c--4fd20a7ba770527d2b5181e00d5edc42\\", + \\"#fake-id\\": \\"#fake-id--f50da82e1d107cda50fa45b135c86822\\", + \\"-a-b-c-\\": \\"-a-b-c---db03ce70db75ed1c1bce599b1d18a186\\", + \\"©\\": \\"©--7e0826759ac2aeb5fca6e32aa1edb329\\", + \\"♥\\": \\"♥--e5560e4053337bd76daf9c2e75d3d7d0\\", + \\"“‘’”\\": \\"“‘’”--8e1e3e4cc7221b3ff51633038fafe426\\", + \\"☺☃\\": \\"☺☃--ebe5c837d5daf12d16f0daa8c61eb11e\\", + \\"⌘⌥\\": \\"⌘⌥--a85dfad97e5b6b370e7c1477411c7af2\\", + \\"𝄞♪♩♫♬\\": \\"𝄞♪♩♫♬--4c4549c449045769b60d0b58e8938127\\", + \\"💩\\": \\"💩--864ce6a5b06391cf964f32c546bfda16\\", + \\"?\\": \\"?--03cb0d319a1c01d96b21cce53cc35bf4\\", + \\"@\\": \\"@--dd774107a0c2a338e9f095f7f70b54d7\\", + \\".\\": \\".--e11fe8c7f53154b0b2d6cc27502a200e\\", + \\":)\\": \\":)--a796bbeca4dff990227350b8dd6f9034\\", + \\"
\\": \\"
--3477ce97df51423d68db9eb33e056c6b\\", + \\"<><<<>><>\\": \\"<><<<>><>--a62ab97a8311b28d0df9758cadb75555\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.--8a18745abe2facd291ae8c5c6ceabbdf\\", + \\"#\\": \\"#--57d53edb0e5a6757ce6b205b47cc174d\\", + \\"##\\": \\"##--ed672da0a00b94520ab8a4eb3c786471\\", + \\"#.#.#\\": \\"#.#.#--f686c0028f3b4932cfd2689eae7db8e7\\", + \\"_\\": \\"_--709d19d25c02b59c930033d7ebb27bf3\\", + \\"{}\\": \\"{}--03559aa34d08925b7b37b68cbbbab061\\", + \\"foo.bar\\": \\"foo.bar--cdeeba651d743a1c9c8726b82a53f3e7\\", + \\":hover\\": \\":hover--eedb9b11365e5f804ae9e9ca4e4a93eb\\", + \\":hover:focus:active\\": \\":hover:focus:active--fd12204dbd7c44f5cdba57e249953c73\\", + \\"[attr=value]\\": \\"[attr=value]--fedf0fe616433390cc587cefb1e06f3c\\", + \\"f/o/o\\": \\"f/o/o--872f3df58491fec851e2d142ef35a3f6\\", + \\"f\\\\\\\\o\\\\\\\\o\\": \\"f\\\\\\\\o\\\\\\\\o--afacca2cad66f8fa5b5cf8423518de57\\", + \\"f*o*o\\": \\"f*o*o--098250e92a511c126ef033e2590afcf0\\", + \\"f!o!o\\": \\"f!o!o--5f5ea08f8761ed29077cbf1f17dc6b68\\", + \\"f'o'o\\": \\"f'o'o--43951ef60179b3812e63d74831c1e010\\", + \\"f~o~o\\": \\"f~o~o--5f27f8554b923243815e3866b257c4e4\\", + \\"f+o+o\\": \\"f+o+o--61ecc2824b4db3e9cc7e5a2afedce309\\", + \\"foo/bar\\": \\"foo/bar--282fddfcdf932d9d3664c146306a3c3a\\", + \\"foo\\\\\\\\bar\\": \\"foo\\\\\\\\bar--aec6247bb9290ae6726f5a36f5816c09\\", + \\"foo/bar/baz\\": \\"foo/bar/baz--d2a732e8a4a273013b0b929ab95835c2\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"foo\\\\\\\\bar\\\\\\\\baz--bc6ce37cc0c680420ee5056f527a94e7\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and respect the "hashPrefix" option: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + ".test--0142b21a44dabb9819108414c865df64 { + background: red; +} -.a { - border: 1px solid blue; +._test--cde93c8860a038e1411d22cb771488ac { + background: blue; } -", - "", - ], -] -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +.className--c26790b0ff95d07b06b20d60cf577fd0 { + background: red; +} -exports[`modules case \`declaration-value\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +#someId--8eb7b7f9ce9981fd21fd6d5fc4381bf6 { + background: green; +} -exports[`modules case \`declaration-value\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "blue": "red", +.className--c26790b0ff95d07b06b20d60cf577fd0 .subClass--54070e7ec2a737162df117984ecc1761 { + color: green; } -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".a { - border: 1px solid red; +#someId--8eb7b7f9ce9981fd21fd6d5fc4381bf6 .subClass--54070e7ec2a737162df117984ecc1761 { + color: blue; } -", - "", - ], -] -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +.-a0-34a___f--e6b44b8956c576006aee9cdfc7b8d960 { + color: red; +} -exports[`modules case \`declaration-value\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +.m_x_\\\\@--fbb667cb25a70369de60821c8e36b6fd { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`declaration-value\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "a": "rUmYXW8EUSiAHIrtvLLrL", - "blue": "red", +.B\\\\&W\\\\?--f1decb173a621f94b1a405675462d8d2 { + margin-left: auto !important; + margin-right: auto !important; } -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".rUmYXW8EUSiAHIrtvLLrL { - border: 1px solid red; +/* matches elements with class=\\":\`(\\" */ +.\\\\3A \\\\\`\\\\(--0cb50f97a33928f08d2935be79b3fb60 { + color: aqua; } -", - "", - ], -] -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +/* matches elements with class=\\"1a2b3c\\" */ +.\\\\31 a2b3c--4fd20a7ba770527d2b5181e00d5edc42 { + color: aliceblue; +} -exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +/* matches the element with id=\\"#fake-id\\" */ +#\\\\#fake-id--f50da82e1d107cda50fa45b135c86822 { + color: antiquewhite; +} -exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "blue": "red", +/* matches the element with id=\\"-a-b-c-\\" */ +#-a-b-c---db03ce70db75ed1c1bce599b1d18a186 { + color: azure; } -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".a { - border: 1px solid red; +/* matches the element with id=\\"©\\" */ +#©--7e0826759ac2aeb5fca6e32aa1edb329 { + color: black; } -", - "", - ], -] -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +.♥--e5560e4053337bd76daf9c2e75d3d7d0 { background: lime; } +.©--7e0826759ac2aeb5fca6e32aa1edb329 { background: lime; } +.“‘’”--8e1e3e4cc7221b3ff51633038fafe426 { background: lime; } +.☺☃--ebe5c837d5daf12d16f0daa8c61eb11e { background: lime; } +.⌘⌥--a85dfad97e5b6b370e7c1477411c7af2 { background: lime; } +.𝄞♪♩♫♬--4c4549c449045769b60d0b58e8938127 { background: lime; } +.💩--864ce6a5b06391cf964f32c546bfda16 { background: lime; } +.\\\\?--03cb0d319a1c01d96b21cce53cc35bf4 { background: lime; } +.\\\\@--dd774107a0c2a338e9f095f7f70b54d7 { background: lime; } +.\\\\.--e11fe8c7f53154b0b2d6cc27502a200e { background: lime; } +.\\\\3A \\\\)--a796bbeca4dff990227350b8dd6f9034 { background: lime; } +.\\\\3A \\\\\`\\\\(--0cb50f97a33928f08d2935be79b3fb60 { background: lime; } +.\\\\31 23--87aac6eecc0561fe00a4fab8675db52e { background: lime; } +.\\\\31 a2b3c--4fd20a7ba770527d2b5181e00d5edc42 { background: lime; } +.\\\\
--3477ce97df51423d68db9eb33e056c6b { background: lime; } +.\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\>--a62ab97a8311b28d0df9758cadb75555 { background: lime; } +.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\.--8a18745abe2facd291ae8c5c6ceabbdf { background: lime; } +.\\\\#--57d53edb0e5a6757ce6b205b47cc174d { background: lime; } +.\\\\#\\\\#--ed672da0a00b94520ab8a4eb3c786471 { background: lime; } +.\\\\#\\\\.\\\\#\\\\.\\\\#--f686c0028f3b4932cfd2689eae7db8e7 { background: lime; } +.\\\\_--709d19d25c02b59c930033d7ebb27bf3 { background: lime; } +.\\\\{\\\\}--03559aa34d08925b7b37b68cbbbab061 { background: lime; } +.\\\\#fake\\\\-id--f50da82e1d107cda50fa45b135c86822 { background: lime; } +.foo\\\\.bar--cdeeba651d743a1c9c8726b82a53f3e7 { background: lime; } +.\\\\3A hover--eedb9b11365e5f804ae9e9ca4e4a93eb { background: lime; } +.\\\\3A hover\\\\3A focus\\\\3A active--fd12204dbd7c44f5cdba57e249953c73 { background: lime; } +.\\\\[attr\\\\=value\\\\]--fedf0fe616433390cc587cefb1e06f3c { background: lime; } +.f\\\\/o\\\\/o--872f3df58491fec851e2d142ef35a3f6 { background: lime; } +.f\\\\\\\\o\\\\\\\\o--afacca2cad66f8fa5b5cf8423518de57 { background: lime; } +.f\\\\*o\\\\*o--098250e92a511c126ef033e2590afcf0 { background: lime; } +.f\\\\!o\\\\!o--5f5ea08f8761ed29077cbf1f17dc6b68 { background: lime; } +.f\\\\'o\\\\'o--43951ef60179b3812e63d74831c1e010 { background: lime; } +.f\\\\~o\\\\~o--5f27f8554b923243815e3866b257c4e4 { background: lime; } +.f\\\\+o\\\\+o--61ecc2824b4db3e9cc7e5a2afedce309 { background: lime; } + +.foo\\\\/bar--282fddfcdf932d9d3664c146306a3c3a { + background: hotpink; +} -exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +.foo\\\\\\\\bar--aec6247bb9290ae6726f5a36f5816c09 { + background: hotpink; +} -exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: locals 1`] = ` -Object { - "a": "_a", - "blue": "red", +.foo\\\\/bar\\\\/baz--d2a732e8a4a273013b0b929ab95835c2 { + background: hotpink; } -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._a { - border: 1px solid red; +.foo\\\\\\\\bar\\\\\\\\baz--bc6ce37cc0c680420ee5056f527a94e7 { + background: hotpink; } ", "", @@ -1641,103 +2228,186 @@ Array [ ] `; -exports[`modules case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and respect the "hashPrefix" option: warnings 1`] = `Array []`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and respect the "localIdentName" option: errors 1`] = `Array []`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "a": "rUmYXW8EUSiAHIrtvLLrL", - "blue": "red", +exports[`"modules" option should work and respect the "localIdentName" option: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".localIdentName--test--3bArY {\\\\n background: red;\\\\n}\\\\n\\\\n.localIdentName--_test--XTGsN {\\\\n background: blue;\\\\n}\\\\n\\\\n.localIdentName--className--2ilfW {\\\\n background: red;\\\\n}\\\\n\\\\n#localIdentName--someId--3v-9L {\\\\n background: green;\\\\n}\\\\n\\\\n.localIdentName--className--2ilfW .localIdentName--subClass--3DLY7 {\\\\n color: green;\\\\n}\\\\n\\\\n#localIdentName--someId--3v-9L .localIdentName--subClass--3DLY7 {\\\\n color: blue;\\\\n}\\\\n\\\\n.localIdentName---a0-34a___f--2skz9 {\\\\n color: red;\\\\n}\\\\n\\\\n.localIdentName--m_x_\\\\\\\\@--1pEJL {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.localIdentName--B\\\\\\\\&W\\\\\\\\?--36Mz6 {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.localIdentName--\\\\\\\\3A \\\\\\\\\`\\\\\\\\(--3smFt {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.localIdentName--\\\\\\\\31 a2b3c--3nWh_ {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#localIdentName--\\\\\\\\#fake-id--3zyOT {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#localIdentName---a-b-c---SXlBp {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#localIdentName--©--3wIdK {\\\\n color: black;\\\\n}\\\\n\\\\n.localIdentName--♥--3CvZA { background: lime; }\\\\n.localIdentName--©--3wIdK { background: lime; }\\\\n.localIdentName--“‘’”--1lLtT { background: lime; }\\\\n.localIdentName--☺☃--129OO { background: lime; }\\\\n.localIdentName--⌘⌥--31l8- { background: lime; }\\\\n.localIdentName--𝄞♪♩♫♬--3PTmP { background: lime; }\\\\n.localIdentName--💩--3iDx9 { background: lime; }\\\\n.localIdentName--\\\\\\\\?--gjylL { background: lime; }\\\\n.localIdentName--\\\\\\\\@--t5XxN { background: lime; }\\\\n.localIdentName--\\\\\\\\.--fEcdI { background: lime; }\\\\n.localIdentName--\\\\\\\\3A \\\\\\\\)--3JwMk { background: lime; }\\\\n.localIdentName--\\\\\\\\3A \\\\\\\\\`\\\\\\\\(--3smFt { background: lime; }\\\\n.localIdentName--\\\\\\\\31 23--30YAJ { background: lime; }\\\\n.localIdentName--\\\\\\\\31 a2b3c--3nWh_ { background: lime; }\\\\n.localIdentName--\\\\\\\\
--juMfC { background: lime; }\\\\n.localIdentName--\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\>--1nZHf { background: lime; }\\\\n.localIdentName--\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.--3tH-J { background: lime; }\\\\n.localIdentName--\\\\\\\\#--1d4pW { background: lime; }\\\\n.localIdentName--\\\\\\\\#\\\\\\\\#--1yrD9 { background: lime; }\\\\n.localIdentName--\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\#--181tN { background: lime; }\\\\n.localIdentName--\\\\\\\\_--3XX_E { background: lime; }\\\\n.localIdentName--\\\\\\\\{\\\\\\\\}--1okIt { background: lime; }\\\\n.localIdentName--\\\\\\\\#fake\\\\\\\\-id--3zyOT { background: lime; }\\\\n.localIdentName--foo\\\\\\\\.bar--D1UTM { background: lime; }\\\\n.localIdentName--\\\\\\\\3A hover--1VdiV { background: lime; }\\\\n.localIdentName--\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active--3bwG4 { background: lime; }\\\\n.localIdentName--\\\\\\\\[attr\\\\\\\\=value\\\\\\\\]--2dg-h { background: lime; }\\\\n.localIdentName--f\\\\\\\\/o\\\\\\\\/o--3MAXc { background: lime; }\\\\n.localIdentName--f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o--S0VDf { background: lime; }\\\\n.localIdentName--f\\\\\\\\*o\\\\\\\\*o--1Dj0P { background: lime; }\\\\n.localIdentName--f\\\\\\\\!o\\\\\\\\!o--3SZwC { background: lime; }\\\\n.localIdentName--f\\\\\\\\'o\\\\\\\\'o--mapSs { background: lime; }\\\\n.localIdentName--f\\\\\\\\~o\\\\\\\\~o--10Kpk { background: lime; }\\\\n.localIdentName--f\\\\\\\\+o\\\\\\\\+o--3t38e { background: lime; }\\\\n\\\\n.localIdentName--foo\\\\\\\\/bar--37a0Q {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.localIdentName--foo\\\\\\\\\\\\\\\\bar--2hUYl {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.localIdentName--foo\\\\\\\\/bar\\\\\\\\/baz--1Grpv {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.localIdentName--foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz--2iqkF {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"localIdentName--123--30YAJ\\", + \\"test\\": \\"localIdentName--test--3bArY\\", + \\"_test\\": \\"localIdentName--_test--XTGsN\\", + \\"className\\": \\"localIdentName--className--2ilfW\\", + \\"someId\\": \\"localIdentName--someId--3v-9L\\", + \\"subClass\\": \\"localIdentName--subClass--3DLY7\\", + \\"-a0-34a___f\\": \\"localIdentName---a0-34a___f--2skz9\\", + \\"m_x_@\\": \\"localIdentName--m_x_@--1pEJL\\", + \\"B&W?\\": \\"localIdentName--B&W?--36Mz6\\", + \\":\`(\\": \\"localIdentName--:\`(--3smFt\\", + \\"1a2b3c\\": \\"localIdentName--1a2b3c--3nWh_\\", + \\"#fake-id\\": \\"localIdentName--#fake-id--3zyOT\\", + \\"-a-b-c-\\": \\"localIdentName---a-b-c---SXlBp\\", + \\"©\\": \\"localIdentName--©--3wIdK\\", + \\"♥\\": \\"localIdentName--♥--3CvZA\\", + \\"“‘’”\\": \\"localIdentName--“‘’”--1lLtT\\", + \\"☺☃\\": \\"localIdentName--☺☃--129OO\\", + \\"⌘⌥\\": \\"localIdentName--⌘⌥--31l8-\\", + \\"𝄞♪♩♫♬\\": \\"localIdentName--𝄞♪♩♫♬--3PTmP\\", + \\"💩\\": \\"localIdentName--💩--3iDx9\\", + \\"?\\": \\"localIdentName--?--gjylL\\", + \\"@\\": \\"localIdentName--@--t5XxN\\", + \\".\\": \\"localIdentName--.--fEcdI\\", + \\":)\\": \\"localIdentName--:)--3JwMk\\", + \\"
\\": \\"localIdentName--
--juMfC\\", + \\"<><<<>><>\\": \\"localIdentName--<><<<>><>--1nZHf\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"localIdentName--++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.--3tH-J\\", + \\"#\\": \\"localIdentName--#--1d4pW\\", + \\"##\\": \\"localIdentName--##--1yrD9\\", + \\"#.#.#\\": \\"localIdentName--#.#.#--181tN\\", + \\"_\\": \\"localIdentName--_--3XX_E\\", + \\"{}\\": \\"localIdentName--{}--1okIt\\", + \\"foo.bar\\": \\"localIdentName--foo.bar--D1UTM\\", + \\":hover\\": \\"localIdentName--:hover--1VdiV\\", + \\":hover:focus:active\\": \\"localIdentName--:hover:focus:active--3bwG4\\", + \\"[attr=value]\\": \\"localIdentName--[attr=value]--2dg-h\\", + \\"f/o/o\\": \\"localIdentName--f/o/o--3MAXc\\", + \\"f\\\\\\\\o\\\\\\\\o\\": \\"localIdentName--f\\\\\\\\o\\\\\\\\o--S0VDf\\", + \\"f*o*o\\": \\"localIdentName--f*o*o--1Dj0P\\", + \\"f!o!o\\": \\"localIdentName--f!o!o--3SZwC\\", + \\"f'o'o\\": \\"localIdentName--f'o'o--mapSs\\", + \\"f~o~o\\": \\"localIdentName--f~o~o--10Kpk\\", + \\"f+o+o\\": \\"localIdentName--f+o+o--3t38e\\", + \\"foo/bar\\": \\"localIdentName--foo/bar--37a0Q\\", + \\"foo\\\\\\\\bar\\": \\"localIdentName--foo\\\\\\\\bar--2hUYl\\", + \\"foo/bar/baz\\": \\"localIdentName--foo/bar/baz--1Grpv\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"localIdentName--foo\\\\\\\\bar\\\\\\\\baz--2iqkF\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and respect the "localIdentName" option: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + ".localIdentName--test--3bArY { + background: red; } -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".rUmYXW8EUSiAHIrtvLLrL { - border: 1px solid red; +.localIdentName--_test--XTGsN { + background: blue; } -", - "", - ], -] -`; -exports[`modules case \`declaration-value\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +.localIdentName--className--2ilfW { + background: red; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +#localIdentName--someId--3v-9L { + background: green; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +.localIdentName--className--2ilfW .localIdentName--subClass--3DLY7 { + color: green; +} -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); +#localIdentName--someId--3v-9L .localIdentName--subClass--3DLY7 { + color: blue; } -", - "", - ], -] -`; -exports[`modules case \`issue-589\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +.localIdentName---a0-34a___f--2skz9 { + color: red; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +.localIdentName--m_x_\\\\@--1pEJL { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`; +.localIdentName--B\\\\&W\\\\?--36Mz6 { + margin-left: auto !important; + margin-right: auto !important; +} -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); +/* matches elements with class=\\":\`(\\" */ +.localIdentName--\\\\3A \\\\\`\\\\(--3smFt { + color: aqua; } -", - "", - ], -] -`; -exports[`modules case \`issue-589\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +/* matches elements with class=\\"1a2b3c\\" */ +.localIdentName--\\\\31 a2b3c--3nWh_ { + color: aliceblue; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +/* matches the element with id=\\"#fake-id\\" */ +#localIdentName--\\\\#fake-id--3zyOT { + color: antiquewhite; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`local)\`: locals 1`] = `undefined`; +/* matches the element with id=\\"-a-b-c-\\" */ +#localIdentName---a-b-c---SXlBp { + color: azure; +} -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); +/* matches the element with id=\\"©\\" */ +#localIdentName--©--3wIdK { + color: black; } -", - "", - ], -] -`; -exports[`modules case \`issue-589\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +.localIdentName--♥--3CvZA { background: lime; } +.localIdentName--©--3wIdK { background: lime; } +.localIdentName--“‘’”--1lLtT { background: lime; } +.localIdentName--☺☃--129OO { background: lime; } +.localIdentName--⌘⌥--31l8- { background: lime; } +.localIdentName--𝄞♪♩♫♬--3PTmP { background: lime; } +.localIdentName--💩--3iDx9 { background: lime; } +.localIdentName--\\\\?--gjylL { background: lime; } +.localIdentName--\\\\@--t5XxN { background: lime; } +.localIdentName--\\\\.--fEcdI { background: lime; } +.localIdentName--\\\\3A \\\\)--3JwMk { background: lime; } +.localIdentName--\\\\3A \\\\\`\\\\(--3smFt { background: lime; } +.localIdentName--\\\\31 23--30YAJ { background: lime; } +.localIdentName--\\\\31 a2b3c--3nWh_ { background: lime; } +.localIdentName--\\\\
--juMfC { background: lime; } +.localIdentName--\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\>--1nZHf { background: lime; } +.localIdentName--\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\.--3tH-J { background: lime; } +.localIdentName--\\\\#--1d4pW { background: lime; } +.localIdentName--\\\\#\\\\#--1yrD9 { background: lime; } +.localIdentName--\\\\#\\\\.\\\\#\\\\.\\\\#--181tN { background: lime; } +.localIdentName--\\\\_--3XX_E { background: lime; } +.localIdentName--\\\\{\\\\}--1okIt { background: lime; } +.localIdentName--\\\\#fake\\\\-id--3zyOT { background: lime; } +.localIdentName--foo\\\\.bar--D1UTM { background: lime; } +.localIdentName--\\\\3A hover--1VdiV { background: lime; } +.localIdentName--\\\\3A hover\\\\3A focus\\\\3A active--3bwG4 { background: lime; } +.localIdentName--\\\\[attr\\\\=value\\\\]--2dg-h { background: lime; } +.localIdentName--f\\\\/o\\\\/o--3MAXc { background: lime; } +.localIdentName--f\\\\\\\\o\\\\\\\\o--S0VDf { background: lime; } +.localIdentName--f\\\\*o\\\\*o--1Dj0P { background: lime; } +.localIdentName--f\\\\!o\\\\!o--3SZwC { background: lime; } +.localIdentName--f\\\\'o\\\\'o--mapSs { background: lime; } +.localIdentName--f\\\\~o\\\\~o--10Kpk { background: lime; } +.localIdentName--f\\\\+o\\\\+o--3t38e { background: lime; } + +.localIdentName--foo\\\\/bar--37a0Q { + background: hotpink; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +.localIdentName--foo\\\\\\\\bar--2hUYl { + background: hotpink; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`; +.localIdentName--foo\\\\/bar\\\\/baz--1Grpv { + background: hotpink; +} -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); +.localIdentName--foo\\\\\\\\bar\\\\\\\\baz--2iqkF { + background: hotpink; } ", "", @@ -1745,103 +2415,186 @@ Array [ ] `; -exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and respect the "localIdentName" option: warnings 1`] = `Array []`; -exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and respect the "path" placeholder: errors 1`] = `Array []`; -exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode local)\`: locals 1`] = `undefined`; +exports[`"modules" option should work and respect the "path" placeholder: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".fixtures-modules-localIdentName-localIdentName__test {\\\\n background: red;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName___test {\\\\n background: blue;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__className {\\\\n background: red;\\\\n}\\\\n\\\\n#fixtures-modules-localIdentName-localIdentName__someId {\\\\n background: green;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__className .fixtures-modules-localIdentName-localIdentName__subClass {\\\\n color: green;\\\\n}\\\\n\\\\n#fixtures-modules-localIdentName-localIdentName__someId .fixtures-modules-localIdentName-localIdentName__subClass {\\\\n color: blue;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__-a0-34a___f {\\\\n color: red;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__m_x_\\\\\\\\@ {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__B\\\\\\\\&W\\\\\\\\? {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\31 a2b3c {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#fixtures-modules-localIdentName-localIdentName__\\\\\\\\#fake-id {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#fixtures-modules-localIdentName-localIdentName__-a-b-c- {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#fixtures-modules-localIdentName-localIdentName__© {\\\\n color: black;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__♥ { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__© { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__“‘’” { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__☺☃ { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__⌘⌥ { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__𝄞♪♩♫♬ { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__💩 { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\? { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\@ { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\. { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\3A \\\\\\\\) { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\3A \\\\\\\\\`\\\\\\\\( { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\31 23 { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\31 a2b3c { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\
{ background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\> { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\. { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\# { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\#\\\\\\\\# { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\# { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\_ { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\{\\\\\\\\} { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\#fake\\\\\\\\-id { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\.bar { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\3A hover { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__\\\\\\\\[attr\\\\\\\\=value\\\\\\\\] { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__f\\\\\\\\/o\\\\\\\\/o { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__f\\\\\\\\*o\\\\\\\\*o { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__f\\\\\\\\!o\\\\\\\\!o { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__f\\\\\\\\'o\\\\\\\\'o { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__f\\\\\\\\~o\\\\\\\\~o { background: lime; }\\\\n.fixtures-modules-localIdentName-localIdentName__f\\\\\\\\+o\\\\\\\\+o { background: lime; }\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\/bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\\\\\\\\\bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\/bar\\\\\\\\/baz {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"fixtures-modules-localIdentName-localIdentName__123\\", + \\"test\\": \\"fixtures-modules-localIdentName-localIdentName__test\\", + \\"_test\\": \\"fixtures-modules-localIdentName-localIdentName___test\\", + \\"className\\": \\"fixtures-modules-localIdentName-localIdentName__className\\", + \\"someId\\": \\"fixtures-modules-localIdentName-localIdentName__someId\\", + \\"subClass\\": \\"fixtures-modules-localIdentName-localIdentName__subClass\\", + \\"-a0-34a___f\\": \\"fixtures-modules-localIdentName-localIdentName__-a0-34a___f\\", + \\"m_x_@\\": \\"fixtures-modules-localIdentName-localIdentName__m_x_@\\", + \\"B&W?\\": \\"fixtures-modules-localIdentName-localIdentName__B&W?\\", + \\":\`(\\": \\"fixtures-modules-localIdentName-localIdentName__:\`(\\", + \\"1a2b3c\\": \\"fixtures-modules-localIdentName-localIdentName__1a2b3c\\", + \\"#fake-id\\": \\"fixtures-modules-localIdentName-localIdentName__#fake-id\\", + \\"-a-b-c-\\": \\"fixtures-modules-localIdentName-localIdentName__-a-b-c-\\", + \\"©\\": \\"fixtures-modules-localIdentName-localIdentName__©\\", + \\"♥\\": \\"fixtures-modules-localIdentName-localIdentName__♥\\", + \\"“‘’”\\": \\"fixtures-modules-localIdentName-localIdentName__“‘’”\\", + \\"☺☃\\": \\"fixtures-modules-localIdentName-localIdentName__☺☃\\", + \\"⌘⌥\\": \\"fixtures-modules-localIdentName-localIdentName__⌘⌥\\", + \\"𝄞♪♩♫♬\\": \\"fixtures-modules-localIdentName-localIdentName__𝄞♪♩♫♬\\", + \\"💩\\": \\"fixtures-modules-localIdentName-localIdentName__💩\\", + \\"?\\": \\"fixtures-modules-localIdentName-localIdentName__?\\", + \\"@\\": \\"fixtures-modules-localIdentName-localIdentName__@\\", + \\".\\": \\"fixtures-modules-localIdentName-localIdentName__.\\", + \\":)\\": \\"fixtures-modules-localIdentName-localIdentName__:)\\", + \\"
\\": \\"fixtures-modules-localIdentName-localIdentName__
\\", + \\"<><<<>><>\\": \\"fixtures-modules-localIdentName-localIdentName__<><<<>><>\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"fixtures-modules-localIdentName-localIdentName__++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\", + \\"#\\": \\"fixtures-modules-localIdentName-localIdentName__#\\", + \\"##\\": \\"fixtures-modules-localIdentName-localIdentName__##\\", + \\"#.#.#\\": \\"fixtures-modules-localIdentName-localIdentName__#.#.#\\", + \\"_\\": \\"fixtures-modules-localIdentName-localIdentName___\\", + \\"{}\\": \\"fixtures-modules-localIdentName-localIdentName__{}\\", + \\"foo.bar\\": \\"fixtures-modules-localIdentName-localIdentName__foo.bar\\", + \\":hover\\": \\"fixtures-modules-localIdentName-localIdentName__:hover\\", + \\":hover:focus:active\\": \\"fixtures-modules-localIdentName-localIdentName__:hover:focus:active\\", + \\"[attr=value]\\": \\"fixtures-modules-localIdentName-localIdentName__[attr=value]\\", + \\"f/o/o\\": \\"fixtures-modules-localIdentName-localIdentName__f/o/o\\", + \\"f\\\\\\\\o\\\\\\\\o\\": \\"fixtures-modules-localIdentName-localIdentName__f\\\\\\\\o\\\\\\\\o\\", + \\"f*o*o\\": \\"fixtures-modules-localIdentName-localIdentName__f*o*o\\", + \\"f!o!o\\": \\"fixtures-modules-localIdentName-localIdentName__f!o!o\\", + \\"f'o'o\\": \\"fixtures-modules-localIdentName-localIdentName__f'o'o\\", + \\"f~o~o\\": \\"fixtures-modules-localIdentName-localIdentName__f~o~o\\", + \\"f+o+o\\": \\"fixtures-modules-localIdentName-localIdentName__f+o+o\\", + \\"foo/bar\\": \\"fixtures-modules-localIdentName-localIdentName__foo/bar\\", + \\"foo\\\\\\\\bar\\": \\"fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\bar\\", + \\"foo/bar/baz\\": \\"fixtures-modules-localIdentName-localIdentName__foo/bar/baz\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\bar\\\\\\\\baz\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and respect the "path" placeholder: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + ".fixtures-modules-localIdentName-localIdentName__test { + background: red; +} -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); +.fixtures-modules-localIdentName-localIdentName___test { + background: blue; } -", - "", - ], -] -`; -exports[`modules case \`issue-589\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +.fixtures-modules-localIdentName-localIdentName__className { + background: red; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +#fixtures-modules-localIdentName-localIdentName__someId { + background: green; +} -exports[`modules case \`issue-589\` (\`modules\` value is \`true)\`: locals 1`] = `undefined`; +.fixtures-modules-localIdentName-localIdentName__className .fixtures-modules-localIdentName-localIdentName__subClass { + color: green; +} -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); +#fixtures-modules-localIdentName-localIdentName__someId .fixtures-modules-localIdentName-localIdentName__subClass { + color: blue; } -", - "", - ], -] -`; -exports[`modules case \`issue-589\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +.fixtures-modules-localIdentName-localIdentName__-a0-34a___f { + color: red; +} -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +.fixtures-modules-localIdentName-localIdentName__m_x_\\\\@ { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +.fixtures-modules-localIdentName-localIdentName__B\\\\&W\\\\? { + margin-left: auto !important; + margin-right: auto !important; +} -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".a { - color: green; +/* matches elements with class=\\":\`(\\" */ +.fixtures-modules-localIdentName-localIdentName__\\\\3A \\\\\`\\\\( { + color: aqua; } -@keyframes bounce { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +/* matches elements with class=\\"1a2b3c\\" */ +.fixtures-modules-localIdentName-localIdentName__\\\\31 a2b3c { + color: aliceblue; } -@-webkit-keyframes bounce2 { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +/* matches the element with id=\\"#fake-id\\" */ +#fixtures-modules-localIdentName-localIdentName__\\\\#fake-id { + color: antiquewhite; } -.bounce { - animation-name: bounce; - animation: bounce2 1s ease; +/* matches the element with id=\\"-a-b-c-\\" */ +#fixtures-modules-localIdentName-localIdentName__-a-b-c- { + color: azure; } -.bounce2 { - color: green; - animation: bounce 1s ease; - animation-name: bounce2; +/* matches the element with id=\\"©\\" */ +#fixtures-modules-localIdentName-localIdentName__© { + color: black; } -.bounce3 { - animation: bounce 1s ease, bounce2 +.fixtures-modules-localIdentName-localIdentName__♥ { background: lime; } +.fixtures-modules-localIdentName-localIdentName__© { background: lime; } +.fixtures-modules-localIdentName-localIdentName__“‘’” { background: lime; } +.fixtures-modules-localIdentName-localIdentName__☺☃ { background: lime; } +.fixtures-modules-localIdentName-localIdentName__⌘⌥ { background: lime; } +.fixtures-modules-localIdentName-localIdentName__𝄞♪♩♫♬ { background: lime; } +.fixtures-modules-localIdentName-localIdentName__💩 { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\? { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\@ { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\. { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\3A \\\\) { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\3A \\\\\`\\\\( { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\31 23 { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\31 a2b3c { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\
{ background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\<\\\\>\\\\<\\\\<\\\\<\\\\>\\\\>\\\\<\\\\> { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\[\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\>\\\\+\\\\+\\\\+\\\\>\\\\+\\\\<\\\\<\\\\<\\\\<\\\\-\\\\]\\\\>\\\\+\\\\+\\\\.\\\\>\\\\+\\\\.\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\.\\\\+\\\\+\\\\+\\\\.\\\\>\\\\+\\\\+\\\\.\\\\<\\\\<\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\+\\\\.\\\\>\\\\.\\\\+\\\\+\\\\+\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\-\\\\.\\\\>\\\\+\\\\.\\\\>\\\\. { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\# { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\#\\\\# { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\#\\\\.\\\\#\\\\.\\\\# { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\_ { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\{\\\\} { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\#fake\\\\-id { background: lime; } +.fixtures-modules-localIdentName-localIdentName__foo\\\\.bar { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\3A hover { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\3A hover\\\\3A focus\\\\3A active { background: lime; } +.fixtures-modules-localIdentName-localIdentName__\\\\[attr\\\\=value\\\\] { background: lime; } +.fixtures-modules-localIdentName-localIdentName__f\\\\/o\\\\/o { background: lime; } +.fixtures-modules-localIdentName-localIdentName__f\\\\\\\\o\\\\\\\\o { background: lime; } +.fixtures-modules-localIdentName-localIdentName__f\\\\*o\\\\*o { background: lime; } +.fixtures-modules-localIdentName-localIdentName__f\\\\!o\\\\!o { background: lime; } +.fixtures-modules-localIdentName-localIdentName__f\\\\'o\\\\'o { background: lime; } +.fixtures-modules-localIdentName-localIdentName__f\\\\~o\\\\~o { background: lime; } +.fixtures-modules-localIdentName-localIdentName__f\\\\+o\\\\+o { background: lime; } + +.fixtures-modules-localIdentName-localIdentName__foo\\\\/bar { + background: hotpink; } -.bounce4 { - animation: bounce 1s ease, bounce2; +.fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\bar { + background: hotpink; } -.b { - color: green; +.fixtures-modules-localIdentName-localIdentName__foo\\\\/bar\\\\/baz { + background: hotpink; +} + +.fixtures-modules-localIdentName-localIdentName__foo\\\\\\\\bar\\\\\\\\baz { + background: hotpink; } ", "", @@ -1849,63 +2602,80 @@ Array [ ] `; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and respect the "path" placeholder: warnings 1`] = `Array []`; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and support "pure" mode #2: errors 1`] = `Array []`; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`; +exports[`"modules" option should work and support "pure" mode #2: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1ORNYXwneW2JZ8HOIELZsO {\\\\n color: red;\\\\n}\\\\n\\\\nh1 ._1YzI-dPdJjO8MFoqnmHSiS {\\\\n color: green;\\\\n}\\\\n\\\\n._19XuUcEihnxeccG4GuGcFK h1 {\\\\n color: blue;\\\\n}\\\\n\\\\n._28hFOdkf6HPeamArMDTyjg h1 .X_RacgG5tjWeZG02q-q84 {\\\\n color: red;\\\\n}\\\\n\\\\n#_3eOAbv4_jk5PEpaqUX_vV_ {\\\\n color: red;\\\\n}\\\\n\\\\nh1 #_3eYZhuXQ5Ha1DcKYJnSpdv {\\\\n color: green;\\\\n}\\\\n\\\\n#tbNgruvlVjTBtv4zb7xzW h1 {\\\\n color: blue;\\\\n}\\\\n\\\\n#_1pV9OUnTdQPjZdQ4zHh8fk h1 #_14gkAn2VC8A8K862gBpfxU {\\\\n color: red;\\\\n}\\\\n\\\\n._1jv12xYuqjtEG-3ZW0dplp .bar ._1Ruta1CeojEt_QePDvXgV4 {\\\\n color: white;\\\\n}\\\\n\\\\n.FTCrXWhb6BcHdiPxKhbDq ._3Spcb1SWXkMsVPOJBD4FCA ._3J8yK5Q14ZQ1VUMZ3vk9yl {\\\\n color: black;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"_1ORNYXwneW2JZ8HOIELZsO\\", + \\"foo-1\\": \\"_1YzI-dPdJjO8MFoqnmHSiS\\", + \\"foo-2\\": \\"_19XuUcEihnxeccG4GuGcFK\\", + \\"foo-3\\": \\"_28hFOdkf6HPeamArMDTyjg\\", + \\"foo-4\\": \\"X_RacgG5tjWeZG02q-q84\\", + \\"foo-5\\": \\"_3eOAbv4_jk5PEpaqUX_vV_\\", + \\"foo-6\\": \\"_3eYZhuXQ5Ha1DcKYJnSpdv\\", + \\"foo-7\\": \\"tbNgruvlVjTBtv4zb7xzW\\", + \\"foo-8\\": \\"_1pV9OUnTdQPjZdQ4zHh8fk\\", + \\"foo-9\\": \\"_14gkAn2VC8A8K862gBpfxU\\", + \\"bar-1\\": \\"_1jv12xYuqjtEG-3ZW0dplp\\", + \\"bar-2\\": \\"_1Ruta1CeojEt_QePDvXgV4\\", + \\"baz-3\\": \\"FTCrXWhb6BcHdiPxKhbDq\\", + \\"baz\\": \\"_3Spcb1SWXkMsVPOJBD4FCA\\", + \\"bar-4\\": \\"_3J8yK5Q14ZQ1VUMZ3vk9yl\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and support "pure" mode #2: result 1`] = ` +Array [ + Array [ + "./modules/pure/pure.css", + "._1ORNYXwneW2JZ8HOIELZsO { + color: red; +} -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".a { - color: green; +h1 ._1YzI-dPdJjO8MFoqnmHSiS { + color: green; } -@keyframes bounce { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +._19XuUcEihnxeccG4GuGcFK h1 { + color: blue; } -@-webkit-keyframes bounce2 { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +._28hFOdkf6HPeamArMDTyjg h1 .X_RacgG5tjWeZG02q-q84 { + color: red; } -.bounce { - animation-name: bounce; - animation: bounce2 1s ease; +#_3eOAbv4_jk5PEpaqUX_vV_ { + color: red; } -.bounce2 { - color: green; - animation: bounce 1s ease; - animation-name: bounce2; +h1 #_3eYZhuXQ5Ha1DcKYJnSpdv { + color: green; } -.bounce3 { - animation: bounce 1s ease, bounce2 +#tbNgruvlVjTBtv4zb7xzW h1 { + color: blue; } -.bounce4 { - animation: bounce 1s ease, bounce2; +#_1pV9OUnTdQPjZdQ4zHh8fk h1 #_14gkAn2VC8A8K862gBpfxU { + color: red; } -.b { - color: green; +._1jv12xYuqjtEG-3ZW0dplp .bar ._1Ruta1CeojEt_QePDvXgV4 { + color: white; +} + +.FTCrXWhb6BcHdiPxKhbDq ._3Spcb1SWXkMsVPOJBD4FCA ._3J8yK5Q14ZQ1VUMZ3vk9yl { + color: black; } ", "", @@ -1913,72 +2683,80 @@ Array [ ] `; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and support "pure" mode #2: warnings 1`] = `Array []`; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work and support "pure" mode: 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" option should work and support "pure" mode: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1ORNYXwneW2JZ8HOIELZsO {\\\\n color: red;\\\\n}\\\\n\\\\nh1 ._1YzI-dPdJjO8MFoqnmHSiS {\\\\n color: green;\\\\n}\\\\n\\\\n._19XuUcEihnxeccG4GuGcFK h1 {\\\\n color: blue;\\\\n}\\\\n\\\\n._28hFOdkf6HPeamArMDTyjg h1 .X_RacgG5tjWeZG02q-q84 {\\\\n color: red;\\\\n}\\\\n\\\\n#_3eOAbv4_jk5PEpaqUX_vV_ {\\\\n color: red;\\\\n}\\\\n\\\\nh1 #_3eYZhuXQ5Ha1DcKYJnSpdv {\\\\n color: green;\\\\n}\\\\n\\\\n#tbNgruvlVjTBtv4zb7xzW h1 {\\\\n color: blue;\\\\n}\\\\n\\\\n#_1pV9OUnTdQPjZdQ4zHh8fk h1 #_14gkAn2VC8A8K862gBpfxU {\\\\n color: red;\\\\n}\\\\n\\\\n._1jv12xYuqjtEG-3ZW0dplp .bar ._1Ruta1CeojEt_QePDvXgV4 {\\\\n color: white;\\\\n}\\\\n\\\\n.FTCrXWhb6BcHdiPxKhbDq ._3Spcb1SWXkMsVPOJBD4FCA ._3J8yK5Q14ZQ1VUMZ3vk9yl {\\\\n color: black;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"foo\\": \\"_1ORNYXwneW2JZ8HOIELZsO\\", + \\"foo-1\\": \\"_1YzI-dPdJjO8MFoqnmHSiS\\", + \\"foo-2\\": \\"_19XuUcEihnxeccG4GuGcFK\\", + \\"foo-3\\": \\"_28hFOdkf6HPeamArMDTyjg\\", + \\"foo-4\\": \\"X_RacgG5tjWeZG02q-q84\\", + \\"foo-5\\": \\"_3eOAbv4_jk5PEpaqUX_vV_\\", + \\"foo-6\\": \\"_3eYZhuXQ5Ha1DcKYJnSpdv\\", + \\"foo-7\\": \\"tbNgruvlVjTBtv4zb7xzW\\", + \\"foo-8\\": \\"_1pV9OUnTdQPjZdQ4zHh8fk\\", + \\"foo-9\\": \\"_14gkAn2VC8A8K862gBpfxU\\", + \\"bar-1\\": \\"_1jv12xYuqjtEG-3ZW0dplp\\", + \\"bar-2\\": \\"_1Ruta1CeojEt_QePDvXgV4\\", + \\"baz-3\\": \\"FTCrXWhb6BcHdiPxKhbDq\\", + \\"baz\\": \\"_3Spcb1SWXkMsVPOJBD4FCA\\", + \\"bar-4\\": \\"_3J8yK5Q14ZQ1VUMZ3vk9yl\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work and support "pure" mode: result 1`] = ` +Array [ + Array [ + "./modules/pure/pure.css", + "._1ORNYXwneW2JZ8HOIELZsO { + color: red; } -`; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._1AzRoWem1zBzZ9hLlF5IJC { - color: green; +h1 ._1YzI-dPdJjO8MFoqnmHSiS { + color: green; } -@keyframes _355y8MvF-ilfLoMa6xQMuq { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +._19XuUcEihnxeccG4GuGcFK h1 { + color: blue; } -@-webkit-keyframes _20oF72x8NQuWNrNLEjvczE { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +._28hFOdkf6HPeamArMDTyjg h1 .X_RacgG5tjWeZG02q-q84 { + color: red; } -._355y8MvF-ilfLoMa6xQMuq { - animation-name: _355y8MvF-ilfLoMa6xQMuq; - animation: _20oF72x8NQuWNrNLEjvczE 1s ease; +#_3eOAbv4_jk5PEpaqUX_vV_ { + color: red; } -._20oF72x8NQuWNrNLEjvczE { - color: green; - animation: _355y8MvF-ilfLoMa6xQMuq 1s ease; - animation-name: _20oF72x8NQuWNrNLEjvczE; +h1 #_3eYZhuXQ5Ha1DcKYJnSpdv { + color: green; } -._3OQHSo2d42CWSR-npTXaic { - animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE +#tbNgruvlVjTBtv4zb7xzW h1 { + color: blue; } -._3bL1lmhMKE-Qlk83VSMCHN { - animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE; +#_1pV9OUnTdQPjZdQ4zHh8fk h1 #_14gkAn2VC8A8K862gBpfxU { + color: red; } -._1eH5GHM6EfKYOklEd2mhle { - color: green; +._1jv12xYuqjtEG-3ZW0dplp .bar ._1Ruta1CeojEt_QePDvXgV4 { + color: white; +} + +.FTCrXWhb6BcHdiPxKhbDq ._3Spcb1SWXkMsVPOJBD4FCA ._3J8yK5Q14ZQ1VUMZ3vk9yl { + color: black; } ", "", @@ -1986,136 +2764,186 @@ Array [ ] `; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work and support "pure" mode: warnings 1`] = `Array []`; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work when the "getLocalIdent" option returns "false": errors 1`] = `Array []`; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`; +exports[`"modules" option should work when the "getLocalIdent" option returns "false": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".test {\\\\n background: red;\\\\n}\\\\n\\\\n._test {\\\\n background: blue;\\\\n}\\\\n\\\\n.className {\\\\n background: red;\\\\n}\\\\n\\\\n#someId {\\\\n background: green;\\\\n}\\\\n\\\\n.className .subClass {\\\\n color: green;\\\\n}\\\\n\\\\n#someId .subClass {\\\\n color: blue;\\\\n}\\\\n\\\\n.-a0-34a___f {\\\\n color: red;\\\\n}\\\\n\\\\n.m_x_\\\\\\\\@ {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.B\\\\\\\\&W\\\\\\\\? {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.\\\\\\\\31 a2b3c {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#\\\\\\\\#fake-id {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#-a-b-c- {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#© {\\\\n color: black;\\\\n}\\\\n\\\\n.♥ { background: lime; }\\\\n.© { background: lime; }\\\\n.“‘’” { background: lime; }\\\\n.☺☃ { background: lime; }\\\\n.⌘⌥ { background: lime; }\\\\n.𝄞♪♩♫♬ { background: lime; }\\\\n.💩 { background: lime; }\\\\n.\\\\\\\\? { background: lime; }\\\\n.\\\\\\\\@ { background: lime; }\\\\n.\\\\\\\\. { background: lime; }\\\\n.\\\\\\\\3A \\\\\\\\) { background: lime; }\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\( { background: lime; }\\\\n.\\\\\\\\31 23 { background: lime; }\\\\n.\\\\\\\\31 a2b3c { background: lime; }\\\\n.\\\\\\\\
{ background: lime; }\\\\n.\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\> { background: lime; }\\\\n.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\. { background: lime; }\\\\n.\\\\\\\\# { background: lime; }\\\\n.\\\\\\\\#\\\\\\\\# { background: lime; }\\\\n.\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\# { background: lime; }\\\\n.\\\\\\\\_ { background: lime; }\\\\n.\\\\\\\\{\\\\\\\\} { background: lime; }\\\\n.\\\\\\\\#fake\\\\\\\\-id { background: lime; }\\\\n.foo\\\\\\\\.bar { background: lime; }\\\\n.\\\\\\\\3A hover { background: lime; }\\\\n.\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active { background: lime; }\\\\n.\\\\\\\\[attr\\\\\\\\=value\\\\\\\\] { background: lime; }\\\\n.f\\\\\\\\/o\\\\\\\\/o { background: lime; }\\\\n.f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o { background: lime; }\\\\n.f\\\\\\\\*o\\\\\\\\*o { background: lime; }\\\\n.f\\\\\\\\!o\\\\\\\\!o { background: lime; }\\\\n.f\\\\\\\\'o\\\\\\\\'o { background: lime; }\\\\n.f\\\\\\\\~o\\\\\\\\~o { background: lime; }\\\\n.f\\\\\\\\+o\\\\\\\\+o { background: lime; }\\\\n\\\\n.foo\\\\\\\\/bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\\\\\\\\\bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\/bar\\\\\\\\/baz {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"123\\", + \\"test\\": \\"test\\", + \\"_test\\": \\"_test\\", + \\"className\\": \\"className\\", + \\"someId\\": \\"someId\\", + \\"subClass\\": \\"subClass\\", + \\"-a0-34a___f\\": \\"-a0-34a___f\\", + \\"m_x_@\\": \\"m_x_@\\", + \\"B&W?\\": \\"B&W?\\", + \\":\`(\\": \\":\`(\\", + \\"1a2b3c\\": \\"1a2b3c\\", + \\"#fake-id\\": \\"#fake-id\\", + \\"-a-b-c-\\": \\"-a-b-c-\\", + \\"©\\": \\"©\\", + \\"♥\\": \\"♥\\", + \\"“‘’”\\": \\"“‘’”\\", + \\"☺☃\\": \\"☺☃\\", + \\"⌘⌥\\": \\"⌘⌥\\", + \\"𝄞♪♩♫♬\\": \\"𝄞♪♩♫♬\\", + \\"💩\\": \\"💩\\", + \\"?\\": \\"?\\", + \\"@\\": \\"@\\", + \\".\\": \\".\\", + \\":)\\": \\":)\\", + \\"
\\": \\"
\\", + \\"<><<<>><>\\": \\"<><<<>><>\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\", + \\"#\\": \\"#\\", + \\"##\\": \\"##\\", + \\"#.#.#\\": \\"#.#.#\\", + \\"_\\": \\"_\\", + \\"{}\\": \\"{}\\", + \\"foo.bar\\": \\"foo.bar\\", + \\":hover\\": \\":hover\\", + \\":hover:focus:active\\": \\":hover:focus:active\\", + \\"[attr=value]\\": \\"[attr=value]\\", + \\"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\\", + \\"f+o+o\\": \\"f+o+o\\", + \\"foo/bar\\": \\"foo/bar\\", + \\"foo\\\\\\\\bar\\": \\"foo\\\\\\\\bar\\", + \\"foo/bar/baz\\": \\"foo/bar/baz\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"foo\\\\\\\\bar\\\\\\\\baz\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work when the "getLocalIdent" option returns "false": result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", + ".test { + background: red; +} -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".a { - color: green; +._test { + background: blue; } -@keyframes bounce { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +.className { + background: red; } -@-webkit-keyframes bounce2 { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +#someId { + background: green; } -.bounce { - animation-name: bounce; - animation: bounce2 1s ease; +.className .subClass { + color: green; } -.bounce2 { - color: green; - animation: bounce 1s ease; - animation-name: bounce2; +#someId .subClass { + color: blue; } -.bounce3 { - animation: bounce 1s ease, bounce2 +.-a0-34a___f { + color: red; } -.bounce4 { - animation: bounce 1s ease, bounce2; +.m_x_\\\\@ { + margin-left: auto !important; + margin-right: auto !important; } -.b { - color: green; +.B\\\\&W\\\\? { + margin-left: auto !important; + margin-right: auto !important; } -", - "", - ], -] -`; - -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", +/* matches elements with class=\\":\`(\\" */ +.\\\\3A \\\\\`\\\\( { + color: aqua; } -`; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._a { - color: green; +/* matches elements with class=\\"1a2b3c\\" */ +.\\\\31 a2b3c { + color: aliceblue; } -@keyframes _bounce { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +/* matches the element with id=\\"#fake-id\\" */ +#\\\\#fake-id { + color: antiquewhite; } -@-webkit-keyframes _bounce2 { - 0% { - transform: translateY(-100%); - opacity: 0; - } - 5% { - transform: translateY(-100%); - opacity: 0; - } +/* matches the element with id=\\"-a-b-c-\\" */ +#-a-b-c- { + color: azure; } -._bounce { - animation-name: _bounce; - animation: _bounce2 1s ease; +/* matches the element with id=\\"©\\" */ +#© { + color: black; } -._bounce2 { - color: green; - animation: _bounce 1s ease; - animation-name: _bounce2; +.♥ { 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; } -._bounce3 { - animation: _bounce 1s ease, _bounce2 +.foo\\\\\\\\bar { + background: hotpink; } -._bounce4 { - animation: _bounce 1s ease, _bounce2; +.foo\\\\/bar\\\\/baz { + background: hotpink; } -._b { - color: green; +.foo\\\\\\\\bar\\\\\\\\baz { + background: hotpink; } ", "", @@ -2123,72 +2951,28 @@ Array [ ] `; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work when the "getLocalIdent" option returns "false": warnings 1`] = `Array []`; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`false)\`: 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" option should work with case \`animation\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"a {\\\\n animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out;\\\\n\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`false)\`: result 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; -} + "./modules/tests-cases/animation/source.css", + "a { + animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out; -._1eH5GHM6EfKYOklEd2mhle { - color: green; } ", "", @@ -2196,52 +2980,61 @@ Array [ ] `; -exports[`modules case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"a {\\\\n animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out;\\\\n\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - ".a { - color: green; - animation: a; -} - -@keyframes b { - 0% { left: 10px; } - 100% { left: 20px; } -} + "./modules/tests-cases/animation/source.css", + "a { + animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out; -.b { - animation: b; } +", + "", + ], +] +`; -@keyframes :global(c) { - 0% { left: 10px; } - 100% { left: 20px; } -} +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -.c { - animation: c1; - animation: c2, c3, c4; -} +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -@keyframes :global(d) { - 0% { left: 10px; } - 100% { left: 20px; } -} +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"a {\\\\n animation: _2jinakhsfBWcUNZSsOxUHz 300ms forwards ease-out, _3XZSV759G141XcbTZgtQkF 300ms forwards ease-out;\\\\n\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"slide-right\\": \\"_2jinakhsfBWcUNZSsOxUHz\\", + \\"fade-in\\": \\"_3XZSV759G141XcbTZgtQkF\\" +}; +module.exports = exports; +" +`; -:global .d1 { - animation: d1; - animation: d2, d3, d4; -} +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/animation/source.css", + "a { + animation: _2jinakhsfBWcUNZSsOxUHz 300ms forwards ease-out, _3XZSV759G141XcbTZgtQkF 300ms forwards ease-out; -:global(.d2) { - animation: d2; } ", "", @@ -2249,52 +3042,61 @@ Array [ ] `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"a {\\\\n animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out;\\\\n\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - ".a { - color: green; - animation: a; -} - -@keyframes b { - 0% { left: 10px; } - 100% { left: 20px; } -} + "./modules/tests-cases/animation/source.css", + "a { + animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out; -.b { - animation: b; } +", + "", + ], +] +`; -@keyframes c { - 0% { left: 10px; } - 100% { left: 20px; } -} +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -.c { - animation: c1; - animation: c2, c3, c4; -} +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -@keyframes d { - 0% { left: 10px; } - 100% { left: 20px; } -} +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"a {\\\\n animation: _slide-right 300ms forwards ease-out, _fade-in 300ms forwards ease-out;\\\\n\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"slide-right\\": \\"_slide-right\\", + \\"fade-in\\": \\"_fade-in\\" +}; +module.exports = exports; +" +`; -.d1 { - animation: d1; - animation: d2, d3, d4; -} +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/animation/source.css", + "a { + animation: _slide-right 300ms forwards ease-out, _fade-in 300ms forwards ease-out; -.d2 { - animation: d2; } ", "", @@ -2302,63 +3104,32 @@ Array [ ] `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`true)\`: 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" option should work with case \`animation\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"a {\\\\n animation: _2jinakhsfBWcUNZSsOxUHz 300ms forwards ease-out, _3XZSV759G141XcbTZgtQkF 300ms forwards ease-out;\\\\n\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"slide-right\\": \\"_2jinakhsfBWcUNZSsOxUHz\\", + \\"fade-in\\": \\"_3XZSV759G141XcbTZgtQkF\\" +}; +module.exports = exports; +" `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`true)\`: result 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; -} + "./modules/tests-cases/animation/source.css", + "a { + animation: _2jinakhsfBWcUNZSsOxUHz 300ms forwards ease-out, _3XZSV759G141XcbTZgtQkF 300ms forwards ease-out; -.d2 { - animation: _35GAwk8Rb2LyIN0pSAXjyy; } ", "", @@ -2366,52 +3137,27 @@ Array [ ] `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`animation\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".class-1, .class-10 .bar-1 {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 1, - ".a { + "./modules/tests-cases/class-names/source.css", + ".class-1, .class-10 .bar-1 { 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; } ", "", @@ -2419,63 +3165,27 @@ Array [ ] `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`global)\`: 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" option should work with case \`class-names\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".class-1, .class-10 .bar-1 {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - "._a { + "./modules/tests-cases/class-names/source.css", + ".class-1, .class-10 .bar-1 { 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; } ", "", @@ -2483,63 +3193,32 @@ Array [ ] `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`leak-scope\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`local)\`: 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" option should work with case \`class-names\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1GNZOTxutjEX7cZ3Ec7knU, ._15N9BXxWirSgwhYficwysK ._3GpM4NK17tELexNK1Szvws {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"class-1\\": \\"_1GNZOTxutjEX7cZ3Ec7knU\\", + \\"class-10\\": \\"_15N9BXxWirSgwhYficwysK\\", + \\"bar-1\\": \\"_3GpM4NK17tELexNK1Szvws\\" +}; +module.exports = exports; +" `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - "._1OjK2G7L6Ypn9Qqa8lly-H { + "./modules/tests-cases/class-names/source.css", + "._1GNZOTxutjEX7cZ3Ec7knU, ._15N9BXxWirSgwhYficwysK ._3GpM4NK17tELexNK1Szvws { 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; } ", "", @@ -2547,22 +3226,27 @@ Array [ ] `; -exports[`modules case \`leak-scope\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`local\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules case \`local\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".class-1, .class-10 .bar-1 {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`modules case \`local\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - ".abc :local(.def) { - color: red; -} - -:local .ghi .jkl { - color: blue; + "./modules/tests-cases/class-names/source.css", + ".class-1, .class-10 .bar-1 { + color: green; } ", "", @@ -2570,28 +3254,32 @@ Array [ ] `; -exports[`modules case \`local\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`local\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -exports[`modules case \`local\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "def": "_1UnGDcMVVYIU_547CDqQJU", - "ghi": "_1k8c5svlAtK4vFkSsZdl4o", - "jkl": "pRQR9FSSkxNL6roex-uGp", -} +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._class-1, ._class-10 ._bar-1 {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"class-1\\": \\"_class-1\\", + \\"class-10\\": \\"_class-10\\", + \\"bar-1\\": \\"_bar-1\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - ".abc ._1UnGDcMVVYIU_547CDqQJU { - color: red; -} - -._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp { - color: blue; + "./modules/tests-cases/class-names/source.css", + "._class-1, ._class-10 ._bar-1 { + color: green; } ", "", @@ -2599,29 +3287,32 @@ Array [ ] `; -exports[`modules case \`local\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`local\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`true)\`: 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" option should work with case \`class-names\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1GNZOTxutjEX7cZ3Ec7knU, ._15N9BXxWirSgwhYficwysK ._3GpM4NK17tELexNK1Szvws {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"class-1\\": \\"_1GNZOTxutjEX7cZ3Ec7knU\\", + \\"class-10\\": \\"_15N9BXxWirSgwhYficwysK\\", + \\"bar-1\\": \\"_3GpM4NK17tELexNK1Szvws\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - "._2EPIUiYqPKxP0HS9Vgqa8e ._1UnGDcMVVYIU_547CDqQJU { - color: red; -} - -._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp { - color: blue; + "./modules/tests-cases/class-names/source.css", + "._1GNZOTxutjEX7cZ3Ec7knU, ._15N9BXxWirSgwhYficwysK ._3GpM4NK17tELexNK1Szvws { + color: green; } ", "", @@ -2629,871 +3320,1195 @@ Array [ ] `; -exports[`modules case \`local\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`class-names\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`local\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`false)\`: 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" option should work with case \`comment-in-local\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.c1/*.c2*/.c3) { background: red; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`local\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 1, - ".abc ._def { - color: red; -} - -._ghi ._jkl { - color: blue; -} + "./modules/tests-cases/comment-in-local/source.css", + ":local(.c1/*.c2*/.c3) { background: red; } ", "", ], ] `; -exports[`modules case \`local\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`local\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`global)\`: 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" option should work with case \`comment-in-local\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1xn1UbV-5a_s7ig53fR7Lz\\", + \\"c3\\": \\"_36mr1nZ1pdjd1s5j3RV-z7\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - "._abc ._def { - color: red; -} - -._ghi ._jkl { - color: blue; -} + "./modules/tests-cases/comment-in-local/source.css", + "._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; } ", "", ], ] `; -exports[`modules case \`local\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`local\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`local)\`: 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" option should work with case \`comment-in-local\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1xn1UbV-5a_s7ig53fR7Lz\\", + \\"c3\\": \\"_36mr1nZ1pdjd1s5j3RV-z7\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - "._2EPIUiYqPKxP0HS9Vgqa8e ._1UnGDcMVVYIU_547CDqQJU { - color: red; -} - -._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp { - color: blue; -} + "./modules/tests-cases/comment-in-local/source.css", + "._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; } ", "", ], ] `; -exports[`modules case \`local\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-2\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules case \`local-2\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._c1/*.c2*/._c3 { background: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1\\", + \\"c3\\": \\"_c3\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`local-2\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - ":local(.className) { background: red; } -:local(#someId) { background: green; } -:local(.className .subClass) { color: green; } -:local(#someId .subClass) { color: blue; } + "./modules/tests-cases/comment-in-local/source.css", + "._c1/*.c2*/._c3 { background: red; } ", "", ], ] `; -exports[`modules case \`local-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: 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" option should work with case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._c1/*.c2*/._c3 { background: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1\\", + \\"c3\\": \\"_c3\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-2\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - ".PTH0TZDPxpREaV5cxtahd { background: red; } -#_1XQl0Np_jYcDGudXKxmL8A { background: green; } -.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; } -#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; } + "./modules/tests-cases/comment-in-local/source.css", + "._c1/*.c2*/._c3 { background: red; } ", "", ], ] `; -exports[`modules case \`local-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`true)\`: 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" option should work with case \`comment-in-local\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1xn1UbV-5a_s7ig53fR7Lz\\", + \\"c3\\": \\"_36mr1nZ1pdjd1s5j3RV-z7\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-2\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - ".PTH0TZDPxpREaV5cxtahd { background: red; } -#_1XQl0Np_jYcDGudXKxmL8A { background: green; } -.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; } -#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; } + "./modules/tests-cases/comment-in-local/source.css", + "._1xn1UbV-5a_s7ig53fR7Lz/*.c2*/._36mr1nZ1pdjd1s5j3RV-z7 { background: red; } ", "", ], ] `; -exports[`modules case \`local-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comment-in-local\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`false)\`: 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" option should work with case \`comments\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"/*\\\\n * a ' above\\\\n */\\\\n\\\\n.bg {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n/*\\\\n * a ' below\\\\n */\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`local-2\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`false)\`: result 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 []`; + "./modules/tests-cases/comments/source.css", + "/* + * a ' above + */ -exports[`modules case \`local-2\` (\`modules\` value is \`object with mode local)\`: locals 1`] = ` -Object { - "className": "_className", - "someId": "_someId", - "subClass": "_subClass", +.bg { + background-image: url(/webpack/public/path/img.png); } -`; -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; } +/* + * a ' below + */ ", "", ], ] `; -exports[`modules case \`local-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`global)\`: 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" option should work with case \`comments\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"/*\\\\n * a ' above\\\\n */\\\\n\\\\n.bg {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n/*\\\\n * a ' below\\\\n */\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`local-2\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - ".PTH0TZDPxpREaV5cxtahd { background: red; } -#_1XQl0Np_jYcDGudXKxmL8A { background: green; } -.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; } -#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; } + "./modules/tests-cases/comments/source.css", + "/* + * a ' above + */ + +.bg { + background-image: url(/webpack/public/path/img.png); +} + +/* + * a ' below + */ ", "", ], ] `; -exports[`modules case \`local-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"/*\\\\n * a ' above\\\\n */\\\\n\\\\n._28-VAWbJ8gQCgX50Jcqtzs {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n/*\\\\n * a ' below\\\\n */\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"bg\\": \\"_28-VAWbJ8gQCgX50Jcqtzs\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - ":local(.abc) { - color: red; -} -:local(.def) { - composes: abc; - background: green; + "./modules/tests-cases/comments/source.css", + "/* + * a ' above + */ + +._28-VAWbJ8gQCgX50Jcqtzs { + background-image: url(/webpack/public/path/img.png); } + +/* + * a ' below + */ ", "", ], ] `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`object with mode 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" option should work with case \`comments\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"/*\\\\n * a ' above\\\\n */\\\\n\\\\n.bg {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n/*\\\\n * a ' below\\\\n */\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - "._1wzWGMZGmVz3uhGAmwbXwR { - color: red; -} -._3zcEXyCxYPLdb_6bVqY6Df { - background: green; + "./modules/tests-cases/comments/source.css", + "/* + * a ' above + */ + +.bg { + background-image: url(/webpack/public/path/img.png); } + +/* + * a ' below + */ ", "", ], ] `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`object with mode 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" option should work with case \`comments\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"/*\\\\n * a ' above\\\\n */\\\\n\\\\n._bg {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n/*\\\\n * a ' below\\\\n */\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"bg\\": \\"_bg\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - "._1wzWGMZGmVz3uhGAmwbXwR { - color: red; -} -._3zcEXyCxYPLdb_6bVqY6Df { - background: green; + "./modules/tests-cases/comments/source.css", + "/* + * a ' above + */ + +._bg { + background-image: url(/webpack/public/path/img.png); } + +/* + * a ' below + */ ", "", ], ] `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`true)\`: 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" option should work with case \`comments\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"/*\\\\n * a ' above\\\\n */\\\\n\\\\n._28-VAWbJ8gQCgX50Jcqtzs {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n/*\\\\n * a ' below\\\\n */\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"bg\\": \\"_28-VAWbJ8gQCgX50Jcqtzs\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - "._abc { - color: red; -} -._def { - background: green; + "./modules/tests-cases/comments/source.css", + "/* + * a ' above + */ + +._28-VAWbJ8gQCgX50Jcqtzs { + background-image: url(/webpack/public/path/img.png); } + +/* + * a ' below + */ ", "", ], ] `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`comments\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`false)\`: 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" option should work with case \`composes\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.c1) { a: 1; }\\\\n:local(.c2) { composes: c1; b: 1; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 1, - "._abc { - color: red; -} -._def { - background: green; -} + "./modules/tests-cases/composes/source.css", + ":local(.c1) { a: 1; } +:local(.c2) { composes: c1; b: 1; } ", "", ], ] `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "abc": "_1wzWGMZGmVz3uhGAmwbXwR", - "def": "_3zcEXyCxYPLdb_6bVqY6Df _1wzWGMZGmVz3uhGAmwbXwR", -} +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._2lVGKlfYXzywV6_acW1a3J { a: 1; }\\\\n._2FPXZHdIWogtLWkFQcjYj7 { b: 1; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_2lVGKlfYXzywV6_acW1a3J\\", + \\"c2\\": \\"_2FPXZHdIWogtLWkFQcjYj7 _2lVGKlfYXzywV6_acW1a3J\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - "._1wzWGMZGmVz3uhGAmwbXwR { - color: red; -} -._3zcEXyCxYPLdb_6bVqY6Df { - background: green; -} + "./modules/tests-cases/composes/source.css", + "._2lVGKlfYXzywV6_acW1a3J { a: 1; } +._2FPXZHdIWogtLWkFQcjYj7 { b: 1; } ", "", ], ] `; -exports[`modules case \`local-and-composes\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-with-string\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -exports[`modules case \`local-with-string\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._2lVGKlfYXzywV6_acW1a3J { a: 1; }\\\\n._2FPXZHdIWogtLWkFQcjYj7 { b: 1; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_2lVGKlfYXzywV6_acW1a3J\\", + \\"c2\\": \\"_2FPXZHdIWogtLWkFQcjYj7 _2lVGKlfYXzywV6_acW1a3J\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`local-with-string\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - ":local(.c1[data-attr=\\".c2)]'\\"]:not(.c3):not(.c4)) { - background: red; -} + "./modules/tests-cases/composes/source.css", + "._2lVGKlfYXzywV6_acW1a3J { a: 1; } +._2FPXZHdIWogtLWkFQcjYj7 { b: 1; } ", "", ], ] `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-with-string\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`object with mode 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" option should work with case \`composes\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._c1 { a: 1; }\\\\n._c2 { b: 1; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1\\", + \\"c2\\": \\"_c2 _c1\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) { - background: red; -} + "./modules/tests-cases/composes/source.css", + "._c1 { a: 1; } +._c2 { b: 1; } ", "", ], ] `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-with-string\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`object with mode 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" option should work with case \`composes\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._c1 { a: 1; }\\\\n._c2 { b: 1; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1\\", + \\"c2\\": \\"_c2 _c1\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) { - background: red; -} + "./modules/tests-cases/composes/source.css", + "._c1 { a: 1; } +._c2 { b: 1; } ", "", ], ] `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`true)\`: 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" option should work with case \`composes\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._2lVGKlfYXzywV6_acW1a3J { a: 1; }\\\\n._2FPXZHdIWogtLWkFQcjYj7 { b: 1; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_2lVGKlfYXzywV6_acW1a3J\\", + \\"c2\\": \\"_2FPXZHdIWogtLWkFQcjYj7 _2lVGKlfYXzywV6_acW1a3J\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - "._c1[data-attr=\\".c2)]'\\"]:not(._c3):not(._c4) { - background: red; -} + "./modules/tests-cases/composes/source.css", + "._2lVGKlfYXzywV6_acW1a3J { a: 1; } +._2FPXZHdIWogtLWkFQcjYj7 { b: 1; } ", "", ], ] `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`false)\`: 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" option should work with case \`composes-1\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.c1) { composes: c2 from \\\\\\"./file.css\\\\\\"; b: 1; }\\\\n:local(.c3) { composes: c1; b: 3; }\\\\n:local(.c5) { composes: c2 c4 from \\\\\\"./file.css\\\\\\"; b: 5; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 1, - "._c1[data-attr=\\".c2)]'\\"]:not(._c3):not(._c4) { - background: red; -} + "./modules/tests-cases/composes-1/source.css", + ":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 \`local-with-string\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`local-with-string\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`global)\`: 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" option should work with case \`composes-1\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._1DZQbqp1oX8etdFa5oSOnV { b: 1; }\\\\n._1PKuwglb3xQB3gwJBZx6_G { b: 3; }\\\\n._1MtdK0_soIbU20fcYBbRAe { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1DZQbqp1oX8etdFa5oSOnV \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c3\\": \\"_1PKuwglb3xQB3gwJBZx6_G _1DZQbqp1oX8etdFa5oSOnV \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c5\\": \\"_1MtdK0_soIbU20fcYBbRAe \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) { - background: red; + "../../src/index.js?[ident]!./modules/tests-cases/composes-1/file.css", + "._1xYJRliqpSHYzUvktbdaCo { + color: red; +} + +._1jdJRc6HaM3lHykxBSOeII { + color: blue; +} + +.test{ + c: d } +", + "", + ], + Array [ + "./modules/tests-cases/composes-1/source.css", + "._1DZQbqp1oX8etdFa5oSOnV { b: 1; } +._1PKuwglb3xQB3gwJBZx6_G { b: 3; } +._1MtdK0_soIbU20fcYBbRAe { b: 5; } ", "", ], ] `; -exports[`modules case \`local-with-string\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._1DZQbqp1oX8etdFa5oSOnV { b: 1; }\\\\n._1PKuwglb3xQB3gwJBZx6_G { b: 3; }\\\\n._1MtdK0_soIbU20fcYBbRAe { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1DZQbqp1oX8etdFa5oSOnV \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c3\\": \\"_1PKuwglb3xQB3gwJBZx6_G _1DZQbqp1oX8etdFa5oSOnV \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c5\\": \\"_1MtdK0_soIbU20fcYBbRAe \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`media\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - "@value small: (max-width: 599px); - -@media small { - .header { - box-shadow: 0 0 4px #1F4F7F; - } + "../../src/index.js?[ident]!./modules/tests-cases/composes-1/file.css", + "._1xYJRliqpSHYzUvktbdaCo { + color: red; +} + +._1jdJRc6HaM3lHykxBSOeII { + color: blue; +} + +._3YdnDqqBfyyJ_9JKWIle3X{ + c: d } +", + "", + ], + Array [ + "./modules/tests-cases/composes-1/source.css", + "._1DZQbqp1oX8etdFa5oSOnV { b: 1; } +._1PKuwglb3xQB3gwJBZx6_G { b: 3; } +._1MtdK0_soIbU20fcYBbRAe { b: 5; } ", "", ], ] `; -exports[`modules case \`media\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "small": "(max-width: 599px)", -} +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._c1 { b: 1; }\\\\n._c3 { b: 3; }\\\\n._c5 { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c3\\": \\"_c3 _c1 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c5\\": \\"_c5 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`media\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - "@media (max-width: 599px) { - .header { - box-shadow: 0 0 4px #1F4F7F; - } + "../../src/index.js?[ident]!./modules/tests-cases/composes-1/file.css", + "._c2 { + color: red; +} + +._c4 { + color: blue; +} + +.test{ + c: d } +", + "", + ], + Array [ + "./modules/tests-cases/composes-1/source.css", + "._c1 { b: 1; } +._c3 { b: 3; } +._c5 { b: 5; } ", "", ], ] `; -exports[`modules case \`media\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "header": "_1wyVAJXtjGZLoQNO_yG8b3", - "small": "(max-width: 599px)", -} +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._c1 { b: 1; }\\\\n._c3 { b: 3; }\\\\n._c5 { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c3\\": \\"_c3 _c1 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c5\\": \\"_c5 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`media\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - "@media (max-width: 599px) { - ._1wyVAJXtjGZLoQNO_yG8b3 { - box-shadow: 0 0 4px #1F4F7F; - } + "../../src/index.js?[ident]!./modules/tests-cases/composes-1/file.css", + "._c2 { + color: red; +} + +._c4 { + color: blue; } + +._test{ + c: d +} +", + "", + ], + Array [ + "./modules/tests-cases/composes-1/source.css", + "._c1 { b: 1; } +._c3 { b: 3; } +._c5 { b: 5; } ", "", ], ] `; -exports[`modules case \`media\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "small": "(max-width: 599px)", -} +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._1DZQbqp1oX8etdFa5oSOnV { b: 1; }\\\\n._1PKuwglb3xQB3gwJBZx6_G { b: 3; }\\\\n._1MtdK0_soIbU20fcYBbRAe { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1DZQbqp1oX8etdFa5oSOnV \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c3\\": \\"_1PKuwglb3xQB3gwJBZx6_G _1DZQbqp1oX8etdFa5oSOnV \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\"\\", + \\"c5\\": \\"_1MtdK0_soIbU20fcYBbRAe \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`media\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - "@media (max-width: 599px) { - .header { - box-shadow: 0 0 4px #1F4F7F; - } + "../../src/index.js?[ident]!./modules/tests-cases/composes-1/file.css", + "._1xYJRliqpSHYzUvktbdaCo { + color: red; +} + +._1jdJRc6HaM3lHykxBSOeII { + color: blue; +} + +._3YdnDqqBfyyJ_9JKWIle3X{ + c: d } +", + "", + ], + Array [ + "./modules/tests-cases/composes-1/source.css", + "._1DZQbqp1oX8etdFa5oSOnV { b: 1; } +._1PKuwglb3xQB3gwJBZx6_G { b: 3; } +._1MtdK0_soIbU20fcYBbRAe { b: 5; } ", "", ], ] `; -exports[`modules case \`media\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-1\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`false)\`: 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" option should work with case \`composes-2\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.c1) { composes: c-2 from \\\\\\"./file.css\\\\\\"; b: 1; }\\\\n:local(.c3) { composes: c1; b: 3; }\\\\n:local(.c5) { composes: c-2 c4 from \\\\\\"./file.css\\\\\\"; b: 5; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`media\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 1, - "@media (max-width: 599px) { - ._header { - box-shadow: 0 0 4px #1F4F7F; - } -} + "./modules/tests-cases/composes-2/source.css", + ":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 \`media\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules case \`media\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "header": "_1wyVAJXtjGZLoQNO_yG8b3", - "small": "(max-width: 599px)", -} +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; }\\\\n._1TPNBQGz_snQ6aGvXARYo0 { b: 3; }\\\\n.rkDOmH5RkgZGaQ5Fey09Z { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_2tj5Xzv7Ei8HGFvkrlGXyv \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c3\\": \\"_1TPNBQGz_snQ6aGvXARYo0 _2tj5Xzv7Ei8HGFvkrlGXyv \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c5\\": \\"rkDOmH5RkgZGaQ5Fey09Z \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`media\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - "@media (max-width: 599px) { - ._1wyVAJXtjGZLoQNO_yG8b3 { - box-shadow: 0 0 4px #1F4F7F; - } + "../../src/index.js?[ident]!./modules/tests-cases/composes-2/file.css", + "._3CxjkH18CkEkRZ4FO4v-NQ { + color: red; +} + +.G8VU3XI3HtOvZPlSEb9S3 { + color: blue; +} + +.test{ + c: d } ", "", ], -] -`; - -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; - } -} + "./modules/tests-cases/composes-2/source.css", + "._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; } +._1TPNBQGz_snQ6aGvXARYo0 { b: 3; } +.rkDOmH5RkgZGaQ5Fey09Z { b: 5; } ", "", ], ] `; -exports[`modules case \`media-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "small": "(max-width: 599px)", -} +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; }\\\\n._1TPNBQGz_snQ6aGvXARYo0 { b: 3; }\\\\n.rkDOmH5RkgZGaQ5Fey09Z { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_2tj5Xzv7Ei8HGFvkrlGXyv \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c3\\": \\"_1TPNBQGz_snQ6aGvXARYo0 _2tj5Xzv7Ei8HGFvkrlGXyv \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c5\\": \\"rkDOmH5RkgZGaQ5Fey09Z \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`media-2\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 2, - " + "../../src/index.js?[ident]!./modules/tests-cases/composes-2/file.css", + "._3CxjkH18CkEkRZ4FO4v-NQ { + color: red; +} + +.G8VU3XI3HtOvZPlSEb9S3 { + color: blue; +} + +._10rrqoQ7Mb3ZcY6LixlnpR{ + c: d +} ", "", ], Array [ - 1, - "@media (max-width: 599px) { - .header { - box-shadow: 0 0 4px #1F4F7F; - } -} + "./modules/tests-cases/composes-2/source.css", + "._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; } +._1TPNBQGz_snQ6aGvXARYo0 { b: 3; } +.rkDOmH5RkgZGaQ5Fey09Z { b: 5; } ", "", ], ] `; -exports[`modules case \`media-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "header": "UbDEjEuweJXO7yHMpC8qp", - "small": "(max-width: 599px)", -} +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._c1 { b: 1; }\\\\n._c3 { b: 3; }\\\\n._c5 { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c3\\": \\"_c3 _c1 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c5\\": \\"_c5 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`media-2\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 2, - " + "../../src/index.js?[ident]!./modules/tests-cases/composes-2/file.css", + "._c-2 { + color: red; +} + +._c4 { + color: blue; +} + +.test{ + c: d +} ", "", ], Array [ - 1, - "@media (max-width: 599px) { - .UbDEjEuweJXO7yHMpC8qp { - box-shadow: 0 0 4px #1F4F7F; - } -} + "./modules/tests-cases/composes-2/source.css", + "._c1 { b: 1; } +._c3 { b: 3; } +._c5 { b: 5; } ", "", ], ] `; -exports[`modules case \`media-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "small": "(max-width: 599px)", -} +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._c1 { b: 1; }\\\\n._c3 { b: 3; }\\\\n._c5 { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c3\\": \\"_c3 _c1 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c5\\": \\"_c5 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`media-2\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 2, - " + "../../src/index.js?[ident]!./modules/tests-cases/composes-2/file.css", + "._c-2 { + color: red; +} + +._c4 { + color: blue; +} + +._test{ + c: d +} ", "", ], Array [ - 1, - "@media (max-width: 599px) { - .header { - box-shadow: 0 0 4px #1F4F7F; - } -} + "./modules/tests-cases/composes-2/source.css", + "._c1 { b: 1; } +._c3 { b: 3; } +._c5 { b: 5; } ", "", ], ] `; -exports[`modules case \`media-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`true)\`: 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" option should work with case \`composes-2\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; }\\\\n._1TPNBQGz_snQ6aGvXARYo0 { b: 3; }\\\\n.rkDOmH5RkgZGaQ5Fey09Z { b: 5; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_2tj5Xzv7Ei8HGFvkrlGXyv \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c3\\": \\"_1TPNBQGz_snQ6aGvXARYo0 _2tj5Xzv7Ei8HGFvkrlGXyv \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\"\\", + \\"c5\\": \\"rkDOmH5RkgZGaQ5Fey09Z \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c-2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"c4\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`media-2\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 2, - " + "../../src/index.js?[ident]!./modules/tests-cases/composes-2/file.css", + "._3CxjkH18CkEkRZ4FO4v-NQ { + color: red; +} + +.G8VU3XI3HtOvZPlSEb9S3 { + color: blue; +} + +._10rrqoQ7Mb3ZcY6LixlnpR{ + c: d +} ", "", ], Array [ - 1, - "@media (max-width: 599px) { - ._header { - box-shadow: 0 0 4px #1F4F7F; - } -} + "./modules/tests-cases/composes-2/source.css", + "._2tj5Xzv7Ei8HGFvkrlGXyv { b: 1; } +._1TPNBQGz_snQ6aGvXARYo0 { b: 3; } +.rkDOmH5RkgZGaQ5Fey09Z { b: 5; } ", "", ], ] `; -exports[`modules case \`media-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -exports[`modules case \`media-2\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "header": "UbDEjEuweJXO7yHMpC8qp", - "small": "(max-width: 599px)", -} -`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.abc) {\\\\n composes: def1 from \\\\\\"./file1.css\\\\\\";\\\\n composes: def2 from \\\\\\"./file2.css\\\\\\";\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`modules case \`media-2\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 2, - " -", - "", - ], - Array [ - 1, - "@media (max-width: 599px) { - .UbDEjEuweJXO7yHMpC8qp { - box-shadow: 0 0 4px #1F4F7F; - } + "./modules/tests-cases/composes-multiple/source.css", + ":local(.abc) { + composes: def1 from \\"./file1.css\\"; + composes: def2 from \\"./file2.css\\"; } ", "", @@ -3501,178 +4516,199 @@ Array [ ] `; -exports[`modules case \`media-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`mode-switching\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules case \`mode-switching\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._1bAv4bLL8-hE3a7MyZXrT- {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_1bAv4bLL8-hE3a7MyZXrT- \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def2\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`mode-switching\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - ".c1 :local .c2 .c3 :global .c4 :local .c5, .c6 :local .c7 { background: red; } -.c8 { background: red; } + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file1.css", + "._3hEvHUTrMHercKPgTBsK6W { + color: 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", + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file2.css", + "._1UYEX_kWsPgokwmdBHI8pU { + color: blue; } -`; - -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; } + "./modules/tests-cases/composes-multiple/source.css", + "._1bAv4bLL8-hE3a7MyZXrT- { +} ", "", ], ] `; -exports[`modules case \`mode-switching\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`mode-switching\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`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" option should work with case \`composes-multiple\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._1bAv4bLL8-hE3a7MyZXrT- {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_1bAv4bLL8-hE3a7MyZXrT- \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def2\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`mode-switching\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - "._sSeqF3tTS8i-oJLOiW66 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .sUDXsigYAAb8sNlOMs_Oc .FBEuAfqI8VKhU-w-9RNH { background: red; } -._1JUWq0LIxk9cx-H1cbqyAD { background: red; } + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file1.css", + "._3hEvHUTrMHercKPgTBsK6W { + color: 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", + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file2.css", + "._1UYEX_kWsPgokwmdBHI8pU { + color: blue; } -`; - -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; } + "./modules/tests-cases/composes-multiple/source.css", + "._1bAv4bLL8-hE3a7MyZXrT- { +} ", "", ], ] `; -exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: 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" option should work with case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._abc {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_abc \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def2\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - "._c1 ._c2 ._c3 .c4 ._c5, ._c6 ._c7 { background: red; } -._c8 { background: red; } + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file1.css", + "._def1 { + color: 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", + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file2.css", + "._def2 { + color: blue; } -`; - -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; } + "./modules/tests-cases/composes-multiple/source.css", + "._abc { +} ", "", ], ] `; -exports[`modules case \`mode-switching\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._abc {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_abc \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def2\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`simple\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - ".a .b, .c .d, #id { - color: green; - font-size: 1.5pt; + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file1.css", + "._def1 { + color: red; } -a[href=\\"#b.c\\"].x.y { - color: green; - font-size: 1.5pt; +", + "", + ], + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file2.css", + "._def2 { + color: blue; } -@keyframes z { - 2.5% {color: green;} +", + "", + ], + Array [ + "./modules/tests-cases/composes-multiple/source.css", + "._abc { } ", "", @@ -3680,26 +4716,49 @@ a[href=\\"#b.c\\"].x.y { ] `; -exports[`modules case \`simple\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`global)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._1bAv4bLL8-hE3a7MyZXrT- {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_1bAv4bLL8-hE3a7MyZXrT- \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def2\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`simple\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - ".a .b, .c .d, #id { - color: green; - font-size: 1.5pt; + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file1.css", + "._3hEvHUTrMHercKPgTBsK6W { + color: red; } -a[href=\\"#b.c\\"].x.y { - color: green; - font-size: 1.5pt; +", + "", + ], + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/composes-multiple/file2.css", + "._1UYEX_kWsPgokwmdBHI8pU { + color: blue; } -@keyframes z { - 2.5% {color: green;} +", + "", + ], + Array [ + "./modules/tests-cases/composes-multiple/source.css", + "._1bAv4bLL8-hE3a7MyZXrT- { } ", "", @@ -3707,37 +4766,27 @@ a[href=\\"#b.c\\"].x.y { ] `; -exports[`modules case \`simple\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-multiple\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`false)\`: 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" option should work with case \`composes-with-importing\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.abc) {\\\\n composes: def from \\\\\\"./file.css\\\\\\";\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`simple\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`false)\`: result 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;} + "./modules/tests-cases/composes-with-importing/source.css", + ":local(.abc) { + composes: def from \\"./file.css\\"; } ", "", @@ -3745,26 +4794,39 @@ a[href=\\"#b.c\\"]._3jqDKJEcQhMnSj5LXFzCMT._2CdavzdbxA-_uaXjgT2eG { ] `; -exports[`modules case \`simple\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`object with mode global)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._3sT-Lzs6aj6TM9J3mM7_Cj {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_3sT-Lzs6aj6TM9J3mM7_Cj \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`simple\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`global)\`: result 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; + "../../src/index.js?[ident]!./modules/tests-cases/composes-with-importing/file.css", + ".zu3DT3PNuTYdVravHX310 { + color: red; } -@keyframes z { - 2.5% {color: green;} +", + "", + ], + Array [ + "./modules/tests-cases/composes-with-importing/source.css", + "._3sT-Lzs6aj6TM9J3mM7_Cj { } ", "", @@ -3772,37 +4834,39 @@ a[href=\\"#b.c\\"].x.y { ] `; -exports[`modules case \`simple\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`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" option should work with case \`composes-with-importing\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._3sT-Lzs6aj6TM9J3mM7_Cj {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_3sT-Lzs6aj6TM9J3mM7_Cj \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`simple\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`local)\`: result 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; + "../../src/index.js?[ident]!./modules/tests-cases/composes-with-importing/file.css", + ".zu3DT3PNuTYdVravHX310 { + color: red; } -@keyframes _z { - 2.5% {color: green;} +", + "", + ], + Array [ + "./modules/tests-cases/composes-with-importing/source.css", + "._3sT-Lzs6aj6TM9J3mM7_Cj { } ", "", @@ -3810,37 +4874,39 @@ a[href=\\"#b.c\\"]._x._y { ] `; -exports[`modules case \`simple\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`simple\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: 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" option should work with case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._abc {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_abc \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`simple\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: result 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; + "../../src/index.js?[ident]!./modules/tests-cases/composes-with-importing/file.css", + "._def { + color: red; } -@keyframes eawDxhAAUQ-HvrUhhwSML { - 2.5% {color: green;} +", + "", + ], + Array [ + "./modules/tests-cases/composes-with-importing/source.css", + "._abc { } ", "", @@ -3848,59 +4914,39 @@ a[href=\\"#b.c\\"]._3jqDKJEcQhMnSj5LXFzCMT._2CdavzdbxA-_uaXjgT2eG { ] `; -exports[`modules case \`simple\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`urls\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -exports[`modules case \`urls\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._abc {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_abc \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`urls\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: result 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; + "../../src/index.js?[ident]!./modules/tests-cases/composes-with-importing/file.css", + "._def { + color: red; } ", "", ], -] -`; - -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; + "./modules/tests-cases/composes-with-importing/source.css", + "._abc { } ", "", @@ -3908,63 +4954,39 @@ Array [ ] `; -exports[`modules case \`urls\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`urls\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -exports[`modules case \`urls\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "a": "_1goi1QVFtUMjX82JoFfLLJ", -} +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._3sT-Lzs6aj6TM9J3mM7_Cj {\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_3sT-Lzs6aj6TM9J3mM7_Cj \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" `; -exports[`modules case \`urls\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`true)\`: result 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; + "../../src/index.js?[ident]!./modules/tests-cases/composes-with-importing/file.css", + ".zu3DT3PNuTYdVravHX310 { + color: red; } ", "", ], -] -`; - -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; + "./modules/tests-cases/composes-with-importing/source.css", + "._3sT-Lzs6aj6TM9J3mM7_Cj { } ", "", @@ -3972,33 +4994,29 @@ Array [ ] `; -exports[`modules case \`urls\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`composes-with-importing\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`urls\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -exports[`modules case \`urls\` (\`modules\` value is \`object with mode local)\`: locals 1`] = ` -Object { - "a": "_a", -} +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value blue: red;\\\\n\\\\n.a {\\\\n border: 1px solid blue;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`urls\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`false)\`: result 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; + "./modules/tests-cases/declaration-value/source.css", + "@value blue: red; + +.a { + border: 1px solid blue; } ", "", @@ -4006,33 +5024,30 @@ Array [ ] `; -exports[`modules case \`urls\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`urls\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules case \`urls\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "a": "_1goi1QVFtUMjX82JoFfLLJ", -} +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n border: 1px solid red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"blue\\": \\"red\\" +}; +module.exports = exports; +" `; -exports[`modules case \`urls\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`global)\`: result 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; + "./modules/tests-cases/declaration-value/source.css", + ".a { + border: 1px solid red; } ", "", @@ -4040,24 +5055,31 @@ Array [ ] `; -exports[`modules case \`urls\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -exports[`modules case \`values\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".rUmYXW8EUSiAHIrtvLLrL {\\\\n border: 1px solid red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"blue\\": \\"red\\", + \\"a\\": \\"rUmYXW8EUSiAHIrtvLLrL\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`values\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - "@value aaa: red; -@value bbb: green; -@value ccc: aaa; - -.a { - background: aaa; - background: bbb; - background: ccc; + "./modules/tests-cases/declaration-value/source.css", + ".rUmYXW8EUSiAHIrtvLLrL { + border: 1px solid red; } ", "", @@ -4065,26 +5087,30 @@ Array [ ] `; -exports[`modules case \`values\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules case \`values\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "aaa": "red", - "bbb": "green", - "ccc": "red", -} +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n border: 1px solid red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"blue\\": \\"red\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, + "./modules/tests-cases/declaration-value/source.css", ".a { - background: red; - background: green; - background: red; + border: 1px solid red; } ", "", @@ -4092,27 +5118,31 @@ Array [ ] `; -exports[`modules case \`values\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`object with mode 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" option should work with case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._a {\\\\n border: 1px solid red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"blue\\": \\"red\\", + \\"a\\": \\"_a\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - "._18yRHBx_s3xK1t_zOjEfo { - background: red; - background: green; - background: red; + "./modules/tests-cases/declaration-value/source.css", + "._a { + border: 1px solid red; } ", "", @@ -4120,26 +5150,31 @@ Array [ ] `; -exports[`modules case \`values\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`true)\`: 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" option should work with case \`declaration-value\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".rUmYXW8EUSiAHIrtvLLrL {\\\\n border: 1px solid red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"blue\\": \\"red\\", + \\"a\\": \\"rUmYXW8EUSiAHIrtvLLrL\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - ".a { - background: red; - background: green; - background: red; + "./modules/tests-cases/declaration-value/source.css", + ".rUmYXW8EUSiAHIrtvLLrL { + border: 1px solid red; } ", "", @@ -4147,27 +5182,31 @@ Array [ ] `; -exports[`modules case \`values\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`declaration-value\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`values\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`false)\`: 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" option should work with case \`issue-589\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"!!file-loader?esModule=false!./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"body:before {\\\\n content: '';\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 1, - "._a { - background: red; - background: green; - background: red; + "./modules/tests-cases/issue-589/source.css", + "body:before { + content: ''; + background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png); } ", "", @@ -4175,27 +5214,31 @@ Array [ ] `; -exports[`modules case \`values\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`values\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`global)\`: 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" option should work with case \`issue-589\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"!!file-loader?esModule=false!./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"body:before {\\\\n content: '';\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - "._18yRHBx_s3xK1t_zOjEfo { - background: red; - background: green; - background: red; + "./modules/tests-cases/issue-589/source.css", + "body:before { + content: ''; + background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png); } ", "", @@ -4203,1109 +5246,1211 @@ Array [ ] `; -exports[`modules case \`values\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-1\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -exports[`modules case \`values-1\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"!!file-loader?esModule=false!./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"body:before {\\\\n content: '';\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`modules case \`values-1\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - "@value def: red; -@value ghi: 1px solid black; + "./modules/tests-cases/issue-589/source.css", + "body:before { + content: ''; + background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png); +} ", "", ], ] `; -exports[`modules case \`values-1\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-1\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules case \`values-1\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "def": "red", - "ghi": "1px solid black", -} +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"!!file-loader?esModule=false!./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"body:before {\\\\n content: '';\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-1\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - " + "./modules/tests-cases/issue-589/source.css", + "body:before { + content: ''; + background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png); +} ", "", ], ] `; -exports[`modules case \`values-1\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-1\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -exports[`modules case \`values-1\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "def": "red", - "ghi": "1px solid black", -} +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"!!file-loader?esModule=false!./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"body:before {\\\\n content: '';\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-1\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - " + "./modules/tests-cases/issue-589/source.css", + "body:before { + content: ''; + background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png); +} ", "", ], ] `; -exports[`modules case \`values-1\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-1\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`true)\`: 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" option should work with case \`issue-589\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"!!file-loader?esModule=false!./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +// Module +exports.push([module.id, \\"body:before {\\\\n content: '';\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-1\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - " + "./modules/tests-cases/issue-589/source.css", + "body:before { + content: ''; + background: url(/webpack/public/path/5b1f36bc41ab31f5b801d48ba1d65781.png); +} ", "", ], ] `; -exports[`modules case \`values-1\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`issue-589\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-1\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: 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" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\\\n@keyframes bounce {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n@-webkit-keyframes bounce2 {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n.bounce {\\\\n\\\\tanimation-name: bounce;\\\\n\\\\tanimation: bounce2 1s ease;\\\\n}\\\\n\\\\n.bounce2 {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: bounce 1s ease;\\\\n\\\\tanimation-name: bounce2;\\\\n}\\\\n\\\\n.bounce3 {\\\\n\\\\tanimation: bounce 1s ease, bounce2\\\\n}\\\\n\\\\n.bounce4 {\\\\n\\\\tanimation: bounce 1s ease, bounce2;\\\\n}\\\\n\\\\n.b {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-1\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: result 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 []`; + "./modules/tests-cases/keyframes-and-animation/source.css", + ".a { + color: green; +} -exports[`modules case \`values-1\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "def": "red", - "ghi": "1px solid black", +@keyframes bounce { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } } -`; -exports[`modules case \`values-1\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - " -", - "", - ], -] -`; +@-webkit-keyframes bounce2 { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } +} + +.bounce { + animation-name: bounce; + animation: bounce2 1s ease; +} -exports[`modules case \`values-1\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +.bounce2 { + color: green; + animation: bounce 1s ease; + animation-name: bounce2; +} -exports[`modules case \`values-2\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +.bounce3 { + animation: bounce 1s ease, bounce2 +} -exports[`modules case \`values-2\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +.bounce4 { + animation: bounce 1s ease, bounce2; +} -exports[`modules case \`values-2\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "@value def: red; -.ghi { color: def; } +.b { + color: green; +} ", "", ], ] `; -exports[`modules case \`values-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules case \`values-2\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "def": "red", -} +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\\\n@keyframes bounce {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n@-webkit-keyframes bounce2 {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n.bounce {\\\\n\\\\tanimation-name: bounce;\\\\n\\\\tanimation: bounce2 1s ease;\\\\n}\\\\n\\\\n.bounce2 {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: bounce 1s ease;\\\\n\\\\tanimation-name: bounce2;\\\\n}\\\\n\\\\n.bounce3 {\\\\n\\\\tanimation: bounce 1s ease, bounce2\\\\n}\\\\n\\\\n.bounce4 {\\\\n\\\\tanimation: bounce 1s ease, bounce2;\\\\n}\\\\n\\\\n.b {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-2\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - ".ghi { color: red; } -", - "", - ], -] -`; - -exports[`modules case \`values-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + "./modules/tests-cases/keyframes-and-animation/source.css", + ".a { + color: green; +} -exports[`modules case \`values-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +@keyframes bounce { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } +} -exports[`modules case \`values-2\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "def": "red", - "ghi": "_2aKAT4pAinaabqEIFgdhTC", +@-webkit-keyframes bounce2 { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } } -`; -exports[`modules case \`values-2\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._2aKAT4pAinaabqEIFgdhTC { color: red; } -", - "", - ], -] -`; +.bounce { + animation-name: bounce; + animation: bounce2 1s ease; +} -exports[`modules case \`values-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +.bounce2 { + color: green; + animation: bounce 1s ease; + animation-name: bounce2; +} -exports[`modules case \`values-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +.bounce3 { + animation: bounce 1s ease, bounce2 +} -exports[`modules case \`values-2\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "def": "red", +.bounce4 { + animation: bounce 1s ease, bounce2; } -`; -exports[`modules case \`values-2\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".ghi { color: red; } +.b { + color: green; +} ", "", ], ] `; -exports[`modules case \`values-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`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" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1AzRoWem1zBzZ9hLlF5IJC {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\\\n@keyframes _355y8MvF-ilfLoMa6xQMuq {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n@-webkit-keyframes _20oF72x8NQuWNrNLEjvczE {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n._355y8MvF-ilfLoMa6xQMuq {\\\\n\\\\tanimation-name: _355y8MvF-ilfLoMa6xQMuq;\\\\n\\\\tanimation: _20oF72x8NQuWNrNLEjvczE 1s ease;\\\\n}\\\\n\\\\n._20oF72x8NQuWNrNLEjvczE {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: _355y8MvF-ilfLoMa6xQMuq 1s ease;\\\\n\\\\tanimation-name: _20oF72x8NQuWNrNLEjvczE;\\\\n}\\\\n\\\\n._3OQHSo2d42CWSR-npTXaic {\\\\n\\\\tanimation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE\\\\n}\\\\n\\\\n._3bL1lmhMKE-Qlk83VSMCHN {\\\\n\\\\tanimation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE;\\\\n}\\\\n\\\\n._1eH5GHM6EfKYOklEd2mhle {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"_1AzRoWem1zBzZ9hLlF5IJC\\", + \\"bounce\\": \\"_355y8MvF-ilfLoMa6xQMuq\\", + \\"bounce2\\": \\"_20oF72x8NQuWNrNLEjvczE\\", + \\"bounce3\\": \\"_3OQHSo2d42CWSR-npTXaic\\", + \\"bounce4\\": \\"_3bL1lmhMKE-Qlk83VSMCHN\\", + \\"b\\": \\"_1eH5GHM6EfKYOklEd2mhle\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-2\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - "._ghi { color: red; } -", - "", - ], -] -`; - -exports[`modules case \`values-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + "./modules/tests-cases/keyframes-and-animation/source.css", + "._1AzRoWem1zBzZ9hLlF5IJC { + color: green; +} -exports[`modules case \`values-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +@keyframes _355y8MvF-ilfLoMa6xQMuq { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } +} -exports[`modules case \`values-2\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "def": "red", - "ghi": "_2aKAT4pAinaabqEIFgdhTC", +@-webkit-keyframes _20oF72x8NQuWNrNLEjvczE { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } } -`; -exports[`modules case \`values-2\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._2aKAT4pAinaabqEIFgdhTC { color: red; } -", - "", - ], -] -`; +._355y8MvF-ilfLoMa6xQMuq { + animation-name: _355y8MvF-ilfLoMa6xQMuq; + animation: _20oF72x8NQuWNrNLEjvczE 1s ease; +} -exports[`modules case \`values-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +._20oF72x8NQuWNrNLEjvczE { + color: green; + animation: _355y8MvF-ilfLoMa6xQMuq 1s ease; + animation-name: _20oF72x8NQuWNrNLEjvczE; +} -exports[`modules case \`values-3\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +._3OQHSo2d42CWSR-npTXaic { + animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE +} -exports[`modules case \`values-3\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +._3bL1lmhMKE-Qlk83VSMCHN { + animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE; +} -exports[`modules case \`values-3\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "@value def from './file.css'; -.ghi { color: def; } +._1eH5GHM6EfKYOklEd2mhle { + color: green; +} ", "", ], ] `; -exports[`modules case \`values-3\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-3\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules case \`values-3\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "def": "red", -} +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\\\n@keyframes bounce {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n@-webkit-keyframes bounce2 {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n.bounce {\\\\n\\\\tanimation-name: bounce;\\\\n\\\\tanimation: bounce2 1s ease;\\\\n}\\\\n\\\\n.bounce2 {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: bounce 1s ease;\\\\n\\\\tanimation-name: bounce2;\\\\n}\\\\n\\\\n.bounce3 {\\\\n\\\\tanimation: bounce 1s ease, bounce2\\\\n}\\\\n\\\\n.bounce4 {\\\\n\\\\tanimation: bounce 1s ease, bounce2;\\\\n}\\\\n\\\\n.b {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-3\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 2, - " -", - "", - ], - Array [ - 1, - ".ghi { color: red; } -", - "", - ], -] -`; - -exports[`modules case \`values-3\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + "./modules/tests-cases/keyframes-and-animation/source.css", + ".a { + color: green; +} -exports[`modules case \`values-3\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +@keyframes bounce { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } +} -exports[`modules case \`values-3\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "def": "red", - "ghi": "_29ART3-NNe4DU1X-5_7419", +@-webkit-keyframes bounce2 { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } } -`; -exports[`modules case \`values-3\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - " -", - "", - ], - Array [ - 1, - "._29ART3-NNe4DU1X-5_7419 { color: red; } -", - "", - ], -] -`; +.bounce { + animation-name: bounce; + animation: bounce2 1s ease; +} -exports[`modules case \`values-3\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +.bounce2 { + color: green; + animation: bounce 1s ease; + animation-name: bounce2; +} -exports[`modules case \`values-3\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +.bounce3 { + animation: bounce 1s ease, bounce2 +} -exports[`modules case \`values-3\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "def": "red", +.bounce4 { + animation: bounce 1s ease, bounce2; } -`; -exports[`modules case \`values-3\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - " -", - "", - ], - Array [ - 1, - ".ghi { color: red; } +.b { + color: green; +} ", "", ], ] `; -exports[`modules case \`values-3\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`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" option should work with case \`keyframes-and-animation\` (\`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" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._a {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\\\n@keyframes _bounce {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n@-webkit-keyframes _bounce2 {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n._bounce {\\\\n\\\\tanimation-name: _bounce;\\\\n\\\\tanimation: _bounce2 1s ease;\\\\n}\\\\n\\\\n._bounce2 {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: _bounce 1s ease;\\\\n\\\\tanimation-name: _bounce2;\\\\n}\\\\n\\\\n._bounce3 {\\\\n\\\\tanimation: _bounce 1s ease, _bounce2\\\\n}\\\\n\\\\n._bounce4 {\\\\n\\\\tanimation: _bounce 1s ease, _bounce2;\\\\n}\\\\n\\\\n._b {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"_a\\", + \\"bounce\\": \\"_bounce\\", + \\"bounce2\\": \\"_bounce2\\", + \\"bounce3\\": \\"_bounce3\\", + \\"bounce4\\": \\"_bounce4\\", + \\"b\\": \\"_b\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-3\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 2, - " -", - "", - ], - Array [ - 1, - "._ghi { color: red; } -", - "", - ], -] -`; - -exports[`modules case \`values-3\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + "./modules/tests-cases/keyframes-and-animation/source.css", + "._a { + color: green; +} -exports[`modules case \`values-3\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +@keyframes _bounce { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } +} -exports[`modules case \`values-3\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "def": "red", - "ghi": "_29ART3-NNe4DU1X-5_7419", +@-webkit-keyframes _bounce2 { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } } -`; -exports[`modules case \`values-3\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` -Array [ - Array [ - 2, - " -", - "", - ], - Array [ - 1, - "._29ART3-NNe4DU1X-5_7419 { color: red; } -", - "", - ], -] -`; +._bounce { + animation-name: _bounce; + animation: _bounce2 1s ease; +} -exports[`modules case \`values-3\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +._bounce2 { + color: green; + animation: _bounce 1s ease; + animation-name: _bounce2; +} -exports[`modules case \`values-4\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +._bounce3 { + animation: _bounce 1s ease, _bounce2 +} -exports[`modules case \`values-4\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +._bounce4 { + animation: _bounce 1s ease, _bounce2; +} -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; } +._b { + color: green; +} ", "", ], ] `; -exports[`modules case \`values-4\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-4\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -exports[`modules case \`values-4\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "aaa": "red", - "bbb": "green", -} +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1AzRoWem1zBzZ9hLlF5IJC {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\\\n@keyframes _355y8MvF-ilfLoMa6xQMuq {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n@-webkit-keyframes _20oF72x8NQuWNrNLEjvczE {\\\\n\\\\t0% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n\\\\t5% {\\\\n\\\\t\\\\ttransform: translateY(-100%);\\\\n\\\\t\\\\topacity: 0;\\\\n\\\\t}\\\\n}\\\\n\\\\n._355y8MvF-ilfLoMa6xQMuq {\\\\n\\\\tanimation-name: _355y8MvF-ilfLoMa6xQMuq;\\\\n\\\\tanimation: _20oF72x8NQuWNrNLEjvczE 1s ease;\\\\n}\\\\n\\\\n._20oF72x8NQuWNrNLEjvczE {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: _355y8MvF-ilfLoMa6xQMuq 1s ease;\\\\n\\\\tanimation-name: _20oF72x8NQuWNrNLEjvczE;\\\\n}\\\\n\\\\n._3OQHSo2d42CWSR-npTXaic {\\\\n\\\\tanimation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE\\\\n}\\\\n\\\\n._3bL1lmhMKE-Qlk83VSMCHN {\\\\n\\\\tanimation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE;\\\\n}\\\\n\\\\n._1eH5GHM6EfKYOklEd2mhle {\\\\n\\\\tcolor: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"_1AzRoWem1zBzZ9hLlF5IJC\\", + \\"bounce\\": \\"_355y8MvF-ilfLoMa6xQMuq\\", + \\"bounce2\\": \\"_20oF72x8NQuWNrNLEjvczE\\", + \\"bounce3\\": \\"_3OQHSo2d42CWSR-npTXaic\\", + \\"bounce4\\": \\"_3bL1lmhMKE-Qlk83VSMCHN\\", + \\"b\\": \\"_1eH5GHM6EfKYOklEd2mhle\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-4\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: result 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 []`; + "./modules/tests-cases/keyframes-and-animation/source.css", + "._1AzRoWem1zBzZ9hLlF5IJC { + color: green; +} -exports[`modules case \`values-4\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +@keyframes _355y8MvF-ilfLoMa6xQMuq { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } +} -exports[`modules case \`values-4\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "aaa": "red", - "bbb": "green", - "ghi": "_1vGjNPdz_qWrUvzTY2pCsS", +@-webkit-keyframes _20oF72x8NQuWNrNLEjvczE { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 5% { + transform: translateY(-100%); + opacity: 0; + } } -`; -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; } -", - "", - ], -] -`; +._355y8MvF-ilfLoMa6xQMuq { + animation-name: _355y8MvF-ilfLoMa6xQMuq; + animation: _20oF72x8NQuWNrNLEjvczE 1s ease; +} -exports[`modules case \`values-4\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +._20oF72x8NQuWNrNLEjvczE { + color: green; + animation: _355y8MvF-ilfLoMa6xQMuq 1s ease; + animation-name: _20oF72x8NQuWNrNLEjvczE; +} -exports[`modules case \`values-4\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +._3OQHSo2d42CWSR-npTXaic { + animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE +} -exports[`modules case \`values-4\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "aaa": "red", - "bbb": "green", +._3bL1lmhMKE-Qlk83VSMCHN { + animation: _355y8MvF-ilfLoMa6xQMuq 1s ease, _20oF72x8NQuWNrNLEjvczE; } -`; -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; } +._1eH5GHM6EfKYOklEd2mhle { + color: green; +} ", "", ], ] `; -exports[`modules case \`values-4\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`keyframes-and-animation\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-4\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`false)\`: 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" option should work with case \`leak-scope\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: a;\\\\n}\\\\n\\\\n@keyframes b {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.b {\\\\n\\\\tanimation: b;\\\\n}\\\\n\\\\n@keyframes :global(c) {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.c {\\\\n\\\\tanimation: c1;\\\\n\\\\tanimation: c2, c3, c4;\\\\n}\\\\n\\\\n@keyframes :global(d) {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n:global .d1 {\\\\n\\\\tanimation: d1;\\\\n\\\\tanimation: d2, d3, d4;\\\\n}\\\\n\\\\n:global(.d2) {\\\\n\\\\tanimation: d2;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-4\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`false)\`: result 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 []`; + "./modules/tests-cases/leak-scope/source.css", + ".a { + color: green; + animation: a; +} -exports[`modules case \`values-4\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +@keyframes b { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-4\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "aaa": "red", - "bbb": "green", - "ghi": "_1vGjNPdz_qWrUvzTY2pCsS", +.b { + animation: b; } -`; -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; } -", - "", - ], -] -`; +@keyframes :global(c) { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-4\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +.c { + animation: c1; + animation: c2, c3, c4; +} -exports[`modules case \`values-5\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +@keyframes :global(d) { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-5\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +:global .d1 { + animation: d1; + animation: d2, d3, d4; +} -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; } +:global(.d2) { + animation: d2; +} ", "", ], ] `; -exports[`modules case \`values-5\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-5\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`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" option should work with case \`leak-scope\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: a;\\\\n}\\\\n\\\\n@keyframes b {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.b {\\\\n\\\\tanimation: b;\\\\n}\\\\n\\\\n@keyframes c {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.c {\\\\n\\\\tanimation: c1;\\\\n\\\\tanimation: c2, c3, c4;\\\\n}\\\\n\\\\n@keyframes d {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.d1 {\\\\n\\\\tanimation: d1;\\\\n\\\\tanimation: d2, d3, d4;\\\\n}\\\\n\\\\n.d2 {\\\\n\\\\tanimation: d2;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-5\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`global)\`: result 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 []`; + "./modules/tests-cases/leak-scope/source.css", + ".a { + color: green; + animation: a; +} -exports[`modules case \`values-5\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +@keyframes b { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-5\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "color": "red", - "ghi": "_3Uw-A6Tr2LkIED6NTqwFvj", - "shadow": "0 0 red,0 0 red", +.b { + animation: b; } -`; -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; } -", - "", - ], -] -`; +@keyframes c { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-5\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +.c { + animation: c1; + animation: c2, c3, c4; +} -exports[`modules case \`values-5\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +@keyframes d { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-5\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "color": "red", - "shadow": "0 0 red,0 0 red", +.d1 { + animation: d1; + animation: d2, d3, d4; } -`; -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; } +.d2 { + animation: d2; +} ", "", ], ] `; -exports[`modules case \`values-5\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-5\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`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" option should work with case \`leak-scope\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1OjK2G7L6Ypn9Qqa8lly-H {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: _1OjK2G7L6Ypn9Qqa8lly-H;\\\\n}\\\\n\\\\n@keyframes _2cTRWn5QG4xtPeFL2wrKvv {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n._2cTRWn5QG4xtPeFL2wrKvv {\\\\n\\\\tanimation: _2cTRWn5QG4xtPeFL2wrKvv;\\\\n}\\\\n\\\\n@keyframes c {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n._3MHGI9_Tl4A_kJUxXx1q2j {\\\\n\\\\tanimation: _1PQ8UpcdVbFbAcYs6wdRXj;\\\\n\\\\tanimation: _3JhTjOsNov-pQXnd3o0JJ, _9skQ6KRXi6qCorV5zNSyV, _1Gh6Pqr28qXCExbnssOGX9;\\\\n}\\\\n\\\\n@keyframes d {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.d1 {\\\\n\\\\tanimation: d1;\\\\n\\\\tanimation: d2, d3, d4;\\\\n}\\\\n\\\\n.d2 {\\\\n\\\\tanimation: _35GAwk8Rb2LyIN0pSAXjyy;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"_1OjK2G7L6Ypn9Qqa8lly-H\\", + \\"b\\": \\"_2cTRWn5QG4xtPeFL2wrKvv\\", + \\"c\\": \\"_3MHGI9_Tl4A_kJUxXx1q2j\\", + \\"c1\\": \\"_1PQ8UpcdVbFbAcYs6wdRXj\\", + \\"c2\\": \\"_3JhTjOsNov-pQXnd3o0JJ\\", + \\"c3\\": \\"_9skQ6KRXi6qCorV5zNSyV\\", + \\"c4\\": \\"_1Gh6Pqr28qXCExbnssOGX9\\", + \\"d2\\": \\"_35GAwk8Rb2LyIN0pSAXjyy\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-5\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`local)\`: result 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 []`; + "./modules/tests-cases/leak-scope/source.css", + "._1OjK2G7L6Ypn9Qqa8lly-H { + color: green; + animation: _1OjK2G7L6Ypn9Qqa8lly-H; +} -exports[`modules case \`values-5\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +@keyframes _2cTRWn5QG4xtPeFL2wrKvv { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-5\` (\`modules\` value is \`true)\`: locals 1`] = ` -Object { - "color": "red", - "ghi": "_3Uw-A6Tr2LkIED6NTqwFvj", - "shadow": "0 0 red,0 0 red", +._2cTRWn5QG4xtPeFL2wrKvv { + animation: _2cTRWn5QG4xtPeFL2wrKvv; } -`; -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; } -", - "", - ], -] -`; +@keyframes c { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-5\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +._3MHGI9_Tl4A_kJUxXx1q2j { + animation: _1PQ8UpcdVbFbAcYs6wdRXj; + animation: _3JhTjOsNov-pQXnd3o0JJ, _9skQ6KRXi6qCorV5zNSyV, _1Gh6Pqr28qXCExbnssOGX9; +} -exports[`modules case \`values-6\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +@keyframes d { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-6\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +.d1 { + animation: d1; + animation: d2, d3, d4; +} -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; } +.d2 { + animation: _35GAwk8Rb2LyIN0pSAXjyy; +} ", "", ], ] `; -exports[`modules case \`values-6\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-6\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`object with mode 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" option should work with case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: a;\\\\n}\\\\n\\\\n@keyframes b {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.b {\\\\n\\\\tanimation: b;\\\\n}\\\\n\\\\n@keyframes c {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.c {\\\\n\\\\tanimation: c1;\\\\n\\\\tanimation: c2, c3, c4;\\\\n}\\\\n\\\\n@keyframes d {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.d1 {\\\\n\\\\tanimation: d1;\\\\n\\\\tanimation: d2, d3, d4;\\\\n}\\\\n\\\\n.d2 {\\\\n\\\\tanimation: d2;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-6\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`object with mode global)\`: result 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 []`; + "./modules/tests-cases/leak-scope/source.css", + ".a { + color: green; + animation: a; +} -exports[`modules case \`values-6\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +@keyframes b { + 0% { left: 10px; } + 100% { left: 20px; } +} -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", +.b { + animation: b; } -`; -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; } -", - "", - ], -] -`; +@keyframes c { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-6\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +.c { + animation: c1; + animation: c2, c3, c4; +} -exports[`modules case \`values-6\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +@keyframes d { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-6\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "color": "red", - "shadow": "0 0 red ,0 0 red", +.d1 { + animation: d1; + animation: d2, d3, d4; } -`; -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; } +.d2 { + animation: d2; +} ", "", ], ] `; -exports[`modules case \`values-6\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`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" option should work with case \`leak-scope\` (\`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" option should work with case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._a {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: _a;\\\\n}\\\\n\\\\n@keyframes _b {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n._b {\\\\n\\\\tanimation: _b;\\\\n}\\\\n\\\\n@keyframes c {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n._c {\\\\n\\\\tanimation: _c1;\\\\n\\\\tanimation: _c2, _c3, _c4;\\\\n}\\\\n\\\\n@keyframes d {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.d1 {\\\\n\\\\tanimation: d1;\\\\n\\\\tanimation: d2, d3, d4;\\\\n}\\\\n\\\\n.d2 {\\\\n\\\\tanimation: _d2;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"_a\\", + \\"b\\": \\"_b\\", + \\"c\\": \\"_c\\", + \\"c1\\": \\"_c1\\", + \\"c2\\": \\"_c2\\", + \\"c3\\": \\"_c3\\", + \\"c4\\": \\"_c4\\", + \\"d2\\": \\"_d2\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-6\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: result 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 []`; + "./modules/tests-cases/leak-scope/source.css", + "._a { + color: green; + animation: _a; +} -exports[`modules case \`values-6\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +@keyframes _b { + 0% { left: 10px; } + 100% { left: 20px; } +} -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", +._b { + animation: _b; } -`; -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; } -", - "", - ], -] -`; +@keyframes c { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-6\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +._c { + animation: _c1; + animation: _c2, _c3, _c4; +} -exports[`modules case \`values-7\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +@keyframes d { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-7\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +.d1 { + animation: d1; + animation: d2, d3, d4; +} -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; } +.d2 { + animation: _d2; +} ", "", ], ] `; -exports[`modules case \`values-7\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-7\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`true)\`: 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" option should work with case \`leak-scope\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1OjK2G7L6Ypn9Qqa8lly-H {\\\\n\\\\tcolor: green;\\\\n\\\\tanimation: _1OjK2G7L6Ypn9Qqa8lly-H;\\\\n}\\\\n\\\\n@keyframes _2cTRWn5QG4xtPeFL2wrKvv {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n._2cTRWn5QG4xtPeFL2wrKvv {\\\\n\\\\tanimation: _2cTRWn5QG4xtPeFL2wrKvv;\\\\n}\\\\n\\\\n@keyframes c {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n._3MHGI9_Tl4A_kJUxXx1q2j {\\\\n\\\\tanimation: _1PQ8UpcdVbFbAcYs6wdRXj;\\\\n\\\\tanimation: _3JhTjOsNov-pQXnd3o0JJ, _9skQ6KRXi6qCorV5zNSyV, _1Gh6Pqr28qXCExbnssOGX9;\\\\n}\\\\n\\\\n@keyframes d {\\\\n\\\\t0% { left: 10px; }\\\\n\\\\t100% { left: 20px; }\\\\n}\\\\n\\\\n.d1 {\\\\n\\\\tanimation: d1;\\\\n\\\\tanimation: d2, d3, d4;\\\\n}\\\\n\\\\n.d2 {\\\\n\\\\tanimation: _35GAwk8Rb2LyIN0pSAXjyy;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"_1OjK2G7L6Ypn9Qqa8lly-H\\", + \\"b\\": \\"_2cTRWn5QG4xtPeFL2wrKvv\\", + \\"c\\": \\"_3MHGI9_Tl4A_kJUxXx1q2j\\", + \\"c1\\": \\"_1PQ8UpcdVbFbAcYs6wdRXj\\", + \\"c2\\": \\"_3JhTjOsNov-pQXnd3o0JJ\\", + \\"c3\\": \\"_9skQ6KRXi6qCorV5zNSyV\\", + \\"c4\\": \\"_1Gh6Pqr28qXCExbnssOGX9\\", + \\"d2\\": \\"_35GAwk8Rb2LyIN0pSAXjyy\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-7\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 2, - " -", - "", - ], - Array [ - 1, - ".ghi { box-shadow: 0 0 red, 0 0 red; } -", - "", - ], -] -`; + "./modules/tests-cases/leak-scope/source.css", + "._1OjK2G7L6Ypn9Qqa8lly-H { + color: green; + animation: _1OjK2G7L6Ypn9Qqa8lly-H; +} -exports[`modules case \`values-7\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +@keyframes _2cTRWn5QG4xtPeFL2wrKvv { + 0% { left: 10px; } + 100% { left: 20px; } +} -exports[`modules case \`values-7\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +._2cTRWn5QG4xtPeFL2wrKvv { + animation: _2cTRWn5QG4xtPeFL2wrKvv; +} -exports[`modules case \`values-7\` (\`modules\` value is \`local)\`: locals 1`] = ` -Object { - "color": "red", - "ghi": "_1SVUxnI1T0vYEcq2VXU5pr", - "shadow": "0 0 red, 0 0 red", +@keyframes c { + 0% { left: 10px; } + 100% { left: 20px; } } -`; -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; } +._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 \`values-7\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`leak-scope\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-7\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`false)\`: 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" option should work with case \`local\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".abc :local(.def) {\\\\n color: red;\\\\n}\\\\n\\\\n:local .ghi .jkl {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-7\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 2, - " -", - "", - ], - Array [ - 1, - ".ghi { box-shadow: 0 0 red, 0 0 red; } + "./modules/tests-cases/local/source.css", + ".abc :local(.def) { + color: red; +} + +:local .ghi .jkl { + color: blue; +} ", "", ], ] `; -exports[`modules case \`values-7\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-7\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`global)\`: 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" option should work with case \`local\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".abc ._1UnGDcMVVYIU_547CDqQJU {\\\\n color: red;\\\\n}\\\\n\\\\n._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"_1UnGDcMVVYIU_547CDqQJU\\", + \\"ghi\\": \\"_1k8c5svlAtK4vFkSsZdl4o\\", + \\"jkl\\": \\"pRQR9FSSkxNL6roex-uGp\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-7\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 2, - " + "./modules/tests-cases/local/source.css", + ".abc ._1UnGDcMVVYIU_547CDqQJU { + color: red; +} + +._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp { + color: blue; +} ", "", ], +] +`; + +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._2EPIUiYqPKxP0HS9Vgqa8e ._1UnGDcMVVYIU_547CDqQJU {\\\\n color: red;\\\\n}\\\\n\\\\n._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_2EPIUiYqPKxP0HS9Vgqa8e\\", + \\"def\\": \\"_1UnGDcMVVYIU_547CDqQJU\\", + \\"ghi\\": \\"_1k8c5svlAtK4vFkSsZdl4o\\", + \\"jkl\\": \\"pRQR9FSSkxNL6roex-uGp\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ Array [ - 1, - "._ghi { box-shadow: 0 0 red, 0 0 red; } + "./modules/tests-cases/local/source.css", + "._2EPIUiYqPKxP0HS9Vgqa8e ._1UnGDcMVVYIU_547CDqQJU { + color: red; +} + +._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp { + color: blue; +} ", "", ], ] `; -exports[`modules case \`values-7\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-7\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`object with mode global)\`: 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" option should work with case \`local\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".abc ._def {\\\\n color: red;\\\\n}\\\\n\\\\n._ghi ._jkl {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"_def\\", + \\"ghi\\": \\"_ghi\\", + \\"jkl\\": \\"_jkl\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-7\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 2, - " + "./modules/tests-cases/local/source.css", + ".abc ._def { + color: red; +} + +._ghi ._jkl { + color: blue; +} ", "", ], +] +`; + +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._abc ._def {\\\\n color: red;\\\\n}\\\\n\\\\n._ghi ._jkl {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_abc\\", + \\"def\\": \\"_def\\", + \\"ghi\\": \\"_ghi\\", + \\"jkl\\": \\"_jkl\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ Array [ - 1, - "._1SVUxnI1T0vYEcq2VXU5pr { box-shadow: 0 0 red, 0 0 red; } + "./modules/tests-cases/local/source.css", + "._abc ._def { + color: red; +} + +._ghi ._jkl { + color: blue; +} ", "", ], ] `; -exports[`modules case \`values-7\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-8\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -exports[`modules case \`values-8\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._2EPIUiYqPKxP0HS9Vgqa8e ._1UnGDcMVVYIU_547CDqQJU {\\\\n color: red;\\\\n}\\\\n\\\\n._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp {\\\\n color: blue;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_2EPIUiYqPKxP0HS9Vgqa8e\\", + \\"def\\": \\"_1UnGDcMVVYIU_547CDqQJU\\", + \\"ghi\\": \\"_1k8c5svlAtK4vFkSsZdl4o\\", + \\"jkl\\": \\"pRQR9FSSkxNL6roex-uGp\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`values-8\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - "@value shadow-color: rgba(0, 0, 0, 0.5); + "./modules/tests-cases/local/source.css", + "._2EPIUiYqPKxP0HS9Vgqa8e ._1UnGDcMVVYIU_547CDqQJU { + color: red; +} -.shadow { - box-shadow: 0 10px 10px shadow-color, - 10px 0px 5px shadow-color; +._1k8c5svlAtK4vFkSsZdl4o .pRQR9FSSkxNL6roex-uGp { + color: blue; } ", "", @@ -5313,167 +6458,230 @@ Array [ ] `; -exports[`modules case \`values-8\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-8\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`false)\`: 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" option should work with case \`local-2\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.className) { background: red; }\\\\n:local(#someId) { background: green; }\\\\n:local(.className .subClass) { color: green; }\\\\n:local(#someId .subClass) { color: blue; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules case \`values-8\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`false)\`: result 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); -} + "./modules/tests-cases/local-2/source.css", + ":local(.className) { background: red; } +:local(#someId) { background: green; } +:local(.className .subClass) { color: green; } +:local(#someId .subClass) { color: blue; } ", "", ], ] `; -exports[`modules case \`values-8\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-8\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`global)\`: 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" option should work with case \`local-2\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".PTH0TZDPxpREaV5cxtahd { background: red; }\\\\n#_1XQl0Np_jYcDGudXKxmL8A { background: green; }\\\\n.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; }\\\\n#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"className\\": \\"PTH0TZDPxpREaV5cxtahd\\", + \\"someId\\": \\"_1XQl0Np_jYcDGudXKxmL8A\\", + \\"subClass\\": \\"_2MrzTmc8jtF-E5FfuMPQie\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-8\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`global)\`: result 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); -} + "./modules/tests-cases/local-2/source.css", + ".PTH0TZDPxpREaV5cxtahd { background: red; } +#_1XQl0Np_jYcDGudXKxmL8A { background: green; } +.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; } +#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; } ", "", ], ] `; -exports[`modules case \`values-8\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-8\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`local)\`: 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" option should work with case \`local-2\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".PTH0TZDPxpREaV5cxtahd { background: red; }\\\\n#_1XQl0Np_jYcDGudXKxmL8A { background: green; }\\\\n.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; }\\\\n#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"className\\": \\"PTH0TZDPxpREaV5cxtahd\\", + \\"someId\\": \\"_1XQl0Np_jYcDGudXKxmL8A\\", + \\"subClass\\": \\"_2MrzTmc8jtF-E5FfuMPQie\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-8\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`local)\`: result 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); -} + "./modules/tests-cases/local-2/source.css", + ".PTH0TZDPxpREaV5cxtahd { background: red; } +#_1XQl0Np_jYcDGudXKxmL8A { background: green; } +.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; } +#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; } ", "", ], ] `; -exports[`modules case \`values-8\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-8\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`object with mode global)\`: 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" option should work with case \`local-2\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._className { background: red; }\\\\n#_someId { background: green; }\\\\n._className ._subClass { color: green; }\\\\n#_someId ._subClass { color: blue; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"className\\": \\"_className\\", + \\"someId\\": \\"_someId\\", + \\"subClass\\": \\"_subClass\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-8\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`object with mode global)\`: result 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); -} + "./modules/tests-cases/local-2/source.css", + "._className { background: red; } +#_someId { background: green; } +._className ._subClass { color: green; } +#_someId ._subClass { color: blue; } ", "", ], ] `; -exports[`modules case \`values-8\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-8\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`object with mode local)\`: 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" option should work with case \`local-2\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._className { background: red; }\\\\n#_someId { background: green; }\\\\n._className ._subClass { color: green; }\\\\n#_someId ._subClass { color: blue; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"className\\": \\"_className\\", + \\"someId\\": \\"_someId\\", + \\"subClass\\": \\"_subClass\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-8\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`object with mode local)\`: result 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); -} + "./modules/tests-cases/local-2/source.css", + "._className { background: red; } +#_someId { background: green; } +._className ._subClass { color: green; } +#_someId ._subClass { color: blue; } ", "", ], ] `; -exports[`modules case \`values-8\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".PTH0TZDPxpREaV5cxtahd { background: red; }\\\\n#_1XQl0Np_jYcDGudXKxmL8A { background: green; }\\\\n.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; }\\\\n#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"className\\": \\"PTH0TZDPxpREaV5cxtahd\\", + \\"someId\\": \\"_1XQl0Np_jYcDGudXKxmL8A\\", + \\"subClass\\": \\"_2MrzTmc8jtF-E5FfuMPQie\\" +}; +module.exports = exports; +" +`; -exports[`modules case \`values-9\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - "@value def: red; - -.foo1 { - prop: func(def); -} - -.foo2 { - prop: func(10px def); -} + "./modules/tests-cases/local-2/source.css", + ".PTH0TZDPxpREaV5cxtahd { background: red; } +#_1XQl0Np_jYcDGudXKxmL8A { background: green; } +.PTH0TZDPxpREaV5cxtahd ._2MrzTmc8jtF-E5FfuMPQie { color: green; } +#_1XQl0Np_jYcDGudXKxmL8A ._2MrzTmc8jtF-E5FfuMPQie { color: blue; } +", + "", + ], +] +`; -.foo3 { - prop: func(def 10px); -} +exports[`"modules" option should work with case \`local-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -.foo4 { - prop: func(10px def 10px); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -.foo5 { - prop: func(10px, def); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.abc) {\\\\n color: red;\\\\n}\\\\n:local(.def) {\\\\n composes: abc;\\\\n background: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -.foo6 { - prop: func(def, 10px); +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/local-and-composes/source.css", + ":local(.abc) { + color: red; } - -.foo7 { - prop: func(10px, def, 10px); +:local(.def) { + composes: abc; + background: green; } ", "", @@ -5481,46 +6689,69 @@ Array [ ] `; -exports[`modules case \`values-9\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`global)\`: locals 1`] = ` -Object { - "def": "red", -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1wzWGMZGmVz3uhGAmwbXwR {\\\\n color: red;\\\\n}\\\\n._3zcEXyCxYPLdb_6bVqY6Df {\\\\n background: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_1wzWGMZGmVz3uhGAmwbXwR\\", + \\"def\\": \\"_3zcEXyCxYPLdb_6bVqY6Df _1wzWGMZGmVz3uhGAmwbXwR\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-9\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - ".foo1 { - prop: func(red); + "./modules/tests-cases/local-and-composes/source.css", + "._1wzWGMZGmVz3uhGAmwbXwR { + color: red; } - -.foo2 { - prop: func(10px red); +._3zcEXyCxYPLdb_6bVqY6Df { + background: green; } +", + "", + ], +] +`; -.foo3 { - prop: func(red 10px); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -.foo4 { - prop: func(10px red 10px); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -.foo5 { - prop: func(10px, red); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1wzWGMZGmVz3uhGAmwbXwR {\\\\n color: red;\\\\n}\\\\n._3zcEXyCxYPLdb_6bVqY6Df {\\\\n background: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_1wzWGMZGmVz3uhGAmwbXwR\\", + \\"def\\": \\"_3zcEXyCxYPLdb_6bVqY6Df _1wzWGMZGmVz3uhGAmwbXwR\\" +}; +module.exports = exports; +" +`; -.foo6 { - prop: func(red, 10px); +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/local-and-composes/source.css", + "._1wzWGMZGmVz3uhGAmwbXwR { + color: red; } - -.foo7 { - prop: func(10px, red, 10px); +._3zcEXyCxYPLdb_6bVqY6Df { + background: green; } ", "", @@ -5528,53 +6759,69 @@ Array [ ] `; -exports[`modules case \`values-9\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: 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" option should work with case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._abc {\\\\n color: red;\\\\n}\\\\n._def {\\\\n background: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_abc\\", + \\"def\\": \\"_def _abc\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-9\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - "._1V2U7x4U8oxxooLcDA25iL { - prop: func(red); + "./modules/tests-cases/local-and-composes/source.css", + "._abc { + color: red; } - -._3E1mOwwzg7yDREAM1sTqrf { - prop: func(10px red); +._def { + background: green; } +", + "", + ], +] +`; -._1jURUggvUGFLzQ1zAWjNep { - prop: func(red 10px); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -._2gTeanreYt1oKNw6pvYDuQ { - prop: func(10px red 10px); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -._1FHimE7YIOvZ66qJzb5oD7 { - prop: func(10px, red); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._abc {\\\\n color: red;\\\\n}\\\\n._def {\\\\n background: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_abc\\", + \\"def\\": \\"_def _abc\\" +}; +module.exports = exports; +" +`; -._2ZsNKxzBYz6NW_ITMiAbSo { - prop: func(red, 10px); +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/local-and-composes/source.css", + "._abc { + color: red; } - -._18TpSE38_jlCbLotZMXh67 { - prop: func(10px, red, 10px); +._def { + background: green; } ", "", @@ -5582,46 +6829,62 @@ Array [ ] `; -exports[`modules case \`values-9\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`object with mode global)\`: locals 1`] = ` -Object { - "def": "red", -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1wzWGMZGmVz3uhGAmwbXwR {\\\\n color: red;\\\\n}\\\\n._3zcEXyCxYPLdb_6bVqY6Df {\\\\n background: green;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"abc\\": \\"_1wzWGMZGmVz3uhGAmwbXwR\\", + \\"def\\": \\"_3zcEXyCxYPLdb_6bVqY6Df _1wzWGMZGmVz3uhGAmwbXwR\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-9\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - ".foo1 { - prop: func(red); -} - -.foo2 { - prop: func(10px red); + "./modules/tests-cases/local-and-composes/source.css", + "._1wzWGMZGmVz3uhGAmwbXwR { + color: red; } - -.foo3 { - prop: func(red 10px); +._3zcEXyCxYPLdb_6bVqY6Df { + background: green; } +", + "", + ], +] +`; -.foo4 { - prop: func(10px red 10px); -} +exports[`"modules" option should work with case \`local-and-composes\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -.foo5 { - prop: func(10px, red); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -.foo6 { - prop: func(red, 10px); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\":local(.c1[data-attr=\\\\\\".c2)]'\\\\\\"]:not(.c3):not(.c4)) {\\\\n background: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -.foo7 { - prop: func(10px, red, 10px); +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/local-with-string/source.css", + ":local(.c1[data-attr=\\".c2)]'\\"]:not(.c3):not(.c4)) { + background: red; } ", "", @@ -5629,53 +6892,65 @@ Array [ ] `; -exports[`modules case \`values-9\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`global)\`: 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" option should work with case \`local-with-string\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\\\\\".c2)]'\\\\\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) {\\\\n background: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1sz8PE1ejGPcGRSnIAWKZt\\", + \\"c3\\": \\"_2DFDxRic974g-wJ7S9rbP1\\", + \\"c4\\": \\"xo8O_am1gQUkHa-_J-WSe\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-9\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - "._foo1 { - prop: func(red); -} - -._foo2 { - prop: func(10px red); -} - -._foo3 { - prop: func(red 10px); + "./modules/tests-cases/local-with-string/source.css", + "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) { + background: red; } +", + "", + ], +] +`; -._foo4 { - prop: func(10px red 10px); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -._foo5 { - prop: func(10px, red); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -._foo6 { - prop: func(red, 10px); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\\\\\".c2)]'\\\\\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) {\\\\n background: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1sz8PE1ejGPcGRSnIAWKZt\\", + \\"c3\\": \\"_2DFDxRic974g-wJ7S9rbP1\\", + \\"c4\\": \\"xo8O_am1gQUkHa-_J-WSe\\" +}; +module.exports = exports; +" +`; -._foo7 { - prop: func(10px, red, 10px); +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/local-with-string/source.css", + "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) { + background: red; } ", "", @@ -5683,53 +6958,98 @@ Array [ ] `; -exports[`modules case \`values-9\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-9\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: 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" option should work with case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._c1[data-attr=\\\\\\".c2)]'\\\\\\"]:not(._c3):not(._c4) {\\\\n background: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1\\", + \\"c3\\": \\"_c3\\", + \\"c4\\": \\"_c4\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-9\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - "._1V2U7x4U8oxxooLcDA25iL { - prop: func(red); + "./modules/tests-cases/local-with-string/source.css", + "._c1[data-attr=\\".c2)]'\\"]:not(._c3):not(._c4) { + background: red; } +", + "", + ], +] +`; -._3E1mOwwzg7yDREAM1sTqrf { - prop: func(10px red); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -._1jURUggvUGFLzQ1zAWjNep { - prop: func(red 10px); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -._2gTeanreYt1oKNw6pvYDuQ { - prop: func(10px red 10px); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._c1[data-attr=\\\\\\".c2)]'\\\\\\"]:not(._c3):not(._c4) {\\\\n background: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1\\", + \\"c3\\": \\"_c3\\", + \\"c4\\": \\"_c4\\" +}; +module.exports = exports; +" +`; -._1FHimE7YIOvZ66qJzb5oD7 { - prop: func(10px, red); +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/local-with-string/source.css", + "._c1[data-attr=\\".c2)]'\\"]:not(._c3):not(._c4) { + background: red; } +", + "", + ], +] +`; -._2ZsNKxzBYz6NW_ITMiAbSo { - prop: func(red, 10px); -} +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -._18TpSE38_jlCbLotZMXh67 { - prop: func(10px, red, 10px); +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\\\\\".c2)]'\\\\\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) {\\\\n background: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_1sz8PE1ejGPcGRSnIAWKZt\\", + \\"c3\\": \\"_2DFDxRic974g-wJ7S9rbP1\\", + \\"c4\\": \\"xo8O_am1gQUkHa-_J-WSe\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/local-with-string/source.css", + "._1sz8PE1ejGPcGRSnIAWKZt[data-attr=\\".c2)]'\\"]:not(._2DFDxRic974g-wJ7S9rbP1):not(.xo8O_am1gQUkHa-_J-WSe) { + background: red; } ", "", @@ -5737,32 +7057,30 @@ Array [ ] `; -exports[`modules case \`values-9\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`local-with-string\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-10\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -exports[`modules case \`values-10\` (\`modules\` value is \`false)\`: locals 1`] = `undefined`; +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value small: (max-width: 599px);\\\\n\\\\n@media small {\\\\n .header {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`modules case \`values-10\` (\`modules\` value is \`false)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`false)\`: result 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; -} + "./modules/tests-cases/media/source.css", + "@value small: (max-width: 599px); -@media m-large { +@media small { .header { - padding: 0 20px; + box-shadow: 0 0 4px #1F4F7F; } } ", @@ -5771,34 +7089,31 @@ Array [ ] `; -exports[`modules case \`values-10\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-10\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`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" option should work with case \`media\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@media (max-width: 599px) {\\\\n .header {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"(max-width: 599px)\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-10\` (\`modules\` value is \`global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 1, - ".header { - color: #BF4040; - padding: 0 10px; -} - -.black-selector { - color: black; -} - -@media (min-width: 960px) { + "./modules/tests-cases/media/source.css", + "@media (max-width: 599px) { .header { - padding: 0 20px; + box-shadow: 0 0 4px #1F4F7F; } } ", @@ -5807,36 +7122,32 @@ Array [ ] `; -exports[`modules case \`values-10\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-10\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`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" option should work with case \`media\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@media (max-width: 599px) {\\\\n ._1wyVAJXtjGZLoQNO_yG8b3 {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"(max-width: 599px)\\", + \\"header\\": \\"_1wyVAJXtjGZLoQNO_yG8b3\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-10\` (\`modules\` value is \`local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - ".ODvOrT6QaJbrNxuVwTgHn { - color: #BF4040; - padding: 0 10px; -} - -._3xId28FIeFVmNWx5IWeWqN { - color: black; -} - -@media (min-width: 960px) { - .ODvOrT6QaJbrNxuVwTgHn { - padding: 0 20px; + "./modules/tests-cases/media/source.css", + "@media (max-width: 599px) { + ._1wyVAJXtjGZLoQNO_yG8b3 { + box-shadow: 0 0 4px #1F4F7F; } } ", @@ -5845,34 +7156,31 @@ Array [ ] `; -exports[`modules case \`values-10\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-10\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`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" option should work with case \`media\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@media (max-width: 599px) {\\\\n .header {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"(max-width: 599px)\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-10\` (\`modules\` value is \`object with mode global)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - ".header { - color: #BF4040; - padding: 0 10px; -} - -.black-selector { - color: black; -} - -@media (min-width: 960px) { + "./modules/tests-cases/media/source.css", + "@media (max-width: 599px) { .header { - padding: 0 20px; + box-shadow: 0 0 4px #1F4F7F; } } ", @@ -5881,36 +7189,32 @@ Array [ ] `; -exports[`modules case \`values-10\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`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" option should work with case \`media\` (\`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" option should work with case \`media\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@media (max-width: 599px) {\\\\n ._header {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"(max-width: 599px)\\", + \\"header\\": \\"_header\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-10\` (\`modules\` value is \`object with mode local)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - "._header { - color: #BF4040; - padding: 0 10px; -} - -._black-selector { - color: black; -} - -@media (min-width: 960px) { + "./modules/tests-cases/media/source.css", + "@media (max-width: 599px) { ._header { - padding: 0 20px; + box-shadow: 0 0 4px #1F4F7F; } } ", @@ -5919,36 +7223,63 @@ Array [ ] `; -exports[`modules case \`values-10\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -exports[`modules case \`values-10\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`media\` (\`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" option should work with case \`media\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@media (max-width: 599px) {\\\\n ._1wyVAJXtjGZLoQNO_yG8b3 {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"(max-width: 599px)\\", + \\"header\\": \\"_1wyVAJXtjGZLoQNO_yG8b3\\" +}; +module.exports = exports; +" `; -exports[`modules case \`values-10\` (\`modules\` value is \`true)\`: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - ".ODvOrT6QaJbrNxuVwTgHn { - color: #BF4040; - padding: 0 10px; + "./modules/tests-cases/media/source.css", + "@media (max-width: 599px) { + ._1wyVAJXtjGZLoQNO_yG8b3 { + box-shadow: 0 0 4px #1F4F7F; + } } +", + "", + ], +] +`; -._3xId28FIeFVmNWx5IWeWqN { - color: black; -} +exports[`"modules" option should work with case \`media\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -@media (min-width: 960px) { - .ODvOrT6QaJbrNxuVwTgHn { - padding: 0 20px; +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value small from './file.css';\\\\n@media small {\\\\n .header {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/media-2/source.css", + "@value small from './file.css'; +@media small { + .header { + box-shadow: 0 0 4px #1F4F7F; } } ", @@ -5957,402 +7288,480 @@ Array [ ] `; -exports[`modules case \`values-10\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules composes should supports resolving: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\" {\\\\n .header {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\"\\" +}; +module.exports = exports; +" +`; -exports[`modules composes should supports resolving: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./modules/tests-cases/media-2/file.css", " ", "", ], Array [ - 3, - " + "./modules/tests-cases/media-2/source.css", + "@media (max-width: 599px) { + .header { + box-shadow: 0 0 4px #1F4F7F; + } +} ", "", ], +] +`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\" {\\\\n .UbDEjEuweJXO7yHMpC8qp {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\"\\", + \\"header\\": \\"UbDEjEuweJXO7yHMpC8qp\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ Array [ - 4, - "._22ETk3ZhhvjVe-4dAULcsF { - display: block; -} + "../../src/index.js?[ident]!./modules/tests-cases/media-2/file.css", + " ", "", ], Array [ - 5, - ".dSGVakTZ8YY-XNW64tg9F { - display: inline; + "./modules/tests-cases/media-2/source.css", + "@media (max-width: 599px) { + .UbDEjEuweJXO7yHMpC8qp { + box-shadow: 0 0 4px #1F4F7F; + } } ", "", ], +] +`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\" {\\\\n .header {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ Array [ - 6, - "._1SUuyapRQ82dAPS8r7zmpY { - display: flex; -} + "../../src/index.js?[ident]!./modules/tests-cases/media-2/file.css", + " ", "", ], Array [ - 7, - "._2n5szs-7uGKzfFTp9NTK64 { - display: inline-block; + "./modules/tests-cases/media-2/source.css", + "@media (max-width: 599px) { + .header { + box-shadow: 0 0 4px #1F4F7F; + } } ", "", ], +] +`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\" {\\\\n ._header {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\"\\", + \\"header\\": \\"_header\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ Array [ - 8, - "._37nzOIvIANGnEtP1lWjZDN { - display: table; -} + "../../src/index.js?[ident]!./modules/tests-cases/media-2/file.css", + " ", "", ], Array [ - 9, - "._2Nehoi0wFTN-8p0fEfvUYd { - d: d; + "./modules/tests-cases/media-2/source.css", + "@media (max-width: 599px) { + ._header { + box-shadow: 0 0 4px #1F4F7F; + } } ", - "(min-width: 100px)", + "", ], - Array [ - 1, - "._14uFt0lIVKKAlKTTT29IIQ { - color: red; -} +] +`; -._3XDgIzfUIQkaUInpEdo7fN { - color: blue; -} +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -._1wABXM_RabWHj--wsPrhvM { - display: block; -} +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -._1DFEYnAfn9LZyk4fErI86e { - width: 2112moon; -} +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\" {\\\\n .UbDEjEuweJXO7yHMpC8qp {\\\\n box-shadow: 0 0 4px #1F4F7F;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"small\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"small\\"] + \\"\\", + \\"header\\": \\"UbDEjEuweJXO7yHMpC8qp\\" +}; +module.exports = exports; +" +`; -.Ywv5coVC2RU-pIFhN9O4w { - color: green; +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/media-2/file.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/media-2/source.css", + "@media (max-width: 599px) { + .UbDEjEuweJXO7yHMpC8qp { + box-shadow: 0 0 4px #1F4F7F; + } } +", + "", + ], +] +`; -._1tAbIwITRWAdZZE6wKNk9O { - prop: red; - duplicate: green; -} +exports[`"modules" option should work with case \`media-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -.Q3SQ3BwtBwUFLlg6adzOI { - color: red; -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -._1n5XhXj4SFnYrwziC3un0d { - color: yellow; -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".c1 :local .c2 .c3 :global .c4 :local .c5, .c6 :local .c7 { background: red; }\\\\n.c8 { background: red; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -._3dnFnGkAVAiMA6etF-naHc { - color: gray; -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/mode-switching/source.css", + ".c1 :local .c2 .c3 :global .c4 :local .c5, .c6 :local .c7 { background: red; } +.c8 { background: red; } +", + "", + ], +] +`; -._1xUePnlnafMQ1cExy3PUWT { - color: gray; -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -._26Jdfenl9Xn8HXwb2jipvt { - color: gainsboro; -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -._1ya4VhsDkuPhQeVHQydw2Y { - color: #BF4040; -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".c1 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .c6 .FBEuAfqI8VKhU-w-9RNH { background: red; }\\\\n.c8 { background: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c2\\": \\"LgC5kpXZK3IOCPWWctF7f\\", + \\"c3\\": \\"_2ZTY7KJ2nkQND4VqlaSz9a\\", + \\"c5\\": \\"tEu6_PTqhxImp1tyYQTWz\\", + \\"c7\\": \\"FBEuAfqI8VKhU-w-9RNH\\" +}; +module.exports = exports; +" +`; -.sGE1Q_LliVEZU2Q4q9j4K { - color: black; -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/mode-switching/source.css", + ".c1 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .c6 .FBEuAfqI8VKhU-w-9RNH { background: red; } +.c8 { background: red; } +", + "", + ], +] +`; -@media (min-width: 960px) { - ._2zSMJ4hQh0FesbZjiKW_ya { - padding: 0 20px; - } -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -.white { - color: white; -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -@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" option should work with case \`mode-switching\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._sSeqF3tTS8i-oJLOiW66 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .sUDXsigYAAb8sNlOMs_Oc .FBEuAfqI8VKhU-w-9RNH { background: red; }\\\\n._1JUWq0LIxk9cx-H1cbqyAD { background: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_sSeqF3tTS8i-oJLOiW66\\", + \\"c2\\": \\"LgC5kpXZK3IOCPWWctF7f\\", + \\"c3\\": \\"_2ZTY7KJ2nkQND4VqlaSz9a\\", + \\"c5\\": \\"tEu6_PTqhxImp1tyYQTWz\\", + \\"c6\\": \\"sUDXsigYAAb8sNlOMs_Oc\\", + \\"c7\\": \\"FBEuAfqI8VKhU-w-9RNH\\", + \\"c8\\": \\"_1JUWq0LIxk9cx-H1cbqyAD\\" +}; +module.exports = exports; +" +`; -._340mxt1qHaYWfC81FJUajb { - background: url(/webpack/public/path/img.png); -} +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/mode-switching/source.css", + "._sSeqF3tTS8i-oJLOiW66 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .sUDXsigYAAb8sNlOMs_Oc .FBEuAfqI8VKhU-w-9RNH { background: red; } +._1JUWq0LIxk9cx-H1cbqyAD { background: red; } ", "", ], ] `; -exports[`modules composes should supports resolving: module 1`] = ` +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./values.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../src/index.js??ref--4-0!./something.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_2___ = require(\\"-!../../../src/index.js??ref--4-0!./imported-simple.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_3___ = require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_4___ = require(\\"-!../../../src/index.js??ref--4-0!../modules/top-relative.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_5___ = require(\\"-!../../../src/index.js??ref--4-0!package/style.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_6___ = require(\\"-!../../../src/index.js??ref--4-0!aliasesComposes/alias.css\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./test-other.css\\"); -var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); -var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"../url/img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_ICSS_IMPORT_0___); -exports.i(___CSS_LOADER_ICSS_IMPORT_1___); -exports.i(___CSS_LOADER_ICSS_IMPORT_2___); -exports.i(___CSS_LOADER_ICSS_IMPORT_3___); -exports.i(___CSS_LOADER_ICSS_IMPORT_4___); -exports.i(___CSS_LOADER_ICSS_IMPORT_5___); -exports.i(___CSS_LOADER_ICSS_IMPORT_6___); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___, \\"(min-width: 100px)\\"); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\"._14uFt0lIVKKAlKTTT29IIQ {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.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: \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"v-something\\"] + \\";\\\\n}\\\\n\\\\n.Ywv5coVC2RU-pIFhN9O4w {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\";\\\\n}\\\\n\\\\n._1tAbIwITRWAdZZE6wKNk9O {\\\\n prop: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\";\\\\n duplicate: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.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.\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"s-white\\"] + \\" {\\\\n color: white;\\\\n}\\\\n\\\\n@media \\" + ___CSS_LOADER_ICSS_IMPORT_0___.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\\\\n._340mxt1qHaYWfC81FJUajb {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\", \\"\\"]); +exports.push([module.id, \\".c1 ._c2 ._c3 .c4 ._c5, .c6 ._c7 { background: red; }\\\\n.c8 { background: red; }\\\\n\\", \\"\\"]); // Exports exports.locals = { - \\"v-def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-def\\"] + \\"\\", - \\"v-other\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"v-other\\"] + \\"\\", - \\"s-white\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"s-white\\"] + \\"\\", - \\"m-small\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"m-small\\"] + \\"\\", - \\"v-something\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.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 \\" + ___CSS_LOADER_ICSS_IMPORT_2___.locals[\\"imported-simple\\"] + \\"\\", - \\"relative\\": \\"_1n5XhXj4SFnYrwziC3un0d \\" + ___CSS_LOADER_ICSS_IMPORT_3___.locals[\\"imported-relative\\"] + \\"\\", - \\"top-relative\\": \\"_3dnFnGkAVAiMA6etF-naHc \\" + ___CSS_LOADER_ICSS_IMPORT_4___.locals[\\"imported-relative\\"] + \\"\\", - \\"module\\": \\"_1xUePnlnafMQ1cExy3PUWT \\" + ___CSS_LOADER_ICSS_IMPORT_5___.locals[\\"imported-module\\"] + \\"\\", - \\"alias\\": \\"_26Jdfenl9Xn8HXwb2jipvt \\" + ___CSS_LOADER_ICSS_IMPORT_6___.locals[\\"imported-alias\\"] + \\"\\", - \\"primary-selector\\": \\"_1ya4VhsDkuPhQeVHQydw2Y\\", - \\"black-selector\\": \\"sGE1Q_LliVEZU2Q4q9j4K\\", - \\"header\\": \\"_2zSMJ4hQh0FesbZjiKW_ya\\", - \\"foobarbaz\\": \\"_3qS0_85PLYhk_pNQ69KfSo\\", - \\"url\\": \\"_340mxt1qHaYWfC81FJUajb\\" -};" -`; - -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", -} + \\"c2\\": \\"_c2\\", + \\"c3\\": \\"_c3\\", + \\"c5\\": \\"_c5\\", + \\"c7\\": \\"_c7\\" +}; +module.exports = exports; +" `; -exports[`modules getLocalIdent should be allowed to return false: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - ".abc .def { - color: red; -} - -.ghi .jkl { - color: blue; -} + "./modules/tests-cases/mode-switching/source.css", + ".c1 ._c2 ._c3 .c4 ._c5, .c6 ._c7 { background: red; } +.c8 { background: red; } ", "", ], ] `; -exports[`modules getLocalIdent should be allowed to return false: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -exports[`modules issue #286: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._c1 ._c2 ._c3 .c4 ._c5, ._c6 ._c7 { background: red; }\\\\n._c8 { background: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"c1\\": \\"_c1\\", + \\"c2\\": \\"_c2\\", + \\"c3\\": \\"_c3\\", + \\"c5\\": \\"_c5\\", + \\"c6\\": \\"_c6\\", + \\"c7\\": \\"_c7\\", + \\"c8\\": \\"_c8\\" +}; +module.exports = exports; +" +`; -exports[`modules issue #286: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 2, - ".a--red { color: red } -", - "", - ], - Array [ - 1, - ".b--main { } + "./modules/tests-cases/mode-switching/source.css", + "._c1 ._c2 ._c3 .c4 ._c5, ._c6 ._c7 { background: red; } +._c8 { background: red; } ", "", ], ] `; -exports[`modules issue #286: module 1`] = ` +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`true)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); -var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"./dep.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\".b--main { }\\\\n\\", \\"\\"]); +exports.push([module.id, \\"._sSeqF3tTS8i-oJLOiW66 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .sUDXsigYAAb8sNlOMs_Oc .FBEuAfqI8VKhU-w-9RNH { background: red; }\\\\n._1JUWq0LIxk9cx-H1cbqyAD { background: red; }\\\\n\\", \\"\\"]); // Exports exports.locals = { - \\"main\\": \\"b--main \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"red\\"] + \\"\\" -};" + \\"c1\\": \\"_sSeqF3tTS8i-oJLOiW66\\", + \\"c2\\": \\"LgC5kpXZK3IOCPWWctF7f\\", + \\"c3\\": \\"_2ZTY7KJ2nkQND4VqlaSz9a\\", + \\"c5\\": \\"tEu6_PTqhxImp1tyYQTWz\\", + \\"c6\\": \\"sUDXsigYAAb8sNlOMs_Oc\\", + \\"c7\\": \\"FBEuAfqI8VKhU-w-9RNH\\", + \\"c8\\": \\"_1JUWq0LIxk9cx-H1cbqyAD\\" +}; +module.exports = exports; +" `; -exports[`modules issue #286: warnings 1`] = `Array []`; - -exports[`modules issue #636: errors 1`] = `Array []`; - -exports[`modules issue #636: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 2, - ".prefix-foo { - color: red; -}", - "", - ], - Array [ - 1, - ".prefix-bar { -}", + "./modules/tests-cases/mode-switching/source.css", + "._sSeqF3tTS8i-oJLOiW66 .LgC5kpXZK3IOCPWWctF7f ._2ZTY7KJ2nkQND4VqlaSz9a .c4 .tEu6_PTqhxImp1tyYQTWz, .sUDXsigYAAb8sNlOMs_Oc .FBEuAfqI8VKhU-w-9RNH { background: red; } +._1JUWq0LIxk9cx-H1cbqyAD { background: red; } +", "", ], ] `; -exports[`modules issue #636: module 1`] = ` +exports[`"modules" option should work with case \`mode-switching\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`false)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); -var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??ref--4-0!../../../../node_modules/sass-loader/dist/cjs.js??ref--4-1!./foo.scss\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\".prefix-bar {\\\\n}\\", \\"\\"]); +exports.push([module.id, \\".a .b, .c .d, #id {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\na[href=\\\\\\"#b.c\\\\\\"].x.y {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\n@keyframes z {\\\\n 2.5% {color: green;}\\\\n}\\\\n\\", \\"\\"]); // Exports -exports.locals = { - \\"bar\\": \\"prefix-bar \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"foo\\"] + \\"\\" -};" +module.exports = exports; +" `; -exports[`modules issue #636: warnings 1`] = `Array []`; - -exports[`modules issue #861: errors 1`] = `Array []`; - -exports[`modules issue #861: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 2, - " -", - "", - ], - Array [ - 4, - "._1ef5Heix1Kf4k0qYvyWRRO { - display: flex; + "./modules/tests-cases/simple/source.css", + ".a .b, .c .d, #id { + color: green; + font-size: 1.5pt; } -", - "", - ], - Array [ - 3, - ".L8pnpYm5VAu49S290uPMA { - color: red; - margin: 0; - padding: 0; +a[href=\\"#b.c\\"].x.y { + color: green; + font-size: 1.5pt; +} +@keyframes z { + 2.5% {color: green;} } ", "", ], +] +`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a .b, .c .d, #id {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\na[href=\\\\\\"#b.c\\\\\\"].x.y {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\n@keyframes z {\\\\n 2.5% {color: green;}\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ Array [ - 1, - "._2gV2e6TcHcPgyDTzxbvkKa { - color: gray; - margin: 0; - padding: 0; + "./modules/tests-cases/simple/source.css", + ".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;} } ", "", @@ -6360,33 +7769,45 @@ Array [ ] `; -exports[`modules issue #861: module 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`local)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!@localpackage/color.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../src/index.js??ref--4-0!@localpackage/style.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_ICSS_IMPORT_0___); -exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\"._2gV2e6TcHcPgyDTzxbvkKa {\\\\n color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color-grey\\"] + \\";\\\\n margin: 0;\\\\n padding: 0;\\\\n}\\\\n\\", \\"\\"]); +exports.push([module.id, \\"._3Usq4DWpHHUfARGj76o2W1 ._2sE42PHfIbHjbGigpdA5M2, ._3JN7IxYrHx5fpD-QuNH8Vg ._169FAY78xdP6MpwfqxWVlS, #_2w6DrNK6drHoI8na0s2YJu {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\na[href=\\\\\\"#b.c\\\\\\"]._3jqDKJEcQhMnSj5LXFzCMT._2CdavzdbxA-_uaXjgT2eG {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\n@keyframes eawDxhAAUQ-HvrUhhwSML {\\\\n 2.5% {color: green;}\\\\n}\\\\n\\", \\"\\"]); // Exports exports.locals = { - \\"color-grey\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color-grey\\"] + \\"\\", - \\"copyright\\": \\"_2gV2e6TcHcPgyDTzxbvkKa \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"type-heading\\"] + \\"\\" -};" + \\"a\\": \\"_3Usq4DWpHHUfARGj76o2W1\\", + \\"b\\": \\"_2sE42PHfIbHjbGigpdA5M2\\", + \\"c\\": \\"_3JN7IxYrHx5fpD-QuNH8Vg\\", + \\"d\\": \\"_169FAY78xdP6MpwfqxWVlS\\", + \\"id\\": \\"_2w6DrNK6drHoI8na0s2YJu\\", + \\"x\\": \\"_3jqDKJEcQhMnSj5LXFzCMT\\", + \\"y\\": \\"_2CdavzdbxA-_uaXjgT2eG\\", + \\"z\\": \\"eawDxhAAUQ-HvrUhhwSML\\" +}; +module.exports = exports; +" `; -exports[`modules issue #861: warnings 1`] = `Array []`; - -exports[`modules issue #966: errors 1`] = `Array []`; - -exports[`modules issue #966: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`local)\`: result 1`] = ` Array [ Array [ - 1, - ".button.hey { - color: red; + "./modules/tests-cases/simple/source.css", + "._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;} } ", "", @@ -6394,36 +7815,35 @@ Array [ ] `; -exports[`modules issue #966: module 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\".button.hey {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +exports.push([module.id, \\".a .b, .c .d, #id {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\na[href=\\\\\\"#b.c\\\\\\"].x.y {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\n@keyframes z {\\\\n 2.5% {color: green;}\\\\n}\\\\n\\", \\"\\"]); // Exports -exports.locals = { - \\"button\\": \\"button.hey\\" -};" +module.exports = exports; +" `; -exports[`modules issue #966: warnings 1`] = `Array []`; - -exports[`modules issue #967: errors 1`] = `Array []`; - -exports[`modules issue #967: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - ".modules-path-placeholder__foo__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- { - color: red; + "./modules/tests-cases/simple/source.css", + ".a .b, .c .d, #id { + color: green; + font-size: 1.5pt; } - -.modules-path-placeholder__foo\\\\/bar__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- { - color: blue; +a[href=\\"#b.c\\"].x.y { + color: green; + font-size: 1.5pt; } - -.modules-path-placeholder__\\\\[\\\\/\\\\?\\\\<\\\\>\\\\\\\\\\\\\\\\\\\\3A \\\\*\\\\|\\\\\\"\\\\3A \\\\]__--sep---sep---sep---sep----sep---sep---sep---sep---sep-- { - color: yellow; +@keyframes z { + 2.5% {color: green;} } ", "", @@ -6431,30 +7851,45 @@ Array [ ] `; -exports[`modules issue #967: module 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(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.push([module.id, \\"._a ._b, ._c ._d, #_id {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\na[href=\\\\\\"#b.c\\\\\\"]._x._y {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\n@keyframes _z {\\\\n 2.5% {color: green;}\\\\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--\\" -};" + \\"a\\": \\"_a\\", + \\"b\\": \\"_b\\", + \\"c\\": \\"_c\\", + \\"d\\": \\"_d\\", + \\"id\\": \\"_id\\", + \\"x\\": \\"_x\\", + \\"y\\": \\"_y\\", + \\"z\\": \\"_z\\" +}; +module.exports = exports; +" `; -exports[`modules issue #967: warnings 1`] = `Array []`; - -exports[`modules issue #980: errors 1`] = `Array []`; - -exports[`modules issue #980: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - ".file-with-many-dots-in-name_a_1j0Lw { - color: red; + "./modules/tests-cases/simple/source.css", + "._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;} } ", "", @@ -6462,118 +7897,228 @@ Array [ ] `; -exports[`modules issue #980: module 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`true)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\".file-with-many-dots-in-name_a_1j0Lw {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +exports.push([module.id, \\"._3Usq4DWpHHUfARGj76o2W1 ._2sE42PHfIbHjbGigpdA5M2, ._3JN7IxYrHx5fpD-QuNH8Vg ._169FAY78xdP6MpwfqxWVlS, #_2w6DrNK6drHoI8na0s2YJu {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\na[href=\\\\\\"#b.c\\\\\\"]._3jqDKJEcQhMnSj5LXFzCMT._2CdavzdbxA-_uaXjgT2eG {\\\\n\\\\tcolor: green;\\\\n\\\\tfont-size: 1.5pt;\\\\n}\\\\n@keyframes eawDxhAAUQ-HvrUhhwSML {\\\\n 2.5% {color: green;}\\\\n}\\\\n\\", \\"\\"]); // Exports exports.locals = { - \\"a\\": \\"file-with-many-dots-in-name_a_1j0Lw\\" -};" + \\"a\\": \\"_3Usq4DWpHHUfARGj76o2W1\\", + \\"b\\": \\"_2sE42PHfIbHjbGigpdA5M2\\", + \\"c\\": \\"_3JN7IxYrHx5fpD-QuNH8Vg\\", + \\"d\\": \\"_169FAY78xdP6MpwfqxWVlS\\", + \\"id\\": \\"_2w6DrNK6drHoI8na0s2YJu\\", + \\"x\\": \\"_3jqDKJEcQhMnSj5LXFzCMT\\", + \\"y\\": \\"_2CdavzdbxA-_uaXjgT2eG\\", + \\"z\\": \\"eawDxhAAUQ-HvrUhhwSML\\" +}; +module.exports = exports; +" `; -exports[`modules issue #980: warnings 1`] = `Array []`; - -exports[`modules issue #995: errors 1`] = `Array []`; - -exports[`modules issue #995: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 1, - "/* class=\\"😀\\" */ -.a { - color: red; + "./modules/tests-cases/simple/source.css", + "._3Usq4DWpHHUfARGj76o2W1 ._2sE42PHfIbHjbGigpdA5M2, ._3JN7IxYrHx5fpD-QuNH8Vg ._169FAY78xdP6MpwfqxWVlS, #_2w6DrNK6drHoI8na0s2YJu { + color: green; + font-size: 1.5pt; } - -/* class=\\"😀 😓\\" */ -.a.b { - color: red; -} - -/* class=\\"😀\\" > class=\\"😓\\" */ -.a .b { - color: red; -} - -/* class=\\"😀\\" */ -.😀 { - color: red; +a[href=\\"#b.c\\"]._3jqDKJEcQhMnSj5LXFzCMT._2CdavzdbxA-_uaXjgT2eG { + color: green; + font-size: 1.5pt; } - -/* class=\\"😀 😓\\" */ -.😀.😓 { - color: red; +@keyframes eawDxhAAUQ-HvrUhhwSML { + 2.5% {color: green;} } +", + "", + ], +] +`; -/* class=\\"😀\\" > class=\\"😓\\" */ -.😀 .😓 { - color: red; -} +exports[`"modules" option should work with case \`simple\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -/* class=\\"😀\\" */ -.\\\\1F600 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -/* class=\\"😀 😓\\" */ -.\\\\1F600.\\\\1F613 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./img img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#?iefix\\" }); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n\\\\tbackground: url(\\\\\\"#hash\\\\\\");\\\\n\\\\tbackground: url(\\\\\\"#\\\\\\");\\\\n\\\\tbackground: url(data:image/png;base64,AAA);\\\\n\\\\tbackground: url(http://example.com/image.jpg);\\\\n\\\\tbackground: url(//example.com/image.png);\\\\n\\\\tbackground: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") xyz;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -/* class=\\"😀\\" > class=\\"😓\\" */ -.\\\\1F600 .\\\\1F613 { - color: red; +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/urls/source.css", + ".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; } +", + "", + ], +] +`; -/* Local */ +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -/* class=\\"😀\\" */ -.\\\\1F600 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -/* class=\\"😀 😓\\" */ -.\\\\1F600.\\\\1F600 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./img img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#?iefix\\" }); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n\\\\tbackground: url(\\\\\\"#hash\\\\\\");\\\\n\\\\tbackground: url(\\\\\\"#\\\\\\");\\\\n\\\\tbackground: url(data:image/png;base64,AAA);\\\\n\\\\tbackground: url(http://example.com/image.jpg);\\\\n\\\\tbackground: url(//example.com/image.png);\\\\n\\\\tbackground: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") xyz;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -/* class=\\"😀\\" > class=\\"😓\\" */ -.\\\\1F600 .\\\\1F600 { - color: red; +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/urls/source.css", + ".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; } +", + "", + ], +] +`; -.\\\\1F600 .a .\\\\1F600 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -.\\\\1F600 .\\\\1F600 .\\\\1F600 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -div:not(.\\\\1F600) { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./img img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#?iefix\\" }); +// Module +exports.push([module.id, \\"._1goi1QVFtUMjX82JoFfLLJ {\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n\\\\tbackground: url(\\\\\\"#hash\\\\\\");\\\\n\\\\tbackground: url(\\\\\\"#\\\\\\");\\\\n\\\\tbackground: url(data:image/png;base64,AAA);\\\\n\\\\tbackground: url(http://example.com/image.jpg);\\\\n\\\\tbackground: url(//example.com/image.png);\\\\n\\\\tbackground: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") xyz;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"_1goi1QVFtUMjX82JoFfLLJ\\" +}; +module.exports = exports; +" +`; -.\\\\1F600 .b { - color: red; +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/urls/source.css", + "._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; } +", + "", + ], +] +`; -.b .\\\\1F600 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -.\\\\1F613 .\\\\1F600 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -.\\\\1F613 .\\\\1F600 { - color: red; -} +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./img img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#?iefix\\" }); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n\\\\tbackground: url(\\\\\\"#hash\\\\\\");\\\\n\\\\tbackground: url(\\\\\\"#\\\\\\");\\\\n\\\\tbackground: url(data:image/png;base64,AAA);\\\\n\\\\tbackground: url(http://example.com/image.jpg);\\\\n\\\\tbackground: url(//example.com/image.png);\\\\n\\\\tbackground: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") xyz;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -.\\\\1F600 > .\\\\1F600 > .\\\\1F600 { - color: red; +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/urls/source.css", + ".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; } ", "", @@ -6581,43 +8126,47 @@ div:not(.\\\\1F600) { ] `; -exports[`modules issue #995: module 1`] = ` +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./img img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#?iefix\\" }); // Module -exports.push([module.id, \\"/* class=\\\\\\"😀\\\\\\" */\\\\n.a {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.a.b {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.a .b {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.😀 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.😀.😓 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.😀 .😓 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.\\\\\\\\1F600.\\\\\\\\1F613 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.\\\\\\\\1F600 .\\\\\\\\1F613 {\\\\n color: red;\\\\n}\\\\n\\\\n/* Local */\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" */\\\\n.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀 😓\\\\\\" */\\\\n.\\\\\\\\1F600.\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n/* class=\\\\\\"😀\\\\\\" > class=\\\\\\"😓\\\\\\" */\\\\n.\\\\\\\\1F600 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .a .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .\\\\\\\\1F600 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\ndiv:not(.\\\\\\\\1F600) {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 .b {\\\\n color: red;\\\\n}\\\\n\\\\n.b .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F613 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F613 .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\\\n.\\\\\\\\1F600 > .\\\\\\\\1F600 > .\\\\\\\\1F600 {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +exports.push([module.id, \\"._a {\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n\\\\tbackground: url(\\\\\\"#hash\\\\\\");\\\\n\\\\tbackground: url(\\\\\\"#\\\\\\");\\\\n\\\\tbackground: url(data:image/png;base64,AAA);\\\\n\\\\tbackground: url(http://example.com/image.jpg);\\\\n\\\\tbackground: url(//example.com/image.png);\\\\n\\\\tbackground: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") xyz;\\\\n}\\\\n\\", \\"\\"]); // Exports exports.locals = { - \\"a\\": \\"😀\\", - \\"b\\": \\"😀\\", - \\"c\\": \\"😀\\" -};" -`; - -exports[`modules issue #995: 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", -} + \\"a\\": \\"_a\\" +}; +module.exports = exports; +" `; -exports[`modules should accepts all arguments for getLocalIdent option: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` Array [ Array [ - 1, - ".foo .foo { - color: red; -} - -.foo .foo { - color: blue; + "./modules/tests-cases/urls/source.css", + "._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; } ", "", @@ -6625,28 +8174,81 @@ Array [ ] `; -exports[`modules should accepts all arguments for getLocalIdent option: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -exports[`modules should avoid unnecessary "require": errors 1`] = `Array []`; +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./img img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#?iefix\\" }); +// Module +exports.push([module.id, \\"._1goi1QVFtUMjX82JoFfLLJ {\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n\\\\tbackground: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n\\\\tbackground: url(\\\\\\"#hash\\\\\\");\\\\n\\\\tbackground: url(\\\\\\"#\\\\\\");\\\\n\\\\tbackground: url(data:image/png;base64,AAA);\\\\n\\\\tbackground: url(http://example.com/image.jpg);\\\\n\\\\tbackground: url(//example.com/image.png);\\\\n\\\\tbackground: green url(data:image/png;base64,AAA) url(http://example.com/image.jpg) url(//example.com/image.png) url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") xyz;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"a\\": \\"_1goi1QVFtUMjX82JoFfLLJ\\" +}; +module.exports = exports; +" +`; -exports[`modules should avoid unnecessary "require": module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`urls\` (\`modules\` value is \`true)\`: result 1`] = ` Array [ Array [ - 2, - "._22ETk3ZhhvjVe-4dAULcsF { - display: block; + "./modules/tests-cases/urls/source.css", + "._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" option should work with case \`urls\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value aaa: red;\\\\n@value bbb: green;\\\\n@value ccc: aaa;\\\\n\\\\n.a {\\\\n\\\\tbackground: aaa;\\\\n\\\\tbackground: bbb;\\\\n\\\\tbackground: ccc;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ Array [ - 1, - "._1UrsXQ2x66vvn0IAbZqRYi { - color: red; -} + "./modules/tests-cases/values/source.css", + "@value aaa: red; +@value bbb: green; +@value ccc: aaa; -._3xlGH7JLMDZsCqOwH83KaV { - color: red; +.a { + background: aaa; + background: bbb; + background: ccc; } ", "", @@ -6654,193 +8256,177 @@ Array [ ] `; -exports[`modules should avoid unnecessary "require": module 1`] = ` +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`global)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./imported-simple.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\"._1UrsXQ2x66vvn0IAbZqRYi {\\\\n color: red;\\\\n}\\\\n\\\\n._3xlGH7JLMDZsCqOwH83KaV {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); -// Exports -exports.locals = { - \\"simple-foo\\": \\"_1UrsXQ2x66vvn0IAbZqRYi \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"imported-simple\\"] + \\"\\", - \\"simple-bar\\": \\"_3xlGH7JLMDZsCqOwH83KaV \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"imported-simple\\"] + \\"\\" -};" -`; - -exports[`modules should avoid unnecessary "require": 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; -} +exports.push([module.id, \\".a {\\\\n\\\\tbackground: red;\\\\n\\\\tbackground: green;\\\\n\\\\tbackground: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"red\\", + \\"bbb\\": \\"green\\", + \\"ccc\\": \\"red\\" +}; +module.exports = exports; +" +`; -.className--1E8H { - background: red; +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values/source.css", + ".a { + background: red; + background: green; + background: red; } +", + "", + ], +] +`; -#someId--3w7J { - background: green; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -.className--1E8H .subClass--3lo0 { - color: green; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -#someId--3w7J .subClass--3lo0 { - color: blue; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._18yRHBx_s3xK1t_zOjEfo {\\\\n\\\\tbackground: red;\\\\n\\\\tbackground: green;\\\\n\\\\tbackground: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"red\\", + \\"bbb\\": \\"green\\", + \\"ccc\\": \\"red\\", + \\"a\\": \\"_18yRHBx_s3xK1t_zOjEfo\\" +}; +module.exports = exports; +" +`; -.-a0-34a___f--2nJ5 { - color: red; +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values/source.css", + "._18yRHBx_s3xK1t_zOjEfo { + background: red; + background: green; + background: red; } +", + "", + ], +] +`; -.m_x_\\\\@--2G3b { - margin-left: auto !important; - margin-right: auto !important; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -.B\\\\&W\\\\?--1s8i { - margin-left: auto !important; - margin-right: auto !important; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -/* matches elements with class=\\":\`(\\" */ -.\\\\3A \\\\\`\\\\(--3G_T { - color: aqua; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".a {\\\\n\\\\tbackground: red;\\\\n\\\\tbackground: green;\\\\n\\\\tbackground: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"red\\", + \\"bbb\\": \\"green\\", + \\"ccc\\": \\"red\\" +}; +module.exports = exports; +" +`; -/* matches elements with class=\\"1a2b3c\\" */ -.\\\\31 a2b3c--1_Xs { - color: aliceblue; +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values/source.css", + ".a { + background: red; + background: green; + background: red; } +", + "", + ], +] +`; -/* matches the element with id=\\"#fake-id\\" */ -#\\\\#fake-id--1d23 { - color: antiquewhite; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -/* matches the element with id=\\"-a-b-c-\\" */ -#-a-b-c---opia { - color: azure; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -/* matches the element with id=\\"©\\" */ -#©--143H { - color: black; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._a {\\\\n\\\\tbackground: red;\\\\n\\\\tbackground: green;\\\\n\\\\tbackground: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"red\\", + \\"bbb\\": \\"green\\", + \\"ccc\\": \\"red\\", + \\"a\\": \\"_a\\" +}; +module.exports = exports; +" +`; -.♥--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; +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values/source.css", + "._a { + background: red; + background: green; + background: red; } +", + "", + ], +] +`; -.foo\\\\\\\\bar--2KL0 { - background: hotpink; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -.foo\\\\/bar\\\\/baz--oTEb { - background: hotpink; -} +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -.foo\\\\\\\\bar\\\\\\\\baz--2Id2 { - background: hotpink; +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._18yRHBx_s3xK1t_zOjEfo {\\\\n\\\\tbackground: red;\\\\n\\\\tbackground: green;\\\\n\\\\tbackground: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"red\\", + \\"bbb\\": \\"green\\", + \\"ccc\\": \\"red\\", + \\"a\\": \\"_18yRHBx_s3xK1t_zOjEfo\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values/source.css", + "._18yRHBx_s3xK1t_zOjEfo { + background: red; + background: green; + background: red; } ", "", @@ -6848,449 +8434,1738 @@ Array [ ] `; -exports[`modules should correctly replace escaped symbols in selector with localIdentName option: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`values\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -exports[`modules should have an undefined context if no context was given: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`false)\`: 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" option should work with case \`values-1\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value def: red;\\\\n@value ghi: 1px solid black;\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" `; -exports[`modules should have an undefined context if no context was given: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`false)\`: result 1`] = ` Array [ Array [ - 1, - ".foo .foo { - color: red; -} - -.foo .foo { - color: blue; -} + "./modules/tests-cases/values-1/source.css", + "@value def: red; +@value ghi: 1px solid black; ", "", ], ] `; -exports[`modules should have an undefined context if no context was given: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -exports[`modules should keep order: errors 1`] = `Array []`; +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"ghi\\": \\"1px solid black\\" +}; +module.exports = exports; +" +`; -exports[`modules should keep order: module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`global)\`: result 1`] = ` Array [ Array [ - 2, - "._2r9YTNQEwCk0bSiZCuc7Ol { - color: red; -} - -.He7W3er8OE_ZP1m7aP7eb { - color: aliceblue; -} + "./modules/tests-cases/values-1/source.css", + " ", "", ], - Array [ - 3, - "._18ve634MAK3QtupmRo9lo3 { - color: blue; -} +] +`; -.z6vp19LKudIK0nOAVOTAc { - color: azure; -} +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"ghi\\": \\"1px solid black\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-1/source.css", + " ", "", ], - Array [ - 1, - ".Wjk4jowq_W5p9UqAWNj8p { - display: block; -} +] +`; -._1hTJaGPJyAIYbIwkbYwOGW { - display: inline; -} +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"ghi\\": \\"1px solid black\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-1/source.css", + " ", "", ], ] `; -exports[`modules should keep order: module 1`] = ` +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` "// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); -var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??ref--4-0!./order-1.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../src/index.js??ref--4-0!./order-2.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_ICSS_IMPORT_0___); -exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); // Module -exports.push([module.id, \\".Wjk4jowq_W5p9UqAWNj8p {\\\\n display: block;\\\\n}\\\\n\\\\n._1hTJaGPJyAIYbIwkbYwOGW {\\\\n display: inline;\\\\n}\\\\n\\", \\"\\"]); +exports.push([module.id, \\"\\\\n\\", \\"\\"]); // Exports exports.locals = { - \\"simple\\": \\"Wjk4jowq_W5p9UqAWNj8p \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"order-1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"order-2\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"order-1-1\\"] + \\" \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"order-2-2\\"] + \\"\\", - \\"simple-other\\": \\"_1hTJaGPJyAIYbIwkbYwOGW \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"order-1\\"] + \\"\\" -};" -`; - -exports[`modules should keep order: 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; -} + \\"def\\": \\"red\\", + \\"ghi\\": \\"1px solid black\\" +}; +module.exports = exports; +" +`; -._-1_test { - background: blue; -} +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-1/source.css", + " +", + "", + ], +] +`; -._-1className { - background: red; -} +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -#_-1someId { - background: green; -} +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -._-1className ._-1subClass { - color: green; -} +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"ghi\\": \\"1px solid black\\" +}; +module.exports = exports; +" +`; -#_-1someId ._-1subClass { - color: blue; -} +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-1/source.css", + " +", + "", + ], +] +`; -._-1-a0-34a___f { - color: red; -} +exports[`"modules" option should work with case \`values-1\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -._-1m_x_\\\\@ { - margin-left: auto !important; - margin-right: auto !important; -} +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -._-1B\\\\&W\\\\? { - margin-left: auto !important; - margin-right: auto !important; -} +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value def: red;\\\\n.ghi { color: def; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -/* matches elements with class=\\":\`(\\" */ -._-1\\\\3A \\\\\`\\\\( { - color: aqua; -} +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-2/source.css", + "@value def: red; +.ghi { color: def; } +", + "", + ], +] +`; -/* matches elements with class=\\"1a2b3c\\" */ -._-1\\\\31 a2b3c { - color: aliceblue; -} +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -/* matches the element with id=\\"#fake-id\\" */ -#_-1\\\\#fake-id { - color: antiquewhite; -} +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -/* matches the element with id=\\"-a-b-c-\\" */ -#_-1-a-b-c- { - color: azure; -} +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".ghi { color: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-2/source.css", + ".ghi { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._2aKAT4pAinaabqEIFgdhTC { color: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"ghi\\": \\"_2aKAT4pAinaabqEIFgdhTC\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-2/source.css", + "._2aKAT4pAinaabqEIFgdhTC { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".ghi { color: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-2/source.css", + ".ghi { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._ghi { color: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"ghi\\": \\"_ghi\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-2/source.css", + "._ghi { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._2aKAT4pAinaabqEIFgdhTC { color: red; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"ghi\\": \\"_2aKAT4pAinaabqEIFgdhTC\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-2/source.css", + "._2aKAT4pAinaabqEIFgdhTC { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-2\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value def from './file.css';\\\\n.ghi { color: def; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-3/source.css", + "@value def from './file.css'; +.ghi { color: def; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".ghi { color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-3/file.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-3/source.css", + ".ghi { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._29ART3-NNe4DU1X-5_7419 { color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\", + \\"ghi\\": \\"_29ART3-NNe4DU1X-5_7419\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-3/file.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-3/source.css", + "._29ART3-NNe4DU1X-5_7419 { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".ghi { color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-3/file.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-3/source.css", + ".ghi { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._ghi { color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\", + \\"ghi\\": \\"_ghi\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-3/file.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-3/source.css", + "._ghi { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._29ART3-NNe4DU1X-5_7419 { color: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\", + \\"ghi\\": \\"_29ART3-NNe4DU1X-5_7419\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-3/file.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-3/source.css", + "._29ART3-NNe4DU1X-5_7419 { color: red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-3\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value def as aaa from './file1.css';\\\\n@value def as bbb from './file2.css';\\\\n.ghi { background: aaa, bbb, def; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-4/source.css", + "@value def as aaa from './file1.css'; +@value def as bbb from './file2.css'; +.ghi { background: aaa, bbb, def; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\".ghi { background: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\", \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\", def; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\", + \\"bbb\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file1.css", + " +", + "", + ], + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file2.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-4/source.css", + ".ghi { background: red, green, def; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._1vGjNPdz_qWrUvzTY2pCsS { background: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\", \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\", def; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\", + \\"bbb\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\"\\", + \\"ghi\\": \\"_1vGjNPdz_qWrUvzTY2pCsS\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file1.css", + " +", + "", + ], + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file2.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-4/source.css", + "._1vGjNPdz_qWrUvzTY2pCsS { background: red, green, def; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\".ghi { background: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\", \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\", def; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\", + \\"bbb\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file1.css", + " +", + "", + ], + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file2.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-4/source.css", + ".ghi { background: red, green, def; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._ghi { background: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\", \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\", def; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\", + \\"bbb\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\"\\", + \\"ghi\\": \\"_ghi\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file1.css", + " +", + "", + ], + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file2.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-4/source.css", + "._ghi { background: red, green, def; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../../src/index.js??[ident]!./file2.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +exports.i(___CSS_LOADER_ICSS_IMPORT_1___); +// Module +exports.push([module.id, \\"._1vGjNPdz_qWrUvzTY2pCsS { background: \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\", \\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\", def; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"aaa\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"def\\"] + \\"\\", + \\"bbb\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___.locals[\\"def\\"] + \\"\\", + \\"ghi\\": \\"_1vGjNPdz_qWrUvzTY2pCsS\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file1.css", + " +", + "", + ], + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-4/file2.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-4/source.css", + "._1vGjNPdz_qWrUvzTY2pCsS { background: red, green, def; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-4\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value color from './file1.css';\\\\n@value shadow: 0 0 color,0 0 color;\\\\n.ghi { box-shadow: shadow; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-5/source.css", + "@value color from './file1.css'; +@value shadow: 0 0 color,0 0 color; +.ghi { box-shadow: shadow; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-5/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-5/source.css", + ".ghi { box-shadow: 0 0 red,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._3Uw-A6Tr2LkIED6NTqwFvj { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_3Uw-A6Tr2LkIED6NTqwFvj\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-5/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-5/source.css", + "._3Uw-A6Tr2LkIED6NTqwFvj { box-shadow: 0 0 red,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-5/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-5/source.css", + ".ghi { box-shadow: 0 0 red,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_ghi\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-5/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-5/source.css", + "._ghi { box-shadow: 0 0 red,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._3Uw-A6Tr2LkIED6NTqwFvj { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\",0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_3Uw-A6Tr2LkIED6NTqwFvj\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-5/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-5/source.css", + "._3Uw-A6Tr2LkIED6NTqwFvj { box-shadow: 0 0 red,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-5\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value color from './file1.css';\\\\n@value shadow: 0 0 color ,0 0 color;\\\\n.ghi { box-shadow: shadow; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-6/source.css", + "@value color from './file1.css'; +@value shadow: 0 0 color ,0 0 color; +.ghi { box-shadow: shadow; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-6/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-6/source.css", + ".ghi { box-shadow: 0 0 red ,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._2qKjolC-wu9Dp8-RCkWiLN { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_2qKjolC-wu9Dp8-RCkWiLN\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-6/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-6/source.css", + "._2qKjolC-wu9Dp8-RCkWiLN { box-shadow: 0 0 red ,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-6/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-6/source.css", + ".ghi { box-shadow: 0 0 red ,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_ghi\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-6/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-6/source.css", + "._ghi { box-shadow: 0 0 red ,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._2qKjolC-wu9Dp8-RCkWiLN { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\" ,0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_2qKjolC-wu9Dp8-RCkWiLN\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-6/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-6/source.css", + "._2qKjolC-wu9Dp8-RCkWiLN { box-shadow: 0 0 red ,0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-6\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value color from './file1.css';\\\\n@value shadow: 0 0 color, 0 0 color;\\\\n.ghi { box-shadow: shadow; }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-7/source.css", + "@value color from './file1.css'; +@value shadow: 0 0 color, 0 0 color; +.ghi { box-shadow: shadow; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-7/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-7/source.css", + ".ghi { box-shadow: 0 0 red, 0 0 red; } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._1SVUxnI1T0vYEcq2VXU5pr { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_1SVUxnI1T0vYEcq2VXU5pr\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-7/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-7/source.css", + "._1SVUxnI1T0vYEcq2VXU5pr { box-shadow: 0 0 red, 0 0 red; } +", + "", + ], +] +`; -/* matches the element with id=\\"©\\" */ -#_-1© { - color: black; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -._-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; } +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -._-1foo\\\\/bar { - background: hotpink; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\".ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\" +}; +module.exports = exports; +" +`; -._-1foo\\\\\\\\bar { - background: hotpink; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-7/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-7/source.css", + ".ghi { box-shadow: 0 0 red, 0 0 red; } +", + "", + ], +] +`; -._-1foo\\\\/bar\\\\/baz { - background: hotpink; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -._-1foo\\\\\\\\bar\\\\\\\\baz { - background: hotpink; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._ghi { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_ghi\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-7/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-7/source.css", + "._ghi { box-shadow: 0 0 red, 0 0 red; } ", "", ], ] `; -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; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -._--_test { - background: blue; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -._--className { - background: red; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../../src/index.js??[ident]!./file1.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_ICSS_IMPORT_0___); +// Module +exports.push([module.id, \\"._1SVUxnI1T0vYEcq2VXU5pr { box-shadow: 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"; }\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"color\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"shadow\\": \\"0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\", 0 0 \\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\\"color\\"] + \\"\\", + \\"ghi\\": \\"_1SVUxnI1T0vYEcq2VXU5pr\\" +}; +module.exports = exports; +" +`; -#_--someId { - background: green; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./modules/tests-cases/values-7/file1.css", + " +", + "", + ], + Array [ + "./modules/tests-cases/values-7/source.css", + "._1SVUxnI1T0vYEcq2VXU5pr { box-shadow: 0 0 red, 0 0 red; } +", + "", + ], +] +`; -._--className ._--subClass { - color: green; -} +exports[`"modules" option should work with case \`values-7\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -#_--someId ._--subClass { - color: blue; +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value shadow-color: rgba(0, 0, 0, 0.5);\\\\n\\\\n.shadow {\\\\n box-shadow: 0 10px 10px shadow-color,\\\\n 10px 0px 5px shadow-color;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-8/source.css", + "@value shadow-color: rgba(0, 0, 0, 0.5); + +.shadow { + box-shadow: 0 10px 10px shadow-color, + 10px 0px 5px shadow-color; } +", + "", + ], +] +`; -._---a0-34a___f { - color: red; +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".shadow {\\\\n box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),\\\\n 10px 0px 5px rgba(0, 0, 0, 0.5);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"shadow-color\\": \\"rgba(0, 0, 0, 0.5)\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-8/source.css", + ".shadow { + box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5), + 10px 0px 5px rgba(0, 0, 0, 0.5); } +", + "", + ], +] +`; -._--m_x_\\\\@ { - margin-left: auto !important; - margin-right: auto !important; +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._3fhB2YwAmhjTmtcd6ofBQH {\\\\n box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),\\\\n 10px 0px 5px rgba(0, 0, 0, 0.5);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"shadow-color\\": \\"rgba(0, 0, 0, 0.5)\\", + \\"shadow\\": \\"_3fhB2YwAmhjTmtcd6ofBQH\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-8/source.css", + "._3fhB2YwAmhjTmtcd6ofBQH { + box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5), + 10px 0px 5px rgba(0, 0, 0, 0.5); } +", + "", + ], +] +`; -._--B\\\\&W\\\\? { - margin-left: auto !important; - margin-right: auto !important; +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".shadow {\\\\n box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),\\\\n 10px 0px 5px rgba(0, 0, 0, 0.5);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"shadow-color\\": \\"rgba(0, 0, 0, 0.5)\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-8/source.css", + ".shadow { + box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5), + 10px 0px 5px rgba(0, 0, 0, 0.5); } +", + "", + ], +] +`; -/* matches elements with class=\\":\`(\\" */ -._--\\\\3A \\\\\`\\\\( { - color: aqua; +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._shadow {\\\\n box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),\\\\n 10px 0px 5px rgba(0, 0, 0, 0.5);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"shadow-color\\": \\"rgba(0, 0, 0, 0.5)\\", + \\"shadow\\": \\"_shadow\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-8/source.css", + "._shadow { + box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5), + 10px 0px 5px rgba(0, 0, 0, 0.5); } +", + "", + ], +] +`; -/* matches elements with class=\\"1a2b3c\\" */ -._--\\\\31 a2b3c { - color: aliceblue; +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._3fhB2YwAmhjTmtcd6ofBQH {\\\\n box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5),\\\\n 10px 0px 5px rgba(0, 0, 0, 0.5);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"shadow-color\\": \\"rgba(0, 0, 0, 0.5)\\", + \\"shadow\\": \\"_3fhB2YwAmhjTmtcd6ofBQH\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-8/source.css", + "._3fhB2YwAmhjTmtcd6ofBQH { + box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5), + 10px 0px 5px rgba(0, 0, 0, 0.5); } +", + "", + ], +] +`; + +exports[`"modules" option should work with case \`values-8\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value def: red;\\\\n\\\\n.foo1 {\\\\n prop: func(def);\\\\n}\\\\n\\\\n.foo2 {\\\\n prop: func(10px def);\\\\n}\\\\n\\\\n.foo3 {\\\\n prop: func(def 10px);\\\\n}\\\\n\\\\n.foo4 {\\\\n prop: func(10px def 10px);\\\\n}\\\\n\\\\n.foo5 {\\\\n prop: func(10px, def);\\\\n}\\\\n\\\\n.foo6 {\\\\n prop: func(def, 10px);\\\\n}\\\\n\\\\n.foo7 {\\\\n prop: func(10px, def, 10px);\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-9/source.css", + "@value def: red; -/* matches the element with id=\\"#fake-id\\" */ -#_--\\\\#fake-id { - color: antiquewhite; +.foo1 { + prop: func(def); } -/* matches the element with id=\\"-a-b-c-\\" */ -#_---a-b-c- { - color: azure; +.foo2 { + prop: func(10px def); } -/* matches the element with id=\\"©\\" */ -#_--© { - color: black; +.foo3 { + prop: func(def 10px); } -._--♥ { 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; +.foo4 { + prop: func(10px def 10px); } -._--foo\\\\\\\\bar { - background: hotpink; +.foo5 { + prop: func(10px, def); } -._--foo\\\\/bar\\\\/baz { - background: hotpink; +.foo6 { + prop: func(def, 10px); } -._--foo\\\\\\\\bar\\\\\\\\baz { - background: hotpink; +.foo7 { + prop: func(10px, def, 10px); } ", "", @@ -7298,178 +10173,116 @@ Array [ ] `; -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; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -._3Q--BATR { - background: blue; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -._3wBIH6Tw { - background: red; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".foo1 {\\\\n prop: func(red);\\\\n}\\\\n\\\\n.foo2 {\\\\n prop: func(10px red);\\\\n}\\\\n\\\\n.foo3 {\\\\n prop: func(red 10px);\\\\n}\\\\n\\\\n.foo4 {\\\\n prop: func(10px red 10px);\\\\n}\\\\n\\\\n.foo5 {\\\\n prop: func(10px, red);\\\\n}\\\\n\\\\n.foo6 {\\\\n prop: func(red, 10px);\\\\n}\\\\n\\\\n.foo7 {\\\\n prop: func(10px, red, 10px);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\" +}; +module.exports = exports; +" +`; -#mxosG-Ww { - background: green; +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-9/source.css", + ".foo1 { + prop: func(red); } -._3wBIH6Tw ._3jIM-zUk { - color: green; +.foo2 { + prop: func(10px red); } -#mxosG-Ww ._3jIM-zUk { - color: blue; +.foo3 { + prop: func(red 10px); } -._3RHUZpqp { - color: red; +.foo4 { + prop: func(10px red 10px); } -._3SfN7O2q { - margin-left: auto !important; - margin-right: auto !important; +.foo5 { + prop: func(10px, red); } -._3d3wghvo { - margin-left: auto !important; - margin-right: auto !important; +.foo6 { + prop: func(red, 10px); } -/* matches elements with class=\\":\`(\\" */ -._3oWIzQc7 { - color: aqua; +.foo7 { + prop: func(10px, red, 10px); } +", + "", + ], +] +`; -/* matches elements with class=\\"1a2b3c\\" */ -._3IsxVsEE { - color: aliceblue; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -/* matches the element with id=\\"#fake-id\\" */ -#_3i_zUQNU { - color: antiquewhite; +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1V2U7x4U8oxxooLcDA25iL {\\\\n prop: func(red);\\\\n}\\\\n\\\\n._3E1mOwwzg7yDREAM1sTqrf {\\\\n prop: func(10px red);\\\\n}\\\\n\\\\n._1jURUggvUGFLzQ1zAWjNep {\\\\n prop: func(red 10px);\\\\n}\\\\n\\\\n._2gTeanreYt1oKNw6pvYDuQ {\\\\n prop: func(10px red 10px);\\\\n}\\\\n\\\\n._1FHimE7YIOvZ66qJzb5oD7 {\\\\n prop: func(10px, red);\\\\n}\\\\n\\\\n._2ZsNKxzBYz6NW_ITMiAbSo {\\\\n prop: func(red, 10px);\\\\n}\\\\n\\\\n._18TpSE38_jlCbLotZMXh67 {\\\\n prop: func(10px, red, 10px);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"foo1\\": \\"_1V2U7x4U8oxxooLcDA25iL\\", + \\"foo2\\": \\"_3E1mOwwzg7yDREAM1sTqrf\\", + \\"foo3\\": \\"_1jURUggvUGFLzQ1zAWjNep\\", + \\"foo4\\": \\"_2gTeanreYt1oKNw6pvYDuQ\\", + \\"foo5\\": \\"_1FHimE7YIOvZ66qJzb5oD7\\", + \\"foo6\\": \\"_2ZsNKxzBYz6NW_ITMiAbSo\\", + \\"foo7\\": \\"_18TpSE38_jlCbLotZMXh67\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-9/source.css", + "._1V2U7x4U8oxxooLcDA25iL { + prop: func(red); } -/* matches the element with id=\\"-a-b-c-\\" */ -#_1cY1s7c1 { - color: azure; +._3E1mOwwzg7yDREAM1sTqrf { + prop: func(10px red); } -/* matches the element with id=\\"©\\" */ -#_3QaoFt-- { - color: black; +._1jURUggvUGFLzQ1zAWjNep { + prop: func(red 10px); } -.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; +._2gTeanreYt1oKNw6pvYDuQ { + prop: func(10px red 10px); } -.LKTPJkpW { - background: hotpink; +._1FHimE7YIOvZ66qJzb5oD7 { + prop: func(10px, red); } -._1I8mGSan { - background: hotpink; +._2ZsNKxzBYz6NW_ITMiAbSo { + prop: func(red, 10px); } -.xcAsBCbt { - background: hotpink; +._18TpSE38_jlCbLotZMXh67 { + prop: func(10px, red, 10px); } ", "", @@ -7477,59 +10290,54 @@ Array [ ] `; -exports[`modules should respects context option: warnings 1`] = `Array []`; +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -exports[`modules should respects getLocalIdent option (global mode): errors 1`] = `Array []`; +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -exports[`modules should respects getLocalIdent option (global mode): locals 1`] = ` -Object { - "abc": "foo", - "def": "foo", - "ghi": "foo", - "jkl": "foo", -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".foo1 {\\\\n prop: func(red);\\\\n}\\\\n\\\\n.foo2 {\\\\n prop: func(10px red);\\\\n}\\\\n\\\\n.foo3 {\\\\n prop: func(red 10px);\\\\n}\\\\n\\\\n.foo4 {\\\\n prop: func(10px red 10px);\\\\n}\\\\n\\\\n.foo5 {\\\\n prop: func(10px, red);\\\\n}\\\\n\\\\n.foo6 {\\\\n prop: func(red, 10px);\\\\n}\\\\n\\\\n.foo7 {\\\\n prop: func(10px, red, 10px);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\" +}; +module.exports = exports; +" `; -exports[`modules should respects getLocalIdent option (global mode): module (evaluated) 1`] = ` +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` Array [ Array [ - 1, - ".foo .foo { - color: red; + "./modules/tests-cases/values-9/source.css", + ".foo1 { + prop: func(red); } -.foo .foo { - color: blue; +.foo2 { + prop: func(10px red); } -", - "", - ], -] -`; -exports[`modules should respects getLocalIdent option (global mode): warnings 1`] = `Array []`; +.foo3 { + prop: func(red 10px); +} -exports[`modules should respects getLocalIdent option (local mode): errors 1`] = `Array []`; +.foo4 { + prop: func(10px red 10px); +} -exports[`modules should respects getLocalIdent option (local mode): locals 1`] = ` -Object { - "abc": "foo", - "def": "foo", - "ghi": "foo", - "jkl": "foo", +.foo5 { + prop: func(10px, red); } -`; -exports[`modules should respects getLocalIdent option (local mode): module (evaluated) 1`] = ` -Array [ - Array [ - 1, - ".foo .foo { - color: red; +.foo6 { + prop: func(red, 10px); } -.foo .foo { - color: blue; +.foo7 { + prop: func(10px, red, 10px); } ", "", @@ -7537,178 +10345,123 @@ Array [ ] `; -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; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -._test--d745495d407559ef605c9072243801fd { - background: blue; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -.className--eab624d1bc6b9c6b6a4278d1030dd690 { - background: red; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._foo1 {\\\\n prop: func(red);\\\\n}\\\\n\\\\n._foo2 {\\\\n prop: func(10px red);\\\\n}\\\\n\\\\n._foo3 {\\\\n prop: func(red 10px);\\\\n}\\\\n\\\\n._foo4 {\\\\n prop: func(10px red 10px);\\\\n}\\\\n\\\\n._foo5 {\\\\n prop: func(10px, red);\\\\n}\\\\n\\\\n._foo6 {\\\\n prop: func(red, 10px);\\\\n}\\\\n\\\\n._foo7 {\\\\n prop: func(10px, red, 10px);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"foo1\\": \\"_foo1\\", + \\"foo2\\": \\"_foo2\\", + \\"foo3\\": \\"_foo3\\", + \\"foo4\\": \\"_foo4\\", + \\"foo5\\": \\"_foo5\\", + \\"foo6\\": \\"_foo6\\", + \\"foo7\\": \\"_foo7\\" +}; +module.exports = exports; +" +`; -#someId--a0ce220cc9bbb1ee0e85cc0d1f0c6aa9 { - background: green; +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-9/source.css", + "._foo1 { + prop: func(red); } -.className--eab624d1bc6b9c6b6a4278d1030dd690 .subClass--2c82998be8a2b2e94ad7be56c9e685cd { - color: green; +._foo2 { + prop: func(10px red); } -#someId--a0ce220cc9bbb1ee0e85cc0d1f0c6aa9 .subClass--2c82998be8a2b2e94ad7be56c9e685cd { - color: blue; +._foo3 { + prop: func(red 10px); } -.-a0-34a___f--e99d667fe0ceff9363b011302ac3f508 { - color: red; +._foo4 { + prop: func(10px red 10px); } -.m_x_\\\\@--de463fc45a1e6dd0ed23f26a568f1d61 { - margin-left: auto !important; - margin-right: auto !important; +._foo5 { + prop: func(10px, red); } -.B\\\\&W\\\\?--8c20b8856e47b8157bf47451b1b6d9a6 { - margin-left: auto !important; - margin-right: auto !important; +._foo6 { + prop: func(red, 10px); } -/* matches elements with class=\\":\`(\\" */ -.\\\\3A \\\\\`\\\\(--612466e663a46fe230e6db648089b4c4 { - color: aqua; +._foo7 { + prop: func(10px, red, 10px); } +", + "", + ], +] +`; -/* matches elements with class=\\"1a2b3c\\" */ -.\\\\31 a2b3c--165cab18879cee9a48ae4cbb5fdd39a8 { - color: aliceblue; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -/* matches the element with id=\\"#fake-id\\" */ -#\\\\#fake-id--a0d1d29b3c920aa3985fb11586f994e6 { - color: antiquewhite; +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; + +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._1V2U7x4U8oxxooLcDA25iL {\\\\n prop: func(red);\\\\n}\\\\n\\\\n._3E1mOwwzg7yDREAM1sTqrf {\\\\n prop: func(10px red);\\\\n}\\\\n\\\\n._1jURUggvUGFLzQ1zAWjNep {\\\\n prop: func(red 10px);\\\\n}\\\\n\\\\n._2gTeanreYt1oKNw6pvYDuQ {\\\\n prop: func(10px red 10px);\\\\n}\\\\n\\\\n._1FHimE7YIOvZ66qJzb5oD7 {\\\\n prop: func(10px, red);\\\\n}\\\\n\\\\n._2ZsNKxzBYz6NW_ITMiAbSo {\\\\n prop: func(red, 10px);\\\\n}\\\\n\\\\n._18TpSE38_jlCbLotZMXh67 {\\\\n prop: func(10px, red, 10px);\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"def\\": \\"red\\", + \\"foo1\\": \\"_1V2U7x4U8oxxooLcDA25iL\\", + \\"foo2\\": \\"_3E1mOwwzg7yDREAM1sTqrf\\", + \\"foo3\\": \\"_1jURUggvUGFLzQ1zAWjNep\\", + \\"foo4\\": \\"_2gTeanreYt1oKNw6pvYDuQ\\", + \\"foo5\\": \\"_1FHimE7YIOvZ66qJzb5oD7\\", + \\"foo6\\": \\"_2ZsNKxzBYz6NW_ITMiAbSo\\", + \\"foo7\\": \\"_18TpSE38_jlCbLotZMXh67\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-9/source.css", + "._1V2U7x4U8oxxooLcDA25iL { + prop: func(red); } -/* matches the element with id=\\"-a-b-c-\\" */ -#-a-b-c---5b1d694462fbb9af324bb0ed2a08d755 { - color: azure; +._3E1mOwwzg7yDREAM1sTqrf { + prop: func(10px red); } -/* matches the element with id=\\"©\\" */ -#©--074c8458dd077a052783bb5f4c5b5911 { - color: black; +._1jURUggvUGFLzQ1zAWjNep { + prop: func(red 10px); } -.♥--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; +._2gTeanreYt1oKNw6pvYDuQ { + prop: func(10px red 10px); } -.foo\\\\\\\\bar--6cf70ff94feb1257af10e9ddcc47d54f { - background: hotpink; +._1FHimE7YIOvZ66qJzb5oD7 { + prop: func(10px, red); } -.foo\\\\/bar\\\\/baz--d917a2cf9531290fbf3aa43e0cc0520f { - background: hotpink; +._2ZsNKxzBYz6NW_ITMiAbSo { + prop: func(red, 10px); } -.foo\\\\\\\\bar\\\\\\\\baz--1900aa5b4b5b2443299cc5e8afa9b3b4 { - background: hotpink; +._18TpSE38_jlCbLotZMXh67 { + prop: func(10px, red, 10px); } ", "", @@ -7716,178 +10469,132 @@ Array [ ] `; -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; -} +exports[`"modules" option should work with case \`values-9\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; -.localIdentName--_test--3Q--B { - background: blue; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`false)\`: errors 1`] = `Array []`; -.localIdentName--className--3wBIH { - background: red; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`false)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"@value v-primary: #BF4040;\\\\n@value s-black: black-selector;\\\\n@value m-large: (min-width: 960px);\\\\n\\\\n.header {\\\\n color: v-primary;\\\\n padding: 0 10px;\\\\n}\\\\n\\\\n.s-black {\\\\n color: black;\\\\n}\\\\n\\\\n@media m-large {\\\\n .header {\\\\n padding: 0 20px;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -#localIdentName--someId--mxosG { - background: green; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`false)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-10/source.css", + "@value v-primary: #BF4040; +@value s-black: black-selector; +@value m-large: (min-width: 960px); -.localIdentName--className--3wBIH .localIdentName--subClass--3jIM- { - color: green; +.header { + color: v-primary; + padding: 0 10px; } -#localIdentName--someId--mxosG .localIdentName--subClass--3jIM- { - color: blue; +.s-black { + color: black; } -.localIdentName---a0-34a___f--3RHUZ { - color: red; +@media m-large { + .header { + padding: 0 20px; + } } +", + "", + ], +] +`; -.localIdentName--m_x_\\\\@--3SfN7 { - margin-left: auto !important; - margin-right: auto !important; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`false)\`: warnings 1`] = `Array []`; -.localIdentName--B\\\\&W\\\\?--3d3wg { - margin-left: auto !important; - margin-right: auto !important; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`global)\`: errors 1`] = `Array []`; -/* matches elements with class=\\":\`(\\" */ -.localIdentName--\\\\3A \\\\\`\\\\(--3oWIz { - color: aqua; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".header {\\\\n color: #BF4040;\\\\n padding: 0 10px;\\\\n}\\\\n\\\\n.black-selector {\\\\n color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n .header {\\\\n padding: 0 20px;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"v-primary\\": \\"#BF4040\\", + \\"s-black\\": \\"black-selector\\", + \\"m-large\\": \\"(min-width: 960px)\\" +}; +module.exports = exports; +" +`; -/* matches elements with class=\\"1a2b3c\\" */ -.localIdentName--\\\\31 a2b3c--3IsxV { - color: aliceblue; +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-10/source.css", + ".header { + color: #BF4040; + padding: 0 10px; } -/* matches the element with id=\\"#fake-id\\" */ -#localIdentName--\\\\#fake-id--3i_zU { - color: antiquewhite; +.black-selector { + color: black; } -/* matches the element with id=\\"-a-b-c-\\" */ -#localIdentName---a-b-c---1cY1s { - color: azure; +@media (min-width: 960px) { + .header { + padding: 0 20px; + } } +", + "", + ], +] +`; -/* matches the element with id=\\"©\\" */ -#localIdentName--©--3QaoF { - color: black; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`global)\`: warnings 1`] = `Array []`; -.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; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`local)\`: errors 1`] = `Array []`; -.localIdentName--foo\\\\\\\\bar--LKTPJ { - background: hotpink; +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".ODvOrT6QaJbrNxuVwTgHn {\\\\n color: #BF4040;\\\\n padding: 0 10px;\\\\n}\\\\n\\\\n._3xId28FIeFVmNWx5IWeWqN {\\\\n color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n .ODvOrT6QaJbrNxuVwTgHn {\\\\n padding: 0 20px;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"v-primary\\": \\"#BF4040\\", + \\"s-black\\": \\"black-selector\\", + \\"m-large\\": \\"(min-width: 960px)\\", + \\"header\\": \\"ODvOrT6QaJbrNxuVwTgHn\\", + \\"black-selector\\": \\"_3xId28FIeFVmNWx5IWeWqN\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-10/source.css", + ".ODvOrT6QaJbrNxuVwTgHn { + color: #BF4040; + padding: 0 10px; } -.localIdentName--foo\\\\/bar\\\\/baz--1I8mG { - background: hotpink; +._3xId28FIeFVmNWx5IWeWqN { + color: black; } -.localIdentName--foo\\\\\\\\bar\\\\\\\\baz--xcAsB { - background: hotpink; +@media (min-width: 960px) { + .ODvOrT6QaJbrNxuVwTgHn { + padding: 0 20px; + } } ", "", @@ -7895,178 +10602,135 @@ Array [ ] `; -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; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`local)\`: warnings 1`] = `Array []`; -.fixtures-modules-localIdentName___test { - background: blue; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`object with mode global)\`: errors 1`] = `Array []`; -.fixtures-modules-localIdentName__className { - background: red; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`object with mode global)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".header {\\\\n color: #BF4040;\\\\n padding: 0 10px;\\\\n}\\\\n\\\\n.black-selector {\\\\n color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n .header {\\\\n padding: 0 20px;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"v-primary\\": \\"#BF4040\\", + \\"s-black\\": \\"black-selector\\", + \\"m-large\\": \\"(min-width: 960px)\\" +}; +module.exports = exports; +" +`; -#fixtures-modules-localIdentName__someId { - background: green; +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`object with mode global)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-10/source.css", + ".header { + color: #BF4040; + padding: 0 10px; } -.fixtures-modules-localIdentName__className .fixtures-modules-localIdentName__subClass { - color: green; +.black-selector { + color: black; } -#fixtures-modules-localIdentName__someId .fixtures-modules-localIdentName__subClass { - color: blue; +@media (min-width: 960px) { + .header { + padding: 0 20px; + } } +", + "", + ], +] +`; -.fixtures-modules-localIdentName__-a0-34a___f { - color: red; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`object with mode global)\`: warnings 1`] = `Array []`; -.fixtures-modules-localIdentName__m_x_\\\\@ { - margin-left: auto !important; - margin-right: auto !important; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`object with mode local)\`: errors 1`] = `Array []`; -.fixtures-modules-localIdentName__B\\\\&W\\\\? { - margin-left: auto !important; - margin-right: auto !important; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`object with mode local)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"._header {\\\\n color: #BF4040;\\\\n padding: 0 10px;\\\\n}\\\\n\\\\n._black-selector {\\\\n color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n ._header {\\\\n padding: 0 20px;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"v-primary\\": \\"#BF4040\\", + \\"s-black\\": \\"black-selector\\", + \\"m-large\\": \\"(min-width: 960px)\\", + \\"header\\": \\"_header\\", + \\"black-selector\\": \\"_black-selector\\" +}; +module.exports = exports; +" +`; -/* matches elements with class=\\":\`(\\" */ -.fixtures-modules-localIdentName__\\\\3A \\\\\`\\\\( { - color: aqua; +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`object with mode local)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-10/source.css", + "._header { + color: #BF4040; + padding: 0 10px; } -/* matches elements with class=\\"1a2b3c\\" */ -.fixtures-modules-localIdentName__\\\\31 a2b3c { - color: aliceblue; +._black-selector { + color: black; } -/* matches the element with id=\\"#fake-id\\" */ -#fixtures-modules-localIdentName__\\\\#fake-id { - color: antiquewhite; +@media (min-width: 960px) { + ._header { + padding: 0 20px; + } } +", + "", + ], +] +`; -/* matches the element with id=\\"-a-b-c-\\" */ -#fixtures-modules-localIdentName__-a-b-c- { - color: azure; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`object with mode local)\`: warnings 1`] = `Array []`; -/* matches the element with id=\\"©\\" */ -#fixtures-modules-localIdentName__© { - color: black; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`true)\`: errors 1`] = `Array []`; -.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; -} +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`true)\`: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".ODvOrT6QaJbrNxuVwTgHn {\\\\n color: #BF4040;\\\\n padding: 0 10px;\\\\n}\\\\n\\\\n._3xId28FIeFVmNWx5IWeWqN {\\\\n color: black;\\\\n}\\\\n\\\\n@media (min-width: 960px) {\\\\n .ODvOrT6QaJbrNxuVwTgHn {\\\\n padding: 0 20px;\\\\n }\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"v-primary\\": \\"#BF4040\\", + \\"s-black\\": \\"black-selector\\", + \\"m-large\\": \\"(min-width: 960px)\\", + \\"header\\": \\"ODvOrT6QaJbrNxuVwTgHn\\", + \\"black-selector\\": \\"_3xId28FIeFVmNWx5IWeWqN\\" +}; +module.exports = exports; +" +`; -.fixtures-modules-localIdentName__foo\\\\\\\\bar { - background: hotpink; +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`true)\`: result 1`] = ` +Array [ + Array [ + "./modules/tests-cases/values-10/source.css", + ".ODvOrT6QaJbrNxuVwTgHn { + color: #BF4040; + padding: 0 10px; } -.fixtures-modules-localIdentName__foo\\\\/bar\\\\/baz { - background: hotpink; +._3xId28FIeFVmNWx5IWeWqN { + color: black; } -.fixtures-modules-localIdentName__foo\\\\\\\\bar\\\\\\\\baz { - background: hotpink; +@media (min-width: 960px) { + .ODvOrT6QaJbrNxuVwTgHn { + padding: 0 20px; + } } ", "", @@ -8074,66 +10738,74 @@ Array [ ] `; -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, +exports[`"modules" option should work with case \`values-10\` (\`modules\` value is \`true)\`: warnings 1`] = `Array []`; + +exports[`"modules" option should work with the "[local]" placeholder for the "localIdentName" option: errors 1`] = `Array []`; + +exports[`"modules" option should work with the "[local]" placeholder for the "localIdentName" option: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\".test {\\\\n background: red;\\\\n}\\\\n\\\\n._test {\\\\n background: blue;\\\\n}\\\\n\\\\n.className {\\\\n background: red;\\\\n}\\\\n\\\\n#someId {\\\\n background: green;\\\\n}\\\\n\\\\n.className .subClass {\\\\n color: green;\\\\n}\\\\n\\\\n#someId .subClass {\\\\n color: blue;\\\\n}\\\\n\\\\n.-a0-34a___f {\\\\n color: red;\\\\n}\\\\n\\\\n.m_x_\\\\\\\\@ {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n.B\\\\\\\\&W\\\\\\\\? {\\\\n margin-left: auto !important;\\\\n margin-right: auto !important;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\":\`(\\\\\\" */\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\( {\\\\n color: aqua;\\\\n}\\\\n\\\\n/* matches elements with class=\\\\\\"1a2b3c\\\\\\" */\\\\n.\\\\\\\\31 a2b3c {\\\\n color: aliceblue;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"#fake-id\\\\\\" */\\\\n#\\\\\\\\#fake-id {\\\\n color: antiquewhite;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"-a-b-c-\\\\\\" */\\\\n#-a-b-c- {\\\\n color: azure;\\\\n}\\\\n\\\\n/* matches the element with id=\\\\\\"©\\\\\\" */\\\\n#© {\\\\n color: black;\\\\n}\\\\n\\\\n.♥ { background: lime; }\\\\n.© { background: lime; }\\\\n.“‘’” { background: lime; }\\\\n.☺☃ { background: lime; }\\\\n.⌘⌥ { background: lime; }\\\\n.𝄞♪♩♫♬ { background: lime; }\\\\n.💩 { background: lime; }\\\\n.\\\\\\\\? { background: lime; }\\\\n.\\\\\\\\@ { background: lime; }\\\\n.\\\\\\\\. { background: lime; }\\\\n.\\\\\\\\3A \\\\\\\\) { background: lime; }\\\\n.\\\\\\\\3A \\\\\\\\\`\\\\\\\\( { background: lime; }\\\\n.\\\\\\\\31 23 { background: lime; }\\\\n.\\\\\\\\31 a2b3c { background: lime; }\\\\n.\\\\\\\\
{ background: lime; }\\\\n.\\\\\\\\<\\\\\\\\>\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\>\\\\\\\\>\\\\\\\\<\\\\\\\\> { background: lime; }\\\\n.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\[\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\>\\\\\\\\+\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\<\\\\\\\\-\\\\\\\\]\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\<\\\\\\\\<\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\.\\\\\\\\+\\\\\\\\+\\\\\\\\+\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\-\\\\\\\\.\\\\\\\\>\\\\\\\\+\\\\\\\\.\\\\\\\\>\\\\\\\\. { background: lime; }\\\\n.\\\\\\\\# { background: lime; }\\\\n.\\\\\\\\#\\\\\\\\# { background: lime; }\\\\n.\\\\\\\\#\\\\\\\\.\\\\\\\\#\\\\\\\\.\\\\\\\\# { background: lime; }\\\\n.\\\\\\\\_ { background: lime; }\\\\n.\\\\\\\\{\\\\\\\\} { background: lime; }\\\\n.\\\\\\\\#fake\\\\\\\\-id { background: lime; }\\\\n.foo\\\\\\\\.bar { background: lime; }\\\\n.\\\\\\\\3A hover { background: lime; }\\\\n.\\\\\\\\3A hover\\\\\\\\3A focus\\\\\\\\3A active { background: lime; }\\\\n.\\\\\\\\[attr\\\\\\\\=value\\\\\\\\] { background: lime; }\\\\n.f\\\\\\\\/o\\\\\\\\/o { background: lime; }\\\\n.f\\\\\\\\\\\\\\\\o\\\\\\\\\\\\\\\\o { background: lime; }\\\\n.f\\\\\\\\*o\\\\\\\\*o { background: lime; }\\\\n.f\\\\\\\\!o\\\\\\\\!o { background: lime; }\\\\n.f\\\\\\\\'o\\\\\\\\'o { background: lime; }\\\\n.f\\\\\\\\~o\\\\\\\\~o { background: lime; }\\\\n.f\\\\\\\\+o\\\\\\\\+o { background: lime; }\\\\n\\\\n.foo\\\\\\\\/bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\\\\\\\\\bar {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\/bar\\\\\\\\/baz {\\\\n background: hotpink;\\\\n}\\\\n\\\\n.foo\\\\\\\\\\\\\\\\bar\\\\\\\\\\\\\\\\baz {\\\\n background: hotpink;\\\\n}\\\\n\\", \\"\\"]); +// Exports +exports.locals = { + \\"123\\": \\"123\\", + \\"test\\": \\"test\\", + \\"_test\\": \\"_test\\", + \\"className\\": \\"className\\", + \\"someId\\": \\"someId\\", + \\"subClass\\": \\"subClass\\", + \\"-a0-34a___f\\": \\"-a0-34a___f\\", + \\"m_x_@\\": \\"m_x_@\\", + \\"B&W?\\": \\"B&W?\\", + \\":\`(\\": \\":\`(\\", + \\"1a2b3c\\": \\"1a2b3c\\", + \\"#fake-id\\": \\"#fake-id\\", + \\"-a-b-c-\\": \\"-a-b-c-\\", + \\"©\\": \\"©\\", + \\"♥\\": \\"♥\\", + \\"“‘’”\\": \\"“‘’”\\", + \\"☺☃\\": \\"☺☃\\", + \\"⌘⌥\\": \\"⌘⌥\\", + \\"𝄞♪♩♫♬\\": \\"𝄞♪♩♫♬\\", + \\"💩\\": \\"💩\\", + \\"?\\": \\"?\\", + \\"@\\": \\"@\\", + \\".\\": \\".\\", + \\":)\\": \\":)\\", + \\"
\\": \\"
\\", + \\"<><<<>><>\\": \\"<><<<>><>\\", + \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\": \\"++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.\\", + \\"#\\": \\"#\\", + \\"##\\": \\"##\\", + \\"#.#.#\\": \\"#.#.#\\", + \\"_\\": \\"_\\", + \\"{}\\": \\"{}\\", + \\"foo.bar\\": \\"foo.bar\\", + \\":hover\\": \\":hover\\", + \\":hover:focus:active\\": \\":hover:focus:active\\", + \\"[attr=value]\\": \\"[attr=value]\\", + \\"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\\", + \\"f+o+o\\": \\"f+o+o\\", + \\"foo/bar\\": \\"foo/bar\\", + \\"foo\\\\\\\\bar\\": \\"foo\\\\\\\\bar\\", + \\"foo/bar/baz\\": \\"foo/bar/baz\\", + \\"foo\\\\\\\\bar\\\\\\\\baz\\": \\"foo\\\\\\\\bar\\\\\\\\baz\\" +}; +module.exports = exports; +" +`; + +exports[`"modules" option should work with the "[local]" placeholder for the "localIdentName" option: result 1`] = ` +Array [ + Array [ + "./modules/localIdentName/localIdentName.css", ".test { background: red; } @@ -8253,83 +10925,4 @@ Array [ ] `; -exports[`modules should saves underscore prefix in exported class names with localIdentName option: warnings 1`] = `Array []`; - -exports[`modules should support "pure" value: errors 1`] = `Array []`; - -exports[`modules should support "pure" value: module (evaluated) 1`] = ` -Array [ - Array [ - 1, - "._3nNRq3PQ9uK67a19lT8NHq { - color: red; -} - -h1 ._2-tJ-0L9xa__ypZabJN82L { - color: green; -} - -._1ItNtG9CwOxu2Vxb-etJHN h1 { - color: blue; -} - -.SDNtlQ92cFx6fiH6yuh5K h1 ._35UJyh7y0HgDlh3_YNNxbm { - color: red; -} - -#_15-F5dpJOOl0BGWwx4yHdh { - color: red; -} - -h1 #_1NoAfl4L6pYsi53yvE4szS { - color: green; -} - -#Gf_c6hz7pPUKG_4DBKZX_ h1 { - color: blue; -} - -#gcol1OF3vPJZQgK7JWvsX h1 #_3vlp1YEgWrcYSofV_DbgLl { - color: red; -} - -._1aIXXfKePbQyIoBtx5r_i3 .bar ._1yneLDnIvMLhNduXi5yqqV { - color: white; -} - -._2u-qJxyLPtRRB90K5UQGa1 .Xt6ycOTkGG2zy0zRDe6BK ._3M5wEyAlDWBbzYBzLLARxJ { - color: black; -} -", - "", - ], -] -`; - -exports[`modules should support "pure" value: module 1`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -// Module -exports.push([module.id, \\"._3nNRq3PQ9uK67a19lT8NHq {\\\\n color: red;\\\\n}\\\\n\\\\nh1 ._2-tJ-0L9xa__ypZabJN82L {\\\\n color: green;\\\\n}\\\\n\\\\n._1ItNtG9CwOxu2Vxb-etJHN h1 {\\\\n color: blue;\\\\n}\\\\n\\\\n.SDNtlQ92cFx6fiH6yuh5K h1 ._35UJyh7y0HgDlh3_YNNxbm {\\\\n color: red;\\\\n}\\\\n\\\\n#_15-F5dpJOOl0BGWwx4yHdh {\\\\n color: red;\\\\n}\\\\n\\\\nh1 #_1NoAfl4L6pYsi53yvE4szS {\\\\n color: green;\\\\n}\\\\n\\\\n#Gf_c6hz7pPUKG_4DBKZX_ h1 {\\\\n color: blue;\\\\n}\\\\n\\\\n#gcol1OF3vPJZQgK7JWvsX h1 #_3vlp1YEgWrcYSofV_DbgLl {\\\\n color: red;\\\\n}\\\\n\\\\n._1aIXXfKePbQyIoBtx5r_i3 .bar ._1yneLDnIvMLhNduXi5yqqV {\\\\n color: white;\\\\n}\\\\n\\\\n._2u-qJxyLPtRRB90K5UQGa1 .Xt6ycOTkGG2zy0zRDe6BK ._3M5wEyAlDWBbzYBzLLARxJ {\\\\n color: black;\\\\n}\\\\n\\", \\"\\"]); -// Exports -exports.locals = { - \\"foo\\": \\"_3nNRq3PQ9uK67a19lT8NHq\\", - \\"foo-1\\": \\"_2-tJ-0L9xa__ypZabJN82L\\", - \\"foo-2\\": \\"_1ItNtG9CwOxu2Vxb-etJHN\\", - \\"foo-3\\": \\"SDNtlQ92cFx6fiH6yuh5K\\", - \\"foo-4\\": \\"_35UJyh7y0HgDlh3_YNNxbm\\", - \\"foo-5\\": \\"_15-F5dpJOOl0BGWwx4yHdh\\", - \\"foo-6\\": \\"_1NoAfl4L6pYsi53yvE4szS\\", - \\"foo-7\\": \\"Gf_c6hz7pPUKG_4DBKZX_\\", - \\"foo-8\\": \\"gcol1OF3vPJZQgK7JWvsX\\", - \\"foo-9\\": \\"_3vlp1YEgWrcYSofV_DbgLl\\", - \\"bar-1\\": \\"_1aIXXfKePbQyIoBtx5r_i3\\", - \\"bar-2\\": \\"_1yneLDnIvMLhNduXi5yqqV\\", - \\"baz-3\\": \\"_2u-qJxyLPtRRB90K5UQGa1\\", - \\"baz\\": \\"Xt6ycOTkGG2zy0zRDe6BK\\", - \\"bar-4\\": \\"_3M5wEyAlDWBbzYBzLLARxJ\\" -};" -`; - -exports[`modules should support "pure" value: warnings 1`] = `Array []`; +exports[`"modules" option should work with the "[local]" placeholder for the "localIdentName" option: warnings 1`] = `Array []`; diff --git a/test/__snapshots__/onlyLocals-option.test.js.snap b/test/__snapshots__/onlyLocals-option.test.js.snap index 98b474ee..82845d42 100644 --- a/test/__snapshots__/onlyLocals-option.test.js.snap +++ b/test/__snapshots__/onlyLocals-option.test.js.snap @@ -1,18 +1,18 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`modules true: errors 1`] = `Array []`; +exports[`"onlyLocals" option should work with the "esModule" option: errors 1`] = `Array []`; -exports[`modules true: module 1`] = ` +exports[`"onlyLocals" option should work with the "esModule" option: module 1`] = ` "// Imports -var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./values.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../src/index.js??ref--4-0!./something.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_2___ = require(\\"-!../../../src/index.js??ref--4-0!./imported-simple.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_3___ = require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_4___ = require(\\"-!../../../src/index.js??ref--4-0!../modules/top-relative.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_5___ = require(\\"-!../../../src/index.js??ref--4-0!package/style.css\\"); -var ___CSS_LOADER_ICSS_IMPORT_6___ = require(\\"-!../../../src/index.js??ref--4-0!aliasesComposes/alias.css\\"); +import ___CSS_LOADER_ICSS_IMPORT_0___ from \\"-!../../../../src/index.js??[ident]!./values.css\\"; +import ___CSS_LOADER_ICSS_IMPORT_1___ from \\"-!../../../../src/index.js??[ident]!./something.css\\"; +import ___CSS_LOADER_ICSS_IMPORT_2___ from \\"-!../../../../src/index.js??[ident]!./imported-simple.css\\"; +import ___CSS_LOADER_ICSS_IMPORT_3___ from \\"-!../../../../src/index.js??[ident]!./relative.css\\"; +import ___CSS_LOADER_ICSS_IMPORT_4___ from \\"-!../../../../src/index.js??[ident]!./top-relative.css\\"; +import ___CSS_LOADER_ICSS_IMPORT_5___ from \\"-!../../../../src/index.js??[ident]!../issue-861/node_modules/package/style.css\\"; +import ___CSS_LOADER_ICSS_IMPORT_6___ from \\"-!../../../../src/index.js??[ident]!aliasesComposes/alias.css\\"; // Exports -module.exports = { +export default { \\"v-def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___[\\"v-def\\"] + \\"\\", \\"v-other\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___[\\"v-other\\"] + \\"\\", \\"s-white\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___[\\"s-white\\"] + \\"\\", @@ -57,17 +57,169 @@ module.exports = { \\"header\\": \\"_header\\", \\"foobarbaz\\": \\"_foobarbaz\\", \\"url\\": \\"_url\\" -};" +}; +" +`; + +exports[`"onlyLocals" option should work with the "esModule" option: result 1`] = ` +Object { + "alias": "_alias _imported-alias", + "black-selector": "_black-selector", + "class": "_class", + "foo": "_foo", + "foobarbaz": "_foobarbaz", + "ghi": "_ghi", + "green": "_green", + "header": "_header", + "m-large": "(min-width: 960px)", + "m-small": "(min-width: 320px)", + "module": "_module _imported-module", + "other": "_other", + "other-other": "_other-other", + "primary-selector": "_primary-selector", + "relative": "_relative _imported-relative", + "s-black": "black-selector", + "s-white": "white", + "simple": "_simple _imported-simple", + "top-relative": "_top-relative undefined", + "url": "_url", + "v-bar": "block", + "v-def": "red", + "v-dimension": "12px", + "v-foo": "blue", + "v-function": "rgb(0,0,0)", + "v-hex": "#fff", + "v-ident": "validIdent", + "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-other": "green", + "v-percentage": "100%", + "v-pre-defined-ident": "left", + "v-primary": "#BF4040", + "v-something": "2112moon", + "v-string": "'content'", + "v-string-1": "''", + "v-unicode-range": "U+0025-00FF", + "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\\")", +} `; -exports[`modules true: values module 1`] = ` -"// Exports +exports[`"onlyLocals" option should work with the "esModule" option: warnings 1`] = `Array []`; + +exports[`"onlyLocals" option should work: errors 1`] = `Array []`; + +exports[`"onlyLocals" option should work: module 1`] = ` +"// Imports +var ___CSS_LOADER_ICSS_IMPORT_0___ = require(\\"-!../../../../src/index.js??[ident]!./values.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_1___ = require(\\"-!../../../../src/index.js??[ident]!./something.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_2___ = require(\\"-!../../../../src/index.js??[ident]!./imported-simple.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_3___ = require(\\"-!../../../../src/index.js??[ident]!./relative.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_4___ = require(\\"-!../../../../src/index.js??[ident]!./top-relative.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_5___ = require(\\"-!../../../../src/index.js??[ident]!../issue-861/node_modules/package/style.css\\"); +var ___CSS_LOADER_ICSS_IMPORT_6___ = require(\\"-!../../../../src/index.js??[ident]!aliasesComposes/alias.css\\"); +// Exports module.exports = { - \\"v-def\\": \\"red\\", - \\"v-other\\": \\"green\\", - \\"s-white\\": \\"white\\", - \\"m-small\\": \\"(min-width: 320px)\\" -};" + \\"v-def\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___[\\"v-def\\"] + \\"\\", + \\"v-other\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___[\\"v-other\\"] + \\"\\", + \\"s-white\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___[\\"s-white\\"] + \\"\\", + \\"m-small\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_0___[\\"m-small\\"] + \\"\\", + \\"v-something\\": \\"\\" + ___CSS_LOADER_ICSS_IMPORT_1___[\\"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 \\" + ___CSS_LOADER_ICSS_IMPORT_2___[\\"imported-simple\\"] + \\"\\", + \\"relative\\": \\"_relative \\" + ___CSS_LOADER_ICSS_IMPORT_3___[\\"imported-relative\\"] + \\"\\", + \\"top-relative\\": \\"_top-relative \\" + ___CSS_LOADER_ICSS_IMPORT_4___[\\"imported-relative\\"] + \\"\\", + \\"module\\": \\"_module \\" + ___CSS_LOADER_ICSS_IMPORT_5___[\\"imported-module\\"] + \\"\\", + \\"alias\\": \\"_alias \\" + ___CSS_LOADER_ICSS_IMPORT_6___[\\"imported-alias\\"] + \\"\\", + \\"primary-selector\\": \\"_primary-selector\\", + \\"black-selector\\": \\"_black-selector\\", + \\"header\\": \\"_header\\", + \\"foobarbaz\\": \\"_foobarbaz\\", + \\"url\\": \\"_url\\" +}; +" +`; + +exports[`"onlyLocals" option should work: result 1`] = ` +Object { + "alias": "_alias _imported-alias", + "black-selector": "_black-selector", + "class": "_class", + "foo": "_foo", + "foobarbaz": "_foobarbaz", + "ghi": "_ghi", + "green": "_green", + "header": "_header", + "m-large": "(min-width: 960px)", + "m-small": "(min-width: 320px)", + "module": "_module _imported-module", + "other": "_other", + "other-other": "_other-other", + "primary-selector": "_primary-selector", + "relative": "_relative _imported-relative", + "s-black": "black-selector", + "s-white": "white", + "simple": "_simple _imported-simple", + "top-relative": "_top-relative undefined", + "url": "_url", + "v-bar": "block", + "v-def": "red", + "v-dimension": "12px", + "v-foo": "blue", + "v-function": "rgb(0,0,0)", + "v-hex": "#fff", + "v-ident": "validIdent", + "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-other": "green", + "v-percentage": "100%", + "v-pre-defined-ident": "left", + "v-primary": "#BF4040", + "v-something": "2112moon", + "v-string": "'content'", + "v-string-1": "''", + "v-unicode-range": "U+0025-00FF", + "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\\")", +} `; -exports[`modules true: warnings 1`] = `Array []`; +exports[`"onlyLocals" option should work: warnings 1`] = `Array []`; diff --git a/test/__snapshots__/sourceMap-option.test.js.snap b/test/__snapshots__/sourceMap-option.test.js.snap index 43c55cae..02092fd5 100644 --- a/test/__snapshots__/sourceMap-option.test.js.snap +++ b/test/__snapshots__/sourceMap-option.test.js.snap @@ -1,11 +1,32 @@ // 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 maps when source maps equal to "null" from an other loader: errors 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps when source maps equal to "null" from an other loader: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option false should not generate source map when source map is \`null\` from other loader: module (evaluated) 1`] = ` +exports[`"sourceMap" option false should not generate source maps when source maps equal to "null" from an other loader: result 1`] = ` Array [ Array [ - 1, + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; +} +", + "", + ], + Array [ + "./source-map/basic.css", ".class { color: red; } @@ -15,14 +36,35 @@ Array [ ] `; -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 maps when source maps equal to "null" from an other loader: warnings 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps when source maps equal to "undefined" from an other loader: errors 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps when source maps equal to "undefined" from an other loader: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option false should not generate source map when source map is \`undefined\` from other loader: module (evaluated) 1`] = ` +exports[`"sourceMap" option false should not generate source maps when source maps equal to "undefined" from an other loader: result 1`] = ` Array [ Array [ - 1, + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; +} +", + "", + ], + Array [ + "./source-map/basic.css", ".class { color: red; } @@ -32,14 +74,35 @@ Array [ ] `; -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 maps when source maps equal to "undefined" from an other loader: warnings 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps when source maps is valid and string from an other loader: errors 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps when source maps is valid and string from an other loader: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option false should not generate source map: module (evaluated) 1`] = ` +exports[`"sourceMap" option false should not generate source maps when source maps is valid and string from an other loader: result 1`] = ` Array [ Array [ - 1, + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; +} +", + "", + ], + Array [ + "./source-map/basic.css", ".class { color: red; } @@ -49,14 +112,101 @@ Array [ ] `; -exports[`sourceMap option false should not generate source map: warnings 1`] = `Array []`; +exports[`"sourceMap" option false should not generate source maps when source maps is valid and string from an other loader: warnings 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps when source maps is valid from an other loader (\`postcss-loader\`): errors 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps when source maps is valid from an other loader (\`postcss-loader\`): module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.postcss.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// 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\\\\na {\\\\n color: rgba(0, 0, 255, 0.9)\\\\n}\\\\n\\\\na:hover {\\\\n color: #639;\\\\n }\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"sourceMap" option false should not generate source maps when source maps is valid from an other loader (\`postcss-loader\`): result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./source-map/nested/nested.postcss.css", + ".nested { + color: blue; +} +", + "", + ], + Array [ + "./source-map/basic.postcss.css", + ":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; + } +", + "", + ], +] +`; + +exports[`"sourceMap" option false should not generate source maps when source maps is valid from an other loader (\`postcss-loader\`): 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 false should not generate source maps when source maps is valid from an other loader (\`sass-loader\`): errors 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps when source maps is valid from an other loader (\`sass-loader\`): module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +// Module +exports.push([module.id, \\"body {\\\\n font: 100% Helvetica, sans-serif;\\\\n color: #333;\\\\n}\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option should not generate sourceMap when source map is valid from other loader (\`sass-loader\`): module (evaluated) 1`] = ` +exports[`"sourceMap" option false should not generate source maps when source maps is valid from an other loader (\`sass-loader\`): result 1`] = ` Array [ Array [ - 1, + "./source-map/basic.scss", "body { font: 100% Helvetica, sans-serif; color: #333; @@ -66,60 +216,142 @@ Array [ ] `; -exports[`sourceMap option should not generate sourceMap when source map is valid from other loader (\`sass-loader\`): warnings 1`] = `Array []`; +exports[`"sourceMap" option false should not generate source maps when source maps is valid from an other loader (\`sass-loader\`): warnings 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps: errors 1`] = `Array []`; + +exports[`"sourceMap" option false should not generate source maps: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option true should generate source map when source map is \`null\` from other loader: errors 1`] = `Array []`; +exports[`"sourceMap" option false should not generate source maps: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; +} +", + "", + ], + Array [ + "./source-map/basic.css", + ".class { + color: red; +} +", + "", + ], +] +`; + +exports[`"sourceMap" option false should not generate source maps: warnings 1`] = `Array []`; + +exports[`"sourceMap" option not specified should not generate source maps: errors 1`] = `Array []`; + +exports[`"sourceMap" option not specified should not generate source maps: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option true should generate source map when source map is \`null\` from other loader: module (evaluated) 1`] = ` +exports[`"sourceMap" option not specified should not generate source maps: result 1`] = ` Array [ Array [ - 1, + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; +} +", + "", + ], + Array [ + "./source-map/basic.css", ".class { color: red; } +", + "", + ], +] +`; + +exports[`"sourceMap" option not specified should not generate source maps: warnings 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps when source maps equal to "null" from an other loader: errors 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps when source maps equal to "null" from an other loader: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(true); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\",{\\"version\\":3,\\"sources\\":[\\"basic.css\\"],\\"names\\":[],\\"mappings\\":\\"AAEA;EACE,UAAU;AACZ\\",\\"file\\":\\"basic.css\\",\\"sourcesContent\\":[\\"@import \\\\\\"./nested/nested.css\\\\\\";\\\\n\\\\n.class {\\\\n color: red;\\\\n}\\\\n\\"]}]); +// Exports +module.exports = exports; +" +`; + +exports[`"sourceMap" option true should generate source maps when source maps equal to "null" from an other loader: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; +} ", "", Object { - "file": "../../basic.css", - "mappings": "AAAA;EACE,UAAU;AACZ", + "file": "nested.css", + "mappings": "AAAA;EACE,WAAW;AACb", "names": Array [], "sources": Array [ - "../../basic.css", + "nested.css", ], "sourcesContent": Array [ - ".class { - color: red; + ".nested { + color: blue; } ", ], "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, + "./source-map/basic.css", ".class { color: red; } ", "", Object { - "file": "../../basic.css", - "mappings": "AAAA;EACE,UAAU;AACZ", + "file": "basic.css", + "mappings": "AAEA;EACE,UAAU;AACZ", "names": Array [], "sources": Array [ - "../../basic.css", + "basic.css", ], "sourcesContent": Array [ - ".class { + "@import \\"./nested/nested.css\\"; + +.class { color: red; } ", @@ -130,64 +362,133 @@ Array [ ] `; -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 maps when source maps equal to "null" from an other loader: warnings 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps when source maps equal to "undefined" from an other loader: errors 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps when source maps equal to "undefined" from an other loader: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(true); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\",{\\"version\\":3,\\"sources\\":[\\"basic.css\\"],\\"names\\":[],\\"mappings\\":\\"AAEA;EACE,UAAU;AACZ\\",\\"file\\":\\"basic.css\\",\\"sourcesContent\\":[\\"@import \\\\\\"./nested/nested.css\\\\\\";\\\\n\\\\n.class {\\\\n color: red;\\\\n}\\\\n\\"]}]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option true should generate source map when source map is valid and it is string from other loader: module (evaluated) 1`] = ` +exports[`"sourceMap" option true should generate source maps when source maps equal to "undefined" from an other loader: result 1`] = ` Array [ Array [ - 1, + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; +} +", + "", + Object { + "file": "nested.css", + "mappings": "AAAA;EACE,WAAW;AACb", + "names": Array [], + "sources": Array [ + "nested.css", + ], + "sourcesContent": Array [ + ".nested { + color: blue; +} +", + ], + "version": 3, + }, + ], + Array [ + "./source-map/basic.css", ".class { color: red; } ", "", Object { - "file": "../../basic.css", - "mappings": "AAGA;EACE,UAAA;ACFF", + "file": "basic.css", + "mappings": "AAEA;EACE,UAAU;AACZ", "names": Array [], "sources": Array [ - "source-map/basic.postcss.css", - "../../basic.css", + "basic.css", ], "sourcesContent": Array [ - "@custom-media --viewport-medium (width <= 50rem); -@custom-selector :--heading h1, h2, h3, h4, h5, h6; + "@import \\"./nested/nested.css\\"; -:root { - --fontSize: 1rem; - --mainColor: #12345678; - --secondaryColor: lab(32.5 38.5 -47.6 / 90%); +.class { + color: red; } +", + ], + "version": 3, + }, + ], +] +`; -html { - overflow: hidden auto; -} +exports[`"sourceMap" option true should generate source maps when source maps equal to "undefined" from an other loader: warnings 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps when source maps is valid and string from an other loader: errors 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps when source maps is valid and string from an other loader: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(true); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\",{\\"version\\":3,\\"sources\\":[\\"basic.css\\"],\\"names\\":[],\\"mappings\\":\\"AAEA;EACE,UAAU;AACZ\\",\\"file\\":\\"basic.css\\",\\"sourcesContent\\":[\\".class {\\\\n color: red;\\\\n}\\\\n\\"]}]); +// Exports +module.exports = exports; +" +`; -@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); - } +exports[`"sourceMap" option true should generate source maps when source maps is valid and string from an other loader: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; } - -:--heading { - margin-block: 0; +", + "", + Object { + "file": "nested.css", + "mappings": "AAAA;EACE,WAAW;AACb", + "names": Array [], + "sources": Array [ + "nested.css", + ], + "sourcesContent": Array [ + ".nested { + color: blue; } - -a { - color: rgb(0 0 100% / 90%); - -&:hover { - color: rebeccapurple; - } +", + ], + "version": 3, + }, + ], + Array [ + "./source-map/basic.css", + ".class { + color: red; } ", + "", + Object { + "file": "basic.css", + "mappings": "AAEA;EACE,UAAU;AACZ", + "names": Array [], + "sources": Array [ + "basic.css", + ], + "sourcesContent": Array [ ".class { color: red; } @@ -199,14 +500,50 @@ a { ] `; -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 maps when source maps is valid and string from an other loader: warnings 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps when source maps is valid from an other loader (\`postcss-loader\`): errors 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps when source maps is valid from an other loader (\`postcss-loader\`): module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.postcss.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(true); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// 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\\\\na {\\\\n color: rgba(0, 0, 255, 0.9)\\\\n}\\\\n\\\\na:hover {\\\\n color: #639;\\\\n }\\\\n\\", \\"\\",{\\"version\\":3,\\"sources\\":[\\"basic.postcss.css\\"],\\"names\\":[],\\"mappings\\":\\"AAKA;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\\":\\"basic.postcss.css\\",\\"sourcesContent\\":[\\"@import \\\\\\"./nested/nested.postcss.css\\\\\\";\\\\n\\\\n@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\\"]}]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option true should generate source map when source map is valid from other loader (\`postcss-loader\`): module (evaluated) 1`] = ` +exports[`"sourceMap" option true should generate source maps when source maps is valid from an other loader (\`postcss-loader\`): result 1`] = ` Array [ Array [ - 1, + "../../src/index.js?[ident]!./source-map/nested/nested.postcss.css", + ".nested { + color: blue; +} +", + "", + Object { + "file": "nested.postcss.css", + "mappings": "AAAA;EACE,WAAW;AACb", + "names": Array [], + "sources": Array [ + "nested.postcss.css", + ], + "sourcesContent": Array [ + ".nested { + color: blue; +} +", + ], + "version": 3, + }, + ], + Array [ + "./source-map/basic.postcss.css", ":root { --fontSize: 1rem; --mainColor: rgba(18,52,86,0.47059); @@ -251,14 +588,16 @@ a:hover { ", "", 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", + "file": "basic.postcss.css", + "mappings": "AAKA;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", + "basic.postcss.css", ], "sourcesContent": Array [ - "@custom-media --viewport-medium (width <= 50rem); + "@import \\"./nested/nested.postcss.css\\"; + +@custom-media --viewport-medium (width <= 50rem); @custom-selector :--heading h1, h2, h3, h4, h5, h6; :root { @@ -301,69 +640,66 @@ a { ] `; -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 maps when source maps is valid from an other loader (\`postcss-loader\`): warnings 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps: errors 1`] = `Array []`; + +exports[`"sourceMap" option true should generate source maps: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./nested/nested.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(true); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// Module +exports.push([module.id, \\".class {\\\\n color: red;\\\\n}\\\\n\\", \\"\\",{\\"version\\":3,\\"sources\\":[\\"basic.css\\"],\\"names\\":[],\\"mappings\\":\\"AAEA;EACE,UAAU;AACZ\\",\\"file\\":\\"basic.css\\",\\"sourcesContent\\":[\\"@import \\\\\\"./nested/nested.css\\\\\\";\\\\n\\\\n.class {\\\\n color: red;\\\\n}\\\\n\\"]}]); +// Exports +module.exports = exports; +" +`; -exports[`sourceMap option true should generate source map when source map is valid from other loader (\`sass-loader\`): module (evaluated) 1`] = ` +exports[`"sourceMap" option true should generate source maps: result 1`] = ` Array [ Array [ - 1, - "body { - font: 100% Helvetica, sans-serif; - color: #333; -}", + "../../src/index.js?[ident]!./source-map/nested/nested.css", + ".nested { + color: blue; +} +", "", Object { - "file": "../../basic.scss", - "mappings": "AAGA;EACE,gCAAA;EACA,WAJc;ACEhB", + "file": "nested.css", + "mappings": "AAAA;EACE,WAAW;AACb", "names": Array [], "sources": Array [ - "source-map/basic.scss", - "../../basic.scss", + "nested.css", ], "sourcesContent": Array [ - "$font-stack: Helvetica, sans-serif; -$primary-color: #333; - -body { - font: 100% $font-stack; - color: $primary-color; + ".nested { + color: blue; } ", - "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, + "./source-map/basic.css", ".class { color: red; } ", "", Object { - "file": "../../basic.css", - "mappings": "AAAA;EACE,UAAU;AACZ", + "file": "basic.css", + "mappings": "AAEA;EACE,UAAU;AACZ", "names": Array [], "sources": Array [ - "../../basic.css", + "basic.css", ], "sourcesContent": Array [ - ".class { + "@import \\"./nested/nested.css\\"; + +.class { color: red; } ", @@ -374,4 +710,4 @@ Array [ ] `; -exports[`sourceMap option true should generate source map: warnings 1`] = `Array []`; +exports[`"sourceMap" option true should generate source maps: warnings 1`] = `Array []`; diff --git a/test/__snapshots__/url-option.test.js.snap b/test/__snapshots__/url-option.test.js.snap index c4904a9b..0fae4c49 100644 --- a/test/__snapshots__/url-option.test.js.snap +++ b/test/__snapshots__/url-option.test.js.snap @@ -1,11 +1,564 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`url option Function: errors 1`] = `Array []`; +exports[`"url" option should work when not specified: errors 1`] = `Array []`; -exports[`url option Function: module (evaluated) 1`] = ` +exports[`"url" option should work when not specified: module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"package/img.png\\"); +var ___CSS_LOADER_URL_IMPORT_2___ = require(\\"./other-img.png\\"); +var ___CSS_LOADER_URL_IMPORT_3___ = require(\\"./img img.png\\"); +var ___CSS_LOADER_URL_IMPORT_4___ = require(\\"./font.woff\\"); +var ___CSS_LOADER_URL_IMPORT_5___ = require(\\"./font.woff2\\"); +var ___CSS_LOADER_URL_IMPORT_6___ = require(\\"./font.eot\\"); +var ___CSS_LOADER_URL_IMPORT_7___ = require(\\"package/font.ttf\\"); +var ___CSS_LOADER_URL_IMPORT_8___ = require(\\"./font with spaces.eot\\"); +var ___CSS_LOADER_URL_IMPORT_9___ = require(\\"./font.svg\\"); +var ___CSS_LOADER_URL_IMPORT_10___ = require(\\"./font.woff2?foo=bar\\"); +var ___CSS_LOADER_URL_IMPORT_11___ = require(\\"./img1x.png\\"); +var ___CSS_LOADER_URL_IMPORT_12___ = require(\\"./img2x.png\\"); +var ___CSS_LOADER_URL_IMPORT_13___ = require(\\"./img.png?foo\\"); +var ___CSS_LOADER_URL_IMPORT_14___ = require(\\"./img.png?foo=bar\\"); +var ___CSS_LOADER_URL_IMPORT_15___ = require(\\"./img.png?\\"); +var ___CSS_LOADER_URL_IMPORT_16___ = require(\\"./img-simple.png\\"); +var ___CSS_LOADER_URL_IMPORT_17___ = require(\\"../url/img-simple.png\\"); +var ___CSS_LOADER_URL_IMPORT_18___ = require(\\"aliasesImg/img.png\\"); +var ___CSS_LOADER_URL_IMPORT_19___ = require(\\"./nested/img.png\\"); +var ___CSS_LOADER_URL_IMPORT_20___ = require(\\"./img3x.png\\"); +var ___CSS_LOADER_URL_IMPORT_21___ = require(\\"./img1x.png?foo=bar\\"); +var ___CSS_LOADER_URL_IMPORT_22___ = require(\\"./img'img.png\\"); +var ___CSS_LOADER_URL_IMPORT_23___ = require(\\"./img'''img.png\\"); +var ___CSS_LOADER_URL_IMPORT_24___ = require(\\"./img(img.png\\"); +var ___CSS_LOADER_URL_IMPORT_25___ = require(\\"./img)img.png\\"); +var ___CSS_LOADER_URL_IMPORT_26___ = require(\\"./img'() img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#hash\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___); +var ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___); +var ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___); +var ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___); +var ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___); +var ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___); +var ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___); +var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \\"#svgFontName\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___); +var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___, { hash: \\"?#iefix\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { hash: \\"?#iefix\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___); +var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___); +var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___); +var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___); +var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \\"#hash\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___); +var ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___); +var ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___); +var ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___); +var ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___); +var ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"#hash\\", needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"?#iefix\\", needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___); +var ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___); +var ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___); +var ___CSS_LOADER_URL_REPLACEMENT_34___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___); +var ___CSS_LOADER_URL_REPLACEMENT_35___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___); +var ___CSS_LOADER_URL_REPLACEMENT_36___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_26___); +// Module +exports.push([module.id, \\".class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_5___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_16___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8,\\\\\\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\");\\\\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_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_29___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n /* Not allowed on windows */\\\\n /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n\\\\n background-image: image-set(\\\\n \\\\n \\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\") 3x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\") 4x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\") 5x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 6x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\") 7x\\\\n );\\\\n}\\\\n\\\\n.class-class-class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n}\\\\n\\\\n.other-test-case {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.qqq {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.www {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"url" option should work when not specified: result 1`] = ` +Array [ + Array [ + "../../src/index.js?[ident]!./url/imported.css", + ".bar { + background: url(/webpack/public/path/img-from-imported.png); +} +", + "", + ], + Array [ + "./url/url.css", + ".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); +} + +.class { + /* Not allowed on windows */ + /* background: url(./img\\\\\\"img.png); */ + background: url(\\"/webpack/public/path/img'img.png\\"); + background: url(\\"/webpack/public/path/img'''img.png\\"); + background: url(\\"/webpack/public/path/img(img.png\\"); + background: url(\\"/webpack/public/path/img)img.png\\"); + background: url(\\"/webpack/public/path/img img.png\\"); + background: url(\\"/webpack/public/path/img'() img.png\\"); + + background-image: image-set( + + + url(\\"/webpack/public/path/img'''img.png\\") 2x, + url(\\"/webpack/public/path/img'img.png\\") 3x, + url(\\"/webpack/public/path/img(img.png\\") 4x, + url(\\"/webpack/public/path/img)img.png\\") 5x, + url(\\"/webpack/public/path/img img.png\\") 6x, + url(\\"/webpack/public/path/img'() img.png\\") 7x + ); +} + +.class-class-class { + background: url(\\"/webpack/public/path/img'''img.png\\"); + background: url(\\"/webpack/public/path/img'() img.png\\"); + background: url(\\"/webpack/public/path/img'img.png\\"); + background: url(\\"/webpack/public/path/img(img.png\\"); + background: url(\\"/webpack/public/path/img)img.png\\"); + background: url(\\"/webpack/public/path/img img.png\\"); + background: url(\\"/webpack/public/path/img img.png\\"); +} + +.class.class.class { + background: url(\\"/webpack/public/path/img(img.png\\"); + background: url(\\"/webpack/public/path/img(img.png\\"); +} + +.other-test-case { + background: url(\\"/webpack/public/path/img'''img.png\\"); + background: url(\\"/webpack/public/path/img'() img.png\\"); + background: url(\\"/webpack/public/path/img'img.png\\"); + background: url(\\"/webpack/public/path/img(img.png\\"); + background: url(\\"/webpack/public/path/img)img.png\\"); + background: url(\\"/webpack/public/path/img img.png\\"); + background: url(\\"/webpack/public/path/img'''img.png\\"); + background: url(\\"/webpack/public/path/img'() img.png\\"); + background: url(\\"/webpack/public/path/img'img.png\\"); + background: url(\\"/webpack/public/path/img(img.png\\"); + background: url(\\"/webpack/public/path/img)img.png\\"); + background: url(\\"/webpack/public/path/img img.png\\"); +} + +.qqq { + background: url(/webpack/public/path/img.png); +} + +.www { + background: url(\\"/webpack/public/path/img'''img.png\\"); + background: url(\\"/webpack/public/path/img'() img.png\\"); + background: url(\\"/webpack/public/path/img'img.png\\"); + background: url(\\"/webpack/public/path/img(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); + background: url(\\"/webpack/public/path/img'img.png\\"); + background: url(\\"/webpack/public/path/img'() img.png\\"); + background: url(\\"/webpack/public/path/img'() img.png\\"); +} +", + "", + ], +] +`; + +exports[`"url" option should work when not specified: 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 should work with a value equal to "Function": errors 1`] = `Array []`; + +exports[`"url" option should work with a value equal to "Function": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./font.woff\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./font.woff2\\"); +var ___CSS_LOADER_URL_IMPORT_2___ = require(\\"./font.eot\\"); +var ___CSS_LOADER_URL_IMPORT_3___ = require(\\"package/font.ttf\\"); +var ___CSS_LOADER_URL_IMPORT_4___ = require(\\"./font with spaces.eot\\"); +var ___CSS_LOADER_URL_IMPORT_5___ = require(\\"./font.svg\\"); +var ___CSS_LOADER_URL_IMPORT_6___ = require(\\"./font.woff2?foo=bar\\"); +var ___CSS_LOADER_URL_IMPORT_7___ = require(\\"./img1x.png\\"); +var ___CSS_LOADER_URL_IMPORT_8___ = require(\\"./img2x.png\\"); +var ___CSS_LOADER_URL_IMPORT_9___ = require(\\"./img-simple.png\\"); +var ___CSS_LOADER_URL_IMPORT_10___ = require(\\"../url/img-simple.png\\"); +var ___CSS_LOADER_URL_IMPORT_11___ = require(\\"./img3x.png\\"); +var ___CSS_LOADER_URL_IMPORT_12___ = require(\\"./img1x.png?foo=bar\\"); +var ___CSS_LOADER_URL_IMPORT_13___ = require(\\"./img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___); +var ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___); +var ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___); +var ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___, { hash: \\"#svgFontName\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___); +var ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___, { hash: \\"?#iefix\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___, { hash: \\"?#iefix\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___); +var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___); +var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___); +var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___); +var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"#hash\\", needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"?#iefix\\", needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___); +var ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___); +// 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_REPLACEMENT_0___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_11___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_13___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x);\\\\n background-image: image-set(\\\\\\"./img img.png\\\\\\" 1x, \\\\\\"./img img.png\\\\\\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_9___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n /* Not allowed on windows */\\\\n /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n background: url(./img\\\\\\\\'img.png);\\\\n background: url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png);\\\\n background: url(./img\\\\\\\\(img.png);\\\\n background: url(./img\\\\\\\\)img.png);\\\\n background: url(./img\\\\\\\\ img.png);\\\\n background: url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png);\\\\n\\\\n background-image: image-set(\\\\n /* Not allowed on windows */\\\\n /* url(./img\\\\\\\\\\\\\\"img.png) 1x, */\\\\n url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png) 2x,\\\\n url(./img\\\\\\\\'img.png) 3x,\\\\n url(./img\\\\\\\\(img.png) 4x,\\\\n url(./img\\\\\\\\)img.png) 5x,\\\\n url(./img\\\\\\\\ img.png) 6x,\\\\n url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png) 7x\\\\n );\\\\n}\\\\n\\\\n.class-class-class {\\\\n background: url(\\\\\\"./img'''img.png\\\\\\");\\\\n background: url(\\\\\\"./img'() img.png\\\\\\");\\\\n background: url(\\\\\\"./img'img.png\\\\\\");\\\\n background: url(\\\\\\"./img(img.png\\\\\\");\\\\n background: url(\\\\\\"./img)img.png\\\\\\");\\\\n background: url('./img img.png');\\\\n background: url(\\\\\\"./img img.png\\\\\\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n background: url('./img\\\\\\\\\\\\n(img.png');\\\\n background: url('./img\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n(img.png');\\\\n}\\\\n\\\\n.other-test-case {\\\\n background: url(\\\\\\"./img%27%27%27img.png\\\\\\");\\\\n background: url(\\\\\\"./img%27%28%29%20img.png\\\\\\");\\\\n background: url(\\\\\\"./img%27img.png\\\\\\");\\\\n background: url(\\\\\\"./img%28img.png\\\\\\");\\\\n background: url(\\\\\\"./img%29img.png\\\\\\");\\\\n background: url(\\\\\\"./img%20img.png\\\\\\");\\\\n background: url(./img%27%27%27img.png);\\\\n background: url(./img%27%28%29%20img.png);\\\\n background: url(./img%27img.png);\\\\n background: url(./img%28img.png);\\\\n background: url(./img%29img.png);\\\\n background: url(./img%20img.png);\\\\n}\\\\n\\\\n.qqq {\\\\n background: url('img.png');\\\\n}\\\\n\\\\n.www {\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\(img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\)img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\ img.png\\\\\\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n background: url(\\\\\\"./img\\\\\\\\27img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\28%29 img.png\\\\\\");\\\\n background: url(./img\\\\\\\\'\\\\\\\\28%29\\\\\\\\ img.png);\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; + +exports[`"url" option should work with a value equal to "Function": result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./url/imported.css", ".bar { background: url(/webpack/public/path/img-from-imported.png); } @@ -13,7 +566,7 @@ Array [ "", ], Array [ - 1, + "./url/url.css", ".class { background: url('./img.png'); } @@ -363,54 +916,7 @@ a { ] `; -exports[`url option Function: module 1`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"); -var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); -var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./font.woff\\"); -var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"./font.woff2\\"); -var ___CSS_LOADER_URL_IMPORT_2___ = require(\\"./font.eot\\"); -var ___CSS_LOADER_URL_IMPORT_3___ = require(\\"package/font.ttf\\"); -var ___CSS_LOADER_URL_IMPORT_4___ = require(\\"./font with spaces.eot\\"); -var ___CSS_LOADER_URL_IMPORT_5___ = require(\\"./font.svg\\"); -var ___CSS_LOADER_URL_IMPORT_6___ = require(\\"./font.woff2?foo=bar\\"); -var ___CSS_LOADER_URL_IMPORT_7___ = require(\\"./img1x.png\\"); -var ___CSS_LOADER_URL_IMPORT_8___ = require(\\"./img2x.png\\"); -var ___CSS_LOADER_URL_IMPORT_9___ = require(\\"./img-simple.png\\"); -var ___CSS_LOADER_URL_IMPORT_10___ = require(\\"../url/img-simple.png\\"); -var ___CSS_LOADER_URL_IMPORT_11___ = require(\\"./img3x.png\\"); -var ___CSS_LOADER_URL_IMPORT_12___ = require(\\"./img1x.png?foo=bar\\"); -var ___CSS_LOADER_URL_IMPORT_13___ = require(\\"./img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); -var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___); -var ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___); -var ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___); -var ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___, { hash: \\"#svgFontName\\" }); -var ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___); -var ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___, { hash: \\"?#iefix\\" }); -var ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___, { hash: \\"?#iefix\\" }); -var ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___); -var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___); -var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___); -var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___); -var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"#hash\\", needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___, { hash: \\"?#iefix\\", needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___); -var ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___); -// 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_REPLACEMENT_0___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_11___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_13___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x);\\\\n background-image: image-set(\\\\\\"./img img.png\\\\\\" 1x, \\\\\\"./img img.png\\\\\\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_9___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n /* Not allowed on windows */\\\\n /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n background: url(./img\\\\\\\\'img.png);\\\\n background: url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png);\\\\n background: url(./img\\\\\\\\(img.png);\\\\n background: url(./img\\\\\\\\)img.png);\\\\n background: url(./img\\\\\\\\ img.png);\\\\n background: url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png);\\\\n\\\\n background-image: image-set(\\\\n /* Not allowed on windows */\\\\n /* url(./img\\\\\\\\\\\\\\"img.png) 1x, */\\\\n url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png) 2x,\\\\n url(./img\\\\\\\\'img.png) 3x,\\\\n url(./img\\\\\\\\(img.png) 4x,\\\\n url(./img\\\\\\\\)img.png) 5x,\\\\n url(./img\\\\\\\\ img.png) 6x,\\\\n url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png) 7x\\\\n );\\\\n}\\\\n\\\\n.class-class-class {\\\\n background: url(\\\\\\"./img'''img.png\\\\\\");\\\\n background: url(\\\\\\"./img'() img.png\\\\\\");\\\\n background: url(\\\\\\"./img'img.png\\\\\\");\\\\n background: url(\\\\\\"./img(img.png\\\\\\");\\\\n background: url(\\\\\\"./img)img.png\\\\\\");\\\\n background: url('./img img.png');\\\\n background: url(\\\\\\"./img img.png\\\\\\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n background: url('./img\\\\\\\\\\\\n(img.png');\\\\n background: url('./img\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n(img.png');\\\\n}\\\\n\\\\n.other-test-case {\\\\n background: url(\\\\\\"./img%27%27%27img.png\\\\\\");\\\\n background: url(\\\\\\"./img%27%28%29%20img.png\\\\\\");\\\\n background: url(\\\\\\"./img%27img.png\\\\\\");\\\\n background: url(\\\\\\"./img%28img.png\\\\\\");\\\\n background: url(\\\\\\"./img%29img.png\\\\\\");\\\\n background: url(\\\\\\"./img%20img.png\\\\\\");\\\\n background: url(./img%27%27%27img.png);\\\\n background: url(./img%27%28%29%20img.png);\\\\n background: url(./img%27img.png);\\\\n background: url(./img%28img.png);\\\\n background: url(./img%29img.png);\\\\n background: url(./img%20img.png);\\\\n}\\\\n\\\\n.qqq {\\\\n background: url('img.png');\\\\n}\\\\n\\\\n.www {\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\(img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\)img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\ img.png\\\\\\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \\");\\\\n background: url(\\\\\\"./img\\\\\\\\27img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\28%29 img.png\\\\\\");\\\\n background: url(./img\\\\\\\\'\\\\\\\\28%29\\\\\\\\ img.png);\\\\n}\\\\n\\", \\"\\"]); -" -`; - -exports[`url option Function: warnings 1`] = ` +exports[`"url" option should work with a value equal to "Function": warnings 1`] = ` Array [ "ModuleWarning: Module Warning (from \`replaced original path\`): Warning @@ -478,12 +984,25 @@ Warning ] `; -exports[`url option false: errors 1`] = `Array []`; +exports[`"url" option should work with a value equal to "false": errors 1`] = `Array []`; + +exports[`"url" option should work with a value equal to "false": module 1`] = ` +"// Imports +var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); +exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +// 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\\\\n.class {\\\\n /* Not allowed on windows */\\\\n /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n background: url(./img\\\\\\\\'img.png);\\\\n background: url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png);\\\\n background: url(./img\\\\\\\\(img.png);\\\\n background: url(./img\\\\\\\\)img.png);\\\\n background: url(./img\\\\\\\\ img.png);\\\\n background: url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png);\\\\n\\\\n background-image: image-set(\\\\n /* Not allowed on windows */\\\\n /* url(./img\\\\\\\\\\\\\\"img.png) 1x, */\\\\n url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png) 2x,\\\\n url(./img\\\\\\\\'img.png) 3x,\\\\n url(./img\\\\\\\\(img.png) 4x,\\\\n url(./img\\\\\\\\)img.png) 5x,\\\\n url(./img\\\\\\\\ img.png) 6x,\\\\n url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png) 7x\\\\n );\\\\n}\\\\n\\\\n.class-class-class {\\\\n background: url(\\\\\\"./img'''img.png\\\\\\");\\\\n background: url(\\\\\\"./img'() img.png\\\\\\");\\\\n background: url(\\\\\\"./img'img.png\\\\\\");\\\\n background: url(\\\\\\"./img(img.png\\\\\\");\\\\n background: url(\\\\\\"./img)img.png\\\\\\");\\\\n background: url('./img img.png');\\\\n background: url(\\\\\\"./img img.png\\\\\\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n background: url('./img\\\\\\\\\\\\n(img.png');\\\\n background: url('./img\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n(img.png');\\\\n}\\\\n\\\\n.other-test-case {\\\\n background: url(\\\\\\"./img%27%27%27img.png\\\\\\");\\\\n background: url(\\\\\\"./img%27%28%29%20img.png\\\\\\");\\\\n background: url(\\\\\\"./img%27img.png\\\\\\");\\\\n background: url(\\\\\\"./img%28img.png\\\\\\");\\\\n background: url(\\\\\\"./img%29img.png\\\\\\");\\\\n background: url(\\\\\\"./img%20img.png\\\\\\");\\\\n background: url(./img%27%27%27img.png);\\\\n background: url(./img%27%28%29%20img.png);\\\\n background: url(./img%27img.png);\\\\n background: url(./img%28img.png);\\\\n background: url(./img%29img.png);\\\\n background: url(./img%20img.png);\\\\n}\\\\n\\\\n.qqq {\\\\n background: url('img.png');\\\\n}\\\\n\\\\n.www {\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\(img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\)img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\ img.png\\\\\\");\\\\n background: url(\\\\\\"./\\\\\\\\69\\\\\\\\6D\\\\\\\\67.png\\\\\\");\\\\n background: url(./\\\\\\\\69\\\\\\\\6D\\\\\\\\67.png);\\\\n background: url(\\\\\\"./img\\\\\\\\27img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\28%29 img.png\\\\\\");\\\\n background: url(./img\\\\\\\\'\\\\\\\\28%29\\\\\\\\ img.png);\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; +" +`; -exports[`url option false: module (evaluated) 1`] = ` +exports[`"url" option should work with a value equal to "false": result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./url/imported.css", ".bar { background: url('./img-from-imported.png'); } @@ -491,7 +1010,7 @@ Array [ "", ], Array [ - 1, + "./url/url.css", ".class { background: url('./img.png'); } @@ -841,25 +1360,92 @@ a { ] `; -exports[`url option false: module 1`] = ` +exports[`"url" option should work with a value equal to "false": warnings 1`] = `Array []`; + +exports[`"url" option should work with a value equal to "true": errors 1`] = `Array []`; + +exports[`"url" option should work with a value equal to "true": module 1`] = ` "// Imports var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); +var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??[ident]!./imported.css\\"); +var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); +var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); +var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"package/img.png\\"); +var ___CSS_LOADER_URL_IMPORT_2___ = require(\\"./other-img.png\\"); +var ___CSS_LOADER_URL_IMPORT_3___ = require(\\"./img img.png\\"); +var ___CSS_LOADER_URL_IMPORT_4___ = require(\\"./font.woff\\"); +var ___CSS_LOADER_URL_IMPORT_5___ = require(\\"./font.woff2\\"); +var ___CSS_LOADER_URL_IMPORT_6___ = require(\\"./font.eot\\"); +var ___CSS_LOADER_URL_IMPORT_7___ = require(\\"package/font.ttf\\"); +var ___CSS_LOADER_URL_IMPORT_8___ = require(\\"./font with spaces.eot\\"); +var ___CSS_LOADER_URL_IMPORT_9___ = require(\\"./font.svg\\"); +var ___CSS_LOADER_URL_IMPORT_10___ = require(\\"./font.woff2?foo=bar\\"); +var ___CSS_LOADER_URL_IMPORT_11___ = require(\\"./img1x.png\\"); +var ___CSS_LOADER_URL_IMPORT_12___ = require(\\"./img2x.png\\"); +var ___CSS_LOADER_URL_IMPORT_13___ = require(\\"./img.png?foo\\"); +var ___CSS_LOADER_URL_IMPORT_14___ = require(\\"./img.png?foo=bar\\"); +var ___CSS_LOADER_URL_IMPORT_15___ = require(\\"./img.png?\\"); +var ___CSS_LOADER_URL_IMPORT_16___ = require(\\"./img-simple.png\\"); +var ___CSS_LOADER_URL_IMPORT_17___ = require(\\"../url/img-simple.png\\"); +var ___CSS_LOADER_URL_IMPORT_18___ = require(\\"aliasesImg/img.png\\"); +var ___CSS_LOADER_URL_IMPORT_19___ = require(\\"./nested/img.png\\"); +var ___CSS_LOADER_URL_IMPORT_20___ = require(\\"./img3x.png\\"); +var ___CSS_LOADER_URL_IMPORT_21___ = require(\\"./img1x.png?foo=bar\\"); +var ___CSS_LOADER_URL_IMPORT_22___ = require(\\"./img'img.png\\"); +var ___CSS_LOADER_URL_IMPORT_23___ = require(\\"./img'''img.png\\"); +var ___CSS_LOADER_URL_IMPORT_24___ = require(\\"./img(img.png\\"); +var ___CSS_LOADER_URL_IMPORT_25___ = require(\\"./img)img.png\\"); +var ___CSS_LOADER_URL_IMPORT_26___ = require(\\"./img'() img.png\\"); +exports = ___CSS_LOADER_API_IMPORT___(false); exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); +var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#hash\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); +var ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___); +var ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___); +var ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___); +var ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___); +var ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___); +var ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___); +var ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___); +var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \\"#svgFontName\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___); +var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___, { hash: \\"?#iefix\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { hash: \\"?#iefix\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___); +var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___); +var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___); +var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___); +var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \\"#hash\\" }); +var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___); +var ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___); +var ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___); +var ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___); +var ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___); +var ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___, { needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"#hash\\", needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"?#iefix\\", needQuotes: true }); +var ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___); +var ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___); +var ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___); +var ___CSS_LOADER_URL_REPLACEMENT_34___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___); +var ___CSS_LOADER_URL_REPLACEMENT_35___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___); +var ___CSS_LOADER_URL_REPLACEMENT_36___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_26___); // 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\\\\n.class {\\\\n /* Not allowed on windows */\\\\n /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n background: url(./img\\\\\\\\'img.png);\\\\n background: url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png);\\\\n background: url(./img\\\\\\\\(img.png);\\\\n background: url(./img\\\\\\\\)img.png);\\\\n background: url(./img\\\\\\\\ img.png);\\\\n background: url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png);\\\\n\\\\n background-image: image-set(\\\\n /* Not allowed on windows */\\\\n /* url(./img\\\\\\\\\\\\\\"img.png) 1x, */\\\\n url(./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png) 2x,\\\\n url(./img\\\\\\\\'img.png) 3x,\\\\n url(./img\\\\\\\\(img.png) 4x,\\\\n url(./img\\\\\\\\)img.png) 5x,\\\\n url(./img\\\\\\\\ img.png) 6x,\\\\n url(./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png) 7x\\\\n );\\\\n}\\\\n\\\\n.class-class-class {\\\\n background: url(\\\\\\"./img'''img.png\\\\\\");\\\\n background: url(\\\\\\"./img'() img.png\\\\\\");\\\\n background: url(\\\\\\"./img'img.png\\\\\\");\\\\n background: url(\\\\\\"./img(img.png\\\\\\");\\\\n background: url(\\\\\\"./img)img.png\\\\\\");\\\\n background: url('./img img.png');\\\\n background: url(\\\\\\"./img img.png\\\\\\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n background: url('./img\\\\\\\\\\\\n(img.png');\\\\n background: url('./img\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n\\\\\\\\\\\\n(img.png');\\\\n}\\\\n\\\\n.other-test-case {\\\\n background: url(\\\\\\"./img%27%27%27img.png\\\\\\");\\\\n background: url(\\\\\\"./img%27%28%29%20img.png\\\\\\");\\\\n background: url(\\\\\\"./img%27img.png\\\\\\");\\\\n background: url(\\\\\\"./img%28img.png\\\\\\");\\\\n background: url(\\\\\\"./img%29img.png\\\\\\");\\\\n background: url(\\\\\\"./img%20img.png\\\\\\");\\\\n background: url(./img%27%27%27img.png);\\\\n background: url(./img%27%28%29%20img.png);\\\\n background: url(./img%27img.png);\\\\n background: url(./img%28img.png);\\\\n background: url(./img%29img.png);\\\\n background: url(./img%20img.png);\\\\n}\\\\n\\\\n.qqq {\\\\n background: url('img.png');\\\\n}\\\\n\\\\n.www {\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\'\\\\\\\\'img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\(\\\\\\\\)\\\\\\\\ img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\(img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\)img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\ img.png\\\\\\");\\\\n background: url(\\\\\\"./\\\\\\\\69\\\\\\\\6D\\\\\\\\67.png\\\\\\");\\\\n background: url(./\\\\\\\\69\\\\\\\\6D\\\\\\\\67.png);\\\\n background: url(\\\\\\"./img\\\\\\\\27img.png\\\\\\");\\\\n background: url(\\\\\\"./img\\\\\\\\'\\\\\\\\28%29 img.png\\\\\\");\\\\n background: url(./img\\\\\\\\'\\\\\\\\28%29\\\\\\\\ img.png);\\\\n}\\\\n\\", \\"\\"]); +exports.push([module.id, \\".class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_5___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_16___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8,\\\\\\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\");\\\\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_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_29___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n /* Not allowed on windows */\\\\n /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n\\\\n background-image: image-set(\\\\n \\\\n \\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\") 3x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\") 4x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\") 5x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 6x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\") 7x\\\\n );\\\\n}\\\\n\\\\n.class-class-class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n}\\\\n\\\\n.other-test-case {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.qqq {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.www {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n}\\\\n\\", \\"\\"]); +// Exports +module.exports = exports; " `; -exports[`url option false: warnings 1`] = `Array []`; - -exports[`url option true: errors 1`] = `Array []`; - -exports[`url option true: module (evaluated) 1`] = ` +exports[`"url" option should work with a value equal to "true": result 1`] = ` Array [ Array [ - 2, + "../../src/index.js?[ident]!./url/imported.css", ".bar { background: url(/webpack/public/path/img-from-imported.png); } @@ -867,7 +1453,7 @@ Array [ "", ], Array [ - 1, + "./url/url.css", ".class { background: url(/webpack/public/path/img.png); } @@ -1212,83 +1798,7 @@ a { ] `; -exports[`url option true: module 1`] = ` -"// Imports -var ___CSS_LOADER_API_IMPORT___ = require(\\"../../../src/runtime/api.js\\"); -var ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\\"-!../../../src/index.js??ref--4-0!./imported.css\\"); -var ___CSS_LOADER_GET_URL_IMPORT___ = require(\\"../../../src/runtime/getUrl.js\\"); -var ___CSS_LOADER_URL_IMPORT_0___ = require(\\"./img.png\\"); -var ___CSS_LOADER_URL_IMPORT_1___ = require(\\"package/img.png\\"); -var ___CSS_LOADER_URL_IMPORT_2___ = require(\\"./other-img.png\\"); -var ___CSS_LOADER_URL_IMPORT_3___ = require(\\"./img img.png\\"); -var ___CSS_LOADER_URL_IMPORT_4___ = require(\\"./font.woff\\"); -var ___CSS_LOADER_URL_IMPORT_5___ = require(\\"./font.woff2\\"); -var ___CSS_LOADER_URL_IMPORT_6___ = require(\\"./font.eot\\"); -var ___CSS_LOADER_URL_IMPORT_7___ = require(\\"package/font.ttf\\"); -var ___CSS_LOADER_URL_IMPORT_8___ = require(\\"./font with spaces.eot\\"); -var ___CSS_LOADER_URL_IMPORT_9___ = require(\\"./font.svg\\"); -var ___CSS_LOADER_URL_IMPORT_10___ = require(\\"./font.woff2?foo=bar\\"); -var ___CSS_LOADER_URL_IMPORT_11___ = require(\\"./img1x.png\\"); -var ___CSS_LOADER_URL_IMPORT_12___ = require(\\"./img2x.png\\"); -var ___CSS_LOADER_URL_IMPORT_13___ = require(\\"./img.png?foo\\"); -var ___CSS_LOADER_URL_IMPORT_14___ = require(\\"./img.png?foo=bar\\"); -var ___CSS_LOADER_URL_IMPORT_15___ = require(\\"./img.png?\\"); -var ___CSS_LOADER_URL_IMPORT_16___ = require(\\"./img-simple.png\\"); -var ___CSS_LOADER_URL_IMPORT_17___ = require(\\"../url/img-simple.png\\"); -var ___CSS_LOADER_URL_IMPORT_18___ = require(\\"aliasesImg/img.png\\"); -var ___CSS_LOADER_URL_IMPORT_19___ = require(\\"./nested/img.png\\"); -var ___CSS_LOADER_URL_IMPORT_20___ = require(\\"./img3x.png\\"); -var ___CSS_LOADER_URL_IMPORT_21___ = require(\\"./img1x.png?foo=bar\\"); -var ___CSS_LOADER_URL_IMPORT_22___ = require(\\"./img'img.png\\"); -var ___CSS_LOADER_URL_IMPORT_23___ = require(\\"./img'''img.png\\"); -var ___CSS_LOADER_URL_IMPORT_24___ = require(\\"./img(img.png\\"); -var ___CSS_LOADER_URL_IMPORT_25___ = require(\\"./img)img.png\\"); -var ___CSS_LOADER_URL_IMPORT_26___ = require(\\"./img'() img.png\\"); -exports = module.exports = ___CSS_LOADER_API_IMPORT___(false); -exports.i(___CSS_LOADER_AT_RULE_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___); -var ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \\"#hash\\" }); -var ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___); -var ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___); -var ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___); -var ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___); -var ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___); -var ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___); -var ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___); -var ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___); -var ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \\"#svgFontName\\" }); -var ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___); -var ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___, { hash: \\"?#iefix\\" }); -var ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___, { hash: \\"?#iefix\\" }); -var ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___); -var ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___); -var ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___); -var ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___); -var ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \\"#hash\\" }); -var ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___); -var ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___); -var ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___); -var ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___); -var ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___); -var ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___, { needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"#hash\\", needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___, { hash: \\"?#iefix\\", needQuotes: true }); -var ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___); -var ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___); -var ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___); -var ___CSS_LOADER_URL_REPLACEMENT_34___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___); -var ___CSS_LOADER_URL_REPLACEMENT_35___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___); -var ___CSS_LOADER_URL_REPLACEMENT_36___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_26___); -// Module -exports.push([module.id, \\".class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\"\\\\n );\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \\") xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\" ) xyz;\\\\n}\\\\n\\\\n.class {\\\\n background: green url( \\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_5___ + \\") format('woff'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \\") format('eot'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \\") format('truetype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \\") format(\\\\\\"embedded-opentype\\\\\\"),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \\") format('svg'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \\") format('woff2'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \\") format('embedded-opentype'),\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \\") format('embedded-opentype');\\\\n}\\\\n\\\\n@media (min-width: 500px) {\\\\n body {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_0___ + \\") xyz;\\\\n}\\\\n\\\\n.a {\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x)\\\\n}\\\\n\\\\n.a {\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_16___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \\");\\\\n}\\\\n\\\\n.class {\\\\n background-image: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\") url(\\\\\\"data:image/svg+xml;charset=utf-8,\\\\\\") url(\\" + ___CSS_LOADER_URL_REPLACEMENT_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_REPLACEMENT_20___ + \\");\\\\n}\\\\n\\\\n.not-resolved {\\\\n background: url('/img-simple.png');\\\\n}\\\\n\\\\n.above-below {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \\");\\\\n}\\\\n\\\\n.tilde {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \\");\\\\n}\\\\n\\\\n.aliases {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\");\\\\n}\\\\n\\\\na {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \\");\\\\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_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \\" 2x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x),\\\\n image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n background-image: image-set(\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \\" 1x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x,\\\\n \\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \\" 600dpi\\\\n );\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_29___ + \\" 1x);\\\\n background-image: image-set(\\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \\" 1x);\\\\n\\\\n /* With \`url\` function */\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n background-image: -webkit-image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n background-image: -webkit-image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x);\\\\n background-image: image-set(\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \\") 600dpi\\\\n );\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 1x, url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 2x);\\\\n\\\\n background-image: image-set(url(\\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \\") 1x, \\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \\" 2x);\\\\n}\\\\n\\\\n.class {\\\\n /* Not allowed on windows */\\\\n /* background: url(./img\\\\\\\\\\\\\\"img.png); */\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n\\\\n background-image: image-set(\\\\n \\\\n \\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\") 2x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\") 3x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\") 4x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\") 5x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\") 6x,\\\\n url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\") 7x\\\\n );\\\\n}\\\\n\\\\n.class-class-class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.class.class.class {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n}\\\\n\\\\n.other-test-case {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n}\\\\n\\\\n.qqq {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n}\\\\n\\\\n.www {\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n background: url(\\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \\");\\\\n}\\\\n\\", \\"\\"]); -" -`; - -exports[`url option true: warnings 1`] = ` +exports[`"url" option should work with a value equal to "true": warnings 1`] = ` Array [ "ModuleWarning: Module Warning (from \`replaced original path\`): Warning diff --git a/test/__snapshots__/validate-options.test.js.snap b/test/__snapshots__/validate-options.test.js.snap index 90b16f6f..3b259f02 100644 --- a/test/__snapshots__/validate-options.test.js.snap +++ b/test/__snapshots__/validate-options.test.js.snap @@ -1,16 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`validate options 1`] = ` +exports[`validate options should throw an error on the "esModule" option with "true" value 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." + - options.esModule should be a boolean. + -> Use the ES modules syntax (https://github.com/webpack-contrib/css-loader#esmodule)." `; -exports[`validate options 2`] = ` +exports[`validate options should throw an error on the "import" option with "true" value 1`] = ` "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 @@ -20,7 +16,89 @@ exports[`validate options 2`] = ` * options.import should be an instance of function." `; -exports[`validate options 3`] = ` +exports[`validate options should throw an error on the "importLoaders" option with "1" value 1`] = ` +"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 should throw an error on the "localsConvention" option with "unknown" value 1`] = ` +"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 should throw an error on the "modules" option with "{"context":true}" value 1`] = ` +"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 should throw an error on the "modules" option with "{"getLocalIdent":[]}" value 1`] = ` +"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\\" | \\"pure\\" | 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 one of these: + boolean | function + Details: + * options.modules.getLocalIdent should be a boolean. + * options.modules.getLocalIdent should be an instance of function." +`; + +exports[`validate options should throw an error on the "modules" option with "{"hashPrefix":true}" value 1`] = ` +"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 should throw an error on the "modules" option with "{"localIdentName":true}" value 1`] = ` +"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 should throw an error on the "modules" option with "{"localIdentRegExp":true}" value 1`] = ` +"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\\" | \\"pure\\" | 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 one of these: + string | RegExp + Details: + * options.modules.localIdentRegExp should be a string. + * options.modules.localIdentRegExp should be an instance of RegExp." +`; + +exports[`validate options should throw an error on the "modules" option with "{"mode":"globals"}" value 1`] = ` +"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\\" | \\"pure\\"" +`; + +exports[`validate options should throw an error on the "modules" option with "{"mode":"locals"}" value 1`] = ` +"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\\" | \\"pure\\"" +`; + +exports[`validate options should throw an error on the "modules" option with "{"mode":"pures"}" value 1`] = ` +"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\\" | \\"pure\\"" +`; + +exports[`validate options should throw an error on the "modules" option with "{"mode":true}" value 1`] = ` +"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\\" | \\"pure\\"" +`; + +exports[`validate options should throw an error on the "modules" option with "globals" value 1`] = ` "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\\" | \\"pure\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? } @@ -33,7 +111,7 @@ exports[`validate options 3`] = ` object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }" `; -exports[`validate options 4`] = ` +exports[`validate options should throw an error on the "modules" option with "locals" value 1`] = ` "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\\" | \\"pure\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? } @@ -46,7 +124,7 @@ exports[`validate options 4`] = ` object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }" `; -exports[`validate options 5`] = ` +exports[`validate options should throw an error on the "modules" option with "pures" value 1`] = ` "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\\" | \\"pure\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? } @@ -59,7 +137,7 @@ exports[`validate options 5`] = ` object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }" `; -exports[`validate options 6`] = ` +exports[`validate options should throw an error on the "modules" option with "true" value 1`] = ` "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\\" | \\"pure\\" | object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? } @@ -72,102 +150,72 @@ exports[`validate options 6`] = ` object { mode?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }" `; -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\\" | \\"pure\\"" -`; - -exports[`validate options 8`] = ` +exports[`validate options should throw an error on the "onlyLocals" option with "true" value 1`] = ` "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\\" | \\"pure\\"" + - options.onlyLocals should be a boolean. + -> Export only locals (https://github.com/webpack-contrib/css-loader#onlylocals)." `; -exports[`validate options 9`] = ` +exports[`validate options should throw an error on the "sourceMap" option with "true" value 1`] = ` "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\\" | \\"pure\\"" + - options.sourceMap should be a boolean. + -> Enables/Disables generation of source maps (https://github.com/webpack-contrib/css-loader#sourcemap)." `; -exports[`validate options 10`] = ` +exports[`validate options should throw an error on the "unknown" option with "/test/" value 1`] = ` "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\\" | \\"pure\\"" + - options has an unknown property 'unknown'. These properties are valid: + object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }" `; -exports[`validate options 11`] = ` +exports[`validate options should throw an error on the "unknown" option with "[]" value 1`] = ` "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." + - options has an unknown property 'unknown'. These properties are valid: + object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }" `; -exports[`validate options 12`] = ` +exports[`validate options should throw an error on the "unknown" option with "{"foo":"bar"}" value 1`] = ` "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." + - options has an unknown property 'unknown'. These properties are valid: + object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }" `; -exports[`validate options 13`] = ` +exports[`validate options should throw an error on the "unknown" option with "{}" value 1`] = ` "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." + - options has an unknown property 'unknown'. These properties are valid: + object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }" `; -exports[`validate options 14`] = ` +exports[`validate options should throw an error on the "unknown" option with "1" value 1`] = ` "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\\" | \\"pure\\" | 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 one of these: - boolean | function - Details: - * options.modules.getLocalIdent should be a boolean. - * options.modules.getLocalIdent should be an instance of function." + - options has an unknown property 'unknown'. These properties are valid: + object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }" `; -exports[`validate options 15`] = ` +exports[`validate options should throw an error on the "unknown" option with "false" value 1`] = ` "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\\" | \\"pure\\" | 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 one of these: - string | RegExp - Details: - * options.modules.localIdentRegExp should be a string. - * options.modules.localIdentRegExp should be an instance of RegExp." + - options has an unknown property 'unknown'. These properties are valid: + object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }" `; -exports[`validate options 16`] = ` +exports[`validate options should throw an error on the "unknown" option with "test" value 1`] = ` "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)." + - options has an unknown property 'unknown'. These properties are valid: + object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }" `; -exports[`validate options 17`] = ` +exports[`validate options should throw an error on the "unknown" option with "true" value 1`] = ` "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)." + - options has an unknown property 'unknown'. These properties are valid: + object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }" `; -exports[`validate options 18`] = ` +exports[`validate options should throw an error on the "url" option with "true" value 1`] = ` "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). + - 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.importLoaders should be a boolean. - * options.importLoaders should be a number." -`; - -exports[`validate options 19`] = ` -"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 20`] = ` -"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? }" + * options.url should be a boolean. + * options.url should be an instance of function." `; diff --git a/test/cjs.test.js b/test/cjs.test.js index 8cad5877..8aba6ba8 100644 --- a/test/cjs.test.js +++ b/test/cjs.test.js @@ -1,8 +1,8 @@ -import loader from '../src'; -import CJSLoader from '../src/cjs'; +import src from '../src'; +import cjs from '../src/cjs'; -describe('CJS', () => { - it('should exported loader', () => { - expect(CJSLoader).toEqual(loader); +describe('cjs', () => { + it('should exported', () => { + expect(cjs).toEqual(src); }); }); diff --git a/test/esModule-option.test.js b/test/esModule-option.test.js new file mode 100644 index 00000000..3bfdce61 --- /dev/null +++ b/test/esModule-option.test.js @@ -0,0 +1,103 @@ +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; + +describe('"esModule" option', () => { + it('should work when not specified', async () => { + const compiler = getCompiler('./es-module/source.js'); + const stats = await compile(compiler); + + expect(getModuleSource('./es-module/source.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should work with a value equal to "true"', async () => { + const compiler = getCompiler('./es-module/source.js', { esModule: true }); + const stats = await compile(compiler); + + expect(getModuleSource('./es-module/source.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should work with a value equal to "true" and the "mode" value equal to "local"', async () => { + const compiler = getCompiler('./es-module/source.js', { + esModule: true, + modules: 'local', + }); + const stats = await compile(compiler); + + expect(getModuleSource('./es-module/source.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should work with a value equal to "true" and the "mode" value equal to "global"', async () => { + const compiler = getCompiler('./es-module/source.js', { + esModule: true, + modules: 'global', + }); + const stats = await compile(compiler); + + expect(getModuleSource('./es-module/source.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should work with a value equal to "true" and the "mode" value equal to "pure"', async () => { + const compiler = getCompiler('./es-module/source.js', { + esModule: true, + modules: 'pure', + }); + const stats = await compile(compiler); + + expect(getModuleSource('./es-module/source.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should work with a value equal to "false"', async () => { + const compiler = getCompiler('./es-module/source.js', { esModule: false }); + const stats = await compile(compiler); + + expect(getModuleSource('./es-module/source.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); +}); diff --git a/test/fixtures/basic.js b/test/fixtures/basic.js index 1aef6aee..72afb950 100644 --- a/test/fixtures/basic.js +++ b/test/fixtures/basic.js @@ -1,4 +1,5 @@ -/* eslint-disable */ -const styles = require('./basic.css'); +import css from './basic.css'; -console.log(styles); +__export__ = css; + +export default css; diff --git a/test/fixtures/empty.js b/test/fixtures/empty.js new file mode 100644 index 00000000..585626e0 --- /dev/null +++ b/test/fixtures/empty.js @@ -0,0 +1,5 @@ +import css from './empty.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/es-module/img.png b/test/fixtures/es-module/img.png new file mode 100644 index 00000000..b74b839e Binary files /dev/null and b/test/fixtures/es-module/img.png differ diff --git a/test/fixtures/es-module/imported.css b/test/fixtures/es-module/imported.css new file mode 100644 index 00000000..a15c877a --- /dev/null +++ b/test/fixtures/es-module/imported.css @@ -0,0 +1,3 @@ +.foo { + color: red; +} diff --git a/test/fixtures/es-module/source.css b/test/fixtures/es-module/source.css new file mode 100644 index 00000000..e0750e64 --- /dev/null +++ b/test/fixtures/es-module/source.css @@ -0,0 +1,10 @@ +@charset "UTF-8"; + +@import './imported.css'; + +/* Comment */ + +.class { + color: red; + background: url("./img.png"); +} diff --git a/test/fixtures/es-module/source.js b/test/fixtures/es-module/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/es-module/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/duplicate-export-in-multiple-export/source.js b/test/fixtures/icss/tests-cases/duplicate-export-in-multiple-export/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/duplicate-export-in-multiple-export/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/duplicate-export/source.js b/test/fixtures/icss/tests-cases/duplicate-export/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/duplicate-export/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/empty-export/source.js b/test/fixtures/icss/tests-cases/empty-export/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/empty-export/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/empty-import/source.js b/test/fixtures/icss/tests-cases/empty-import/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/empty-import/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/export-reserved-keywords/source.js b/test/fixtures/icss/tests-cases/export-reserved-keywords/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/export-reserved-keywords/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/export/source.js b/test/fixtures/icss/tests-cases/export/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/export/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/import-reserved-keywords/source.js b/test/fixtures/icss/tests-cases/import-reserved-keywords/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/import-reserved-keywords/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/import/source.js b/test/fixtures/icss/tests-cases/import/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/import/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/multiple-export/source.js b/test/fixtures/icss/tests-cases/multiple-export/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/multiple-export/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/icss/tests-cases/multiple-keys-values-in-export/source.js b/test/fixtures/icss/tests-cases/multiple-keys-values-in-export/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/icss/tests-cases/multiple-keys-values-in-export/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/import/import.css b/test/fixtures/import/import.css index b6e7afa5..a9630d92 100644 --- a/test/fixtures/import/import.css +++ b/test/fixtures/import/import.css @@ -22,19 +22,19 @@ @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.css) screen and (orientation:landscape); +@import url(test.css) SCREEN AND (ORIENTATION: LANDSCAPE); +@import url(test.css)screen and (orientation:landscape); +@import url(test.css) screen and (orientation:landscape); +@import url(test-media.css) screen and (orientation:landscape); @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(http://example.com/other-style.css) screen and (orientation:landscape); +@import url(http://example.com/other-style.css) screen and (orientation:landscape); @import url("//example.com/style.css"); @import url(~package/test.css); @import ; @@ -43,7 +43,7 @@ @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('other-query.css?foo=1&bar=1#hash') screen and (orientation:landscape); @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'); diff --git a/test/fixtures/import/import.js b/test/fixtures/import/import.js new file mode 100644 index 00000000..1d033ab2 --- /dev/null +++ b/test/fixtures/import/import.js @@ -0,0 +1,5 @@ +import css from './import.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/import/order-1.css b/test/fixtures/import/order-1.css index 6380c4c5..3e23caf8 100644 --- a/test/fixtures/import/order-1.css +++ b/test/fixtures/import/order-1.css @@ -1,3 +1,3 @@ -div { - background: red; +.order-1 { + color: red; } diff --git a/test/fixtures/import/order-2.css b/test/fixtures/import/order-2.css index d352d54f..a7c5b2c5 100644 --- a/test/fixtures/import/order-2.css +++ b/test/fixtures/import/order-2.css @@ -1,3 +1,3 @@ -div { - background: blue; +.order-2 { + color: red; } diff --git a/test/fixtures/import/order-3-1.css b/test/fixtures/import/order-3-1.css new file mode 100644 index 00000000..f34c6020 --- /dev/null +++ b/test/fixtures/import/order-3-1.css @@ -0,0 +1,3 @@ +.order-3-1 { + color: white; +} diff --git a/test/fixtures/import/order-3.css b/test/fixtures/import/order-3.css new file mode 100644 index 00000000..2894e271 --- /dev/null +++ b/test/fixtures/import/order-3.css @@ -0,0 +1,5 @@ +@import url('./order-3-1.css') screen and (orientation:landscape); + +.order-3 { + color: red; +} diff --git a/test/fixtures/import/order-4-1.css b/test/fixtures/import/order-4-1.css new file mode 100644 index 00000000..d80177cb --- /dev/null +++ b/test/fixtures/import/order-4-1.css @@ -0,0 +1,3 @@ +.order-4-1 { + color: red; +} diff --git a/test/fixtures/import/order-4-2-1.css b/test/fixtures/import/order-4-2-1.css new file mode 100644 index 00000000..d063acd2 --- /dev/null +++ b/test/fixtures/import/order-4-2-1.css @@ -0,0 +1,3 @@ +.order-4-2-1 { + color: red; +} diff --git a/test/fixtures/import/order-4-2-2.css b/test/fixtures/import/order-4-2-2.css new file mode 100644 index 00000000..851d03b2 --- /dev/null +++ b/test/fixtures/import/order-4-2-2.css @@ -0,0 +1,3 @@ +.order-4-2-2 { + color: red; +} diff --git a/test/fixtures/import/order-4-2.css b/test/fixtures/import/order-4-2.css new file mode 100644 index 00000000..319f2869 --- /dev/null +++ b/test/fixtures/import/order-4-2.css @@ -0,0 +1,6 @@ +@import url('./order-4-2-1.css'); +@import url('./order-4-2-2.css') (orientation:landscape); + +.order-4-2 { + color: red; +} diff --git a/test/fixtures/import/order-4.css b/test/fixtures/import/order-4.css new file mode 100644 index 00000000..66940a71 --- /dev/null +++ b/test/fixtures/import/order-4.css @@ -0,0 +1,6 @@ +@import url('./order-4-1.css') (min-width: 1000px); +@import url('./order-4-2.css') (min-width: 2000px); + +.order-4 { + color: red; +} diff --git a/test/fixtures/import/order.css b/test/fixtures/import/order.css index 6e6bd41b..0f138102 100644 --- a/test/fixtures/import/order.css +++ b/test/fixtures/import/order.css @@ -6,6 +6,9 @@ @import url(http://example.com/style.css); @import url('./order-2.css') screen and (min-width: 2000px); @import url(http://example.com/style.css); +@import url('./order-3.css'); +@import url(http://example.com/style.css); +@import url('./order-4.css') screen; div { width: 100%; diff --git a/test/fixtures/import/order.js b/test/fixtures/import/order.js new file mode 100644 index 00000000..f9151028 --- /dev/null +++ b/test/fixtures/import/order.js @@ -0,0 +1,5 @@ +import css from './order.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/invalid.js b/test/fixtures/invalid.js new file mode 100644 index 00000000..e4f257c2 --- /dev/null +++ b/test/fixtures/invalid.js @@ -0,0 +1,5 @@ +import css from './invalid.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/alias.css b/test/fixtures/modules/composes/alias.css similarity index 100% rename from test/fixtures/modules/alias.css rename to test/fixtures/modules/composes/alias.css diff --git a/test/fixtures/modules/composes-duplicate.css b/test/fixtures/modules/composes/composes-duplicate.css similarity index 67% rename from test/fixtures/modules/composes-duplicate.css rename to test/fixtures/modules/composes/composes-duplicate.css index 284d98fc..8f96762c 100644 --- a/test/fixtures/modules/composes-duplicate.css +++ b/test/fixtures/modules/composes/composes-duplicate.css @@ -1,6 +1,6 @@ .simple-foo { color: red; - composes: imported-simple from 'imported-simple.css'; + composes: imported-simple from './imported-simple.css'; } .simple-bar { diff --git a/test/fixtures/modules/composes/composes-duplicate.js b/test/fixtures/modules/composes/composes-duplicate.js new file mode 100644 index 00000000..e687e14c --- /dev/null +++ b/test/fixtures/modules/composes/composes-duplicate.js @@ -0,0 +1,5 @@ +import css from './composes-duplicate.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/composes.css b/test/fixtures/modules/composes/composes.css similarity index 89% rename from test/fixtures/modules/composes.css rename to test/fixtures/modules/composes/composes.css index 57b3d184..e5680fef 100644 --- a/test/fixtures/modules/composes.css +++ b/test/fixtures/modules/composes/composes.css @@ -1,4 +1,4 @@ -@import url(test-other.css) (min-width: 100px); +@import url(./test-other.css) (min-width: 100px); @value v-def from './values.css'; @value v-other from './values.css'; @@ -39,7 +39,7 @@ .simple { color: red; - composes: imported-simple from 'imported-simple.css'; + composes: imported-simple from './imported-simple.css'; } .relative { @@ -49,12 +49,12 @@ .top-relative { color: gray; - composes: imported-relative from '../modules/top-relative.css'; + composes: imported-relative from './top-relative.css'; } .module { color: gray; - composes: imported-module from '~package/style.css'; + composes: imported-module from '../issue-861/node_modules/package/style.css'; } .alias { @@ -145,5 +145,5 @@ a { } .url { - background: url(../url/img.png); + background: url(../../url/img.png); } diff --git a/test/fixtures/modules/composes/composes.js b/test/fixtures/modules/composes/composes.js new file mode 100644 index 00000000..ba922e3f --- /dev/null +++ b/test/fixtures/modules/composes/composes.js @@ -0,0 +1,5 @@ +import css from './composes.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/imported-simple.css b/test/fixtures/modules/composes/imported-simple.css similarity index 100% rename from test/fixtures/modules/imported-simple.css rename to test/fixtures/modules/composes/imported-simple.css diff --git a/test/fixtures/modules/relative.css b/test/fixtures/modules/composes/relative.css similarity index 100% rename from test/fixtures/modules/relative.css rename to test/fixtures/modules/composes/relative.css diff --git a/test/fixtures/modules/something.css b/test/fixtures/modules/composes/something.css similarity index 100% rename from test/fixtures/modules/something.css rename to test/fixtures/modules/composes/something.css diff --git a/test/fixtures/modules/test-other.css b/test/fixtures/modules/composes/test-other.css similarity index 100% rename from test/fixtures/modules/test-other.css rename to test/fixtures/modules/composes/test-other.css diff --git a/test/fixtures/modules/top-relative.css b/test/fixtures/modules/composes/top-relative.css similarity index 100% rename from test/fixtures/modules/top-relative.css rename to test/fixtures/modules/composes/top-relative.css diff --git a/test/fixtures/modules/values.css b/test/fixtures/modules/composes/values.css similarity index 100% rename from test/fixtures/modules/values.css rename to test/fixtures/modules/composes/values.css diff --git a/test/fixtures/modules/getLocalIdent.css b/test/fixtures/modules/getLocalIdent.css deleted file mode 100644 index ca4a0ac5..00000000 --- a/test/fixtures/modules/getLocalIdent.css +++ /dev/null @@ -1,7 +0,0 @@ -.abc :local(.def) { - color: red; -} - -:local .ghi .jkl { - color: blue; -} diff --git a/test/fixtures/modules/issue-286/source.js b/test/fixtures/modules/issue-286/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/issue-286/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/issue-636/source.js b/test/fixtures/modules/issue-636/source.js new file mode 100644 index 00000000..1c39afc0 --- /dev/null +++ b/test/fixtures/modules/issue-636/source.js @@ -0,0 +1,5 @@ +import css from './source.scss'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/node_modules/@localpackage/color.css b/test/fixtures/modules/issue-861/node_modules/@localpackage/color.css similarity index 100% rename from test/fixtures/modules/node_modules/@localpackage/color.css rename to test/fixtures/modules/issue-861/node_modules/@localpackage/color.css diff --git a/test/fixtures/modules/issue-861/node_modules/@localpackage/style.css b/test/fixtures/modules/issue-861/node_modules/@localpackage/style.css new file mode 100644 index 00000000..942712b3 --- /dev/null +++ b/test/fixtures/modules/issue-861/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/issue-861/node_modules/@otherlocalpackage/style.css similarity index 100% rename from test/fixtures/modules/node_modules/@otherlocalpackage/style.css rename to test/fixtures/modules/issue-861/node_modules/@otherlocalpackage/style.css diff --git a/test/fixtures/modules/node_modules/package/style.css b/test/fixtures/modules/issue-861/node_modules/package/style.css similarity index 100% rename from test/fixtures/modules/node_modules/package/style.css rename to test/fixtures/modules/issue-861/node_modules/package/style.css diff --git a/test/fixtures/modules/issue-861/resolving-from-node_modules.css b/test/fixtures/modules/issue-861/resolving-from-node_modules.css new file mode 100644 index 00000000..4df75268 --- /dev/null +++ b/test/fixtures/modules/issue-861/resolving-from-node_modules.css @@ -0,0 +1,8 @@ +@value color-grey from "./node_modules/@localpackage/color.css"; + +.copyright { + color: color-grey; + composes: type-heading from "./node_modules/@localpackage/style.css"; + margin: 0; + padding: 0; +} diff --git a/test/fixtures/modules/issue-861/resolving-from-node_modules.js b/test/fixtures/modules/issue-861/resolving-from-node_modules.js new file mode 100644 index 00000000..524a7984 --- /dev/null +++ b/test/fixtures/modules/issue-861/resolving-from-node_modules.js @@ -0,0 +1,5 @@ +import css from './resolving-from-node_modules.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/issue-966/button.js b/test/fixtures/modules/issue-966/button.js new file mode 100644 index 00000000..861cb618 --- /dev/null +++ b/test/fixtures/modules/issue-966/button.js @@ -0,0 +1,5 @@ +import css from './button.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/path-placeholder.css b/test/fixtures/modules/issue-967/path-placeholder.css similarity index 100% rename from test/fixtures/modules/path-placeholder.css rename to test/fixtures/modules/issue-967/path-placeholder.css diff --git a/test/fixtures/modules/issue-967/path-placeholder.js b/test/fixtures/modules/issue-967/path-placeholder.js new file mode 100644 index 00000000..333652c6 --- /dev/null +++ b/test/fixtures/modules/issue-967/path-placeholder.js @@ -0,0 +1,5 @@ +import css from './path-placeholder.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/file.with.many.dots.in.name.css b/test/fixtures/modules/issue-980/file.with.many.dots.in.name.css similarity index 100% rename from test/fixtures/modules/file.with.many.dots.in.name.css rename to test/fixtures/modules/issue-980/file.with.many.dots.in.name.css diff --git a/test/fixtures/modules/issue-980/file.with.many.dots.in.name.js b/test/fixtures/modules/issue-980/file.with.many.dots.in.name.js new file mode 100644 index 00000000..e3da13fc --- /dev/null +++ b/test/fixtures/modules/issue-980/file.with.many.dots.in.name.js @@ -0,0 +1,5 @@ +import css from './file.with.many.dots.in.name.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/issue-995.css b/test/fixtures/modules/issue-995/issue-995.css similarity index 100% rename from test/fixtures/modules/issue-995.css rename to test/fixtures/modules/issue-995/issue-995.css diff --git a/test/fixtures/modules/issue-995/issue-995.js b/test/fixtures/modules/issue-995/issue-995.js new file mode 100644 index 00000000..018d3f5f --- /dev/null +++ b/test/fixtures/modules/issue-995/issue-995.js @@ -0,0 +1,5 @@ +import css from './issue-995.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/localIdentName.css b/test/fixtures/modules/localIdentName/localIdentName.css similarity index 100% rename from test/fixtures/modules/localIdentName.css rename to test/fixtures/modules/localIdentName/localIdentName.css diff --git a/test/fixtures/modules/localIdentName/localIdentName.js b/test/fixtures/modules/localIdentName/localIdentName.js new file mode 100644 index 00000000..69aa4989 --- /dev/null +++ b/test/fixtures/modules/localIdentName/localIdentName.js @@ -0,0 +1,5 @@ +import css from './localIdentName.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/localsConvention.css b/test/fixtures/modules/localsConvention/localsConvention.css similarity index 100% rename from test/fixtures/modules/localsConvention.css rename to test/fixtures/modules/localsConvention/localsConvention.css diff --git a/test/fixtures/modules/localsConvention/localsConvention.js b/test/fixtures/modules/localsConvention/localsConvention.js new file mode 100644 index 00000000..f9d5e3df --- /dev/null +++ b/test/fixtures/modules/localsConvention/localsConvention.js @@ -0,0 +1,5 @@ +import css from './localsConvention.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/node_modules/@localpackage/style.css b/test/fixtures/modules/node_modules/@localpackage/style.css deleted file mode 100644 index 0e3b37bf..00000000 --- a/test/fixtures/modules/node_modules/@localpackage/style.css +++ /dev/null @@ -1,6 +0,0 @@ -.type-heading { - color: red; - composes: type-heading2 from "~@otherlocalpackage/style.css"; - margin: 0; - padding: 0; -} diff --git a/test/fixtures/modules/order/index.js b/test/fixtures/modules/order/index.js new file mode 100644 index 00000000..e1a19303 --- /dev/null +++ b/test/fixtures/modules/order/index.js @@ -0,0 +1,5 @@ +import css from './index.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/pure.css b/test/fixtures/modules/pure/pure.css similarity index 100% rename from test/fixtures/modules/pure.css rename to test/fixtures/modules/pure/pure.css diff --git a/test/fixtures/modules/pure/pure.js b/test/fixtures/modules/pure/pure.js new file mode 100644 index 00000000..7454bf58 --- /dev/null +++ b/test/fixtures/modules/pure/pure.js @@ -0,0 +1,5 @@ +import css from './pure.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/resolving-inside-node-modules.css b/test/fixtures/modules/resolving-inside-node-modules.css deleted file mode 100644 index a9986d8f..00000000 --- a/test/fixtures/modules/resolving-inside-node-modules.css +++ /dev/null @@ -1,8 +0,0 @@ -@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/tests-cases/animation/source.js b/test/fixtures/modules/tests-cases/animation/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/animation/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/class-names/source.js b/test/fixtures/modules/tests-cases/class-names/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/class-names/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/comment-in-local/source.js b/test/fixtures/modules/tests-cases/comment-in-local/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/comment-in-local/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/comments/source.js b/test/fixtures/modules/tests-cases/comments/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/comments/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/composes-1/source.js b/test/fixtures/modules/tests-cases/composes-1/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/composes-1/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/composes-2/source.js b/test/fixtures/modules/tests-cases/composes-2/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/composes-2/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/composes-multiple/source.js b/test/fixtures/modules/tests-cases/composes-multiple/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/composes-multiple/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/composes-with-importing/source.js b/test/fixtures/modules/tests-cases/composes-with-importing/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/composes-with-importing/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/composes/source.js b/test/fixtures/modules/tests-cases/composes/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/composes/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/declaration-value/source.js b/test/fixtures/modules/tests-cases/declaration-value/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/declaration-value/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/issue-589/source.js b/test/fixtures/modules/tests-cases/issue-589/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/issue-589/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/keyframes-and-animation/source.js b/test/fixtures/modules/tests-cases/keyframes-and-animation/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/keyframes-and-animation/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/leak-scope/source.js b/test/fixtures/modules/tests-cases/leak-scope/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/leak-scope/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/local-2/source.js b/test/fixtures/modules/tests-cases/local-2/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/local-2/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/local-and-composes/source.js b/test/fixtures/modules/tests-cases/local-and-composes/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/local-and-composes/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/local-with-string/source.js b/test/fixtures/modules/tests-cases/local-with-string/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/local-with-string/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/local/source.js b/test/fixtures/modules/tests-cases/local/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/local/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/media-2/source.js b/test/fixtures/modules/tests-cases/media-2/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/media-2/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/media/source.js b/test/fixtures/modules/tests-cases/media/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/media/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/mode-switching/source.js b/test/fixtures/modules/tests-cases/mode-switching/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/mode-switching/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/simple/source.js b/test/fixtures/modules/tests-cases/simple/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/simple/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/urls/source.js b/test/fixtures/modules/tests-cases/urls/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/urls/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-1/source.js b/test/fixtures/modules/tests-cases/values-1/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-1/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-10/source.js b/test/fixtures/modules/tests-cases/values-10/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-10/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-2/source.js b/test/fixtures/modules/tests-cases/values-2/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-2/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-3/source.js b/test/fixtures/modules/tests-cases/values-3/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-3/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-4/source.js b/test/fixtures/modules/tests-cases/values-4/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-4/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-5/source.js b/test/fixtures/modules/tests-cases/values-5/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-5/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-6/source.js b/test/fixtures/modules/tests-cases/values-6/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-6/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-7/source.js b/test/fixtures/modules/tests-cases/values-7/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-7/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-8/source.js b/test/fixtures/modules/tests-cases/values-8/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-8/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values-9/source.js b/test/fixtures/modules/tests-cases/values-9/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values-9/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/modules/tests-cases/values/source.js b/test/fixtures/modules/tests-cases/values/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/modules/tests-cases/values/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/nested-import/source.js b/test/fixtures/nested-import/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/nested-import/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/postcss-present-env/source.js b/test/fixtures/postcss-present-env/source.js new file mode 100644 index 00000000..1996779e --- /dev/null +++ b/test/fixtures/postcss-present-env/source.js @@ -0,0 +1,5 @@ +import css from './source.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/scss/source.js b/test/fixtures/scss/source.js new file mode 100644 index 00000000..1c39afc0 --- /dev/null +++ b/test/fixtures/scss/source.js @@ -0,0 +1,5 @@ +import css from './source.scss'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/simple.css b/test/fixtures/simple.css new file mode 100644 index 00000000..19fce739 --- /dev/null +++ b/test/fixtures/simple.css @@ -0,0 +1,3 @@ +.class { + color: red; +} diff --git a/test/fixtures/simple.js b/test/fixtures/simple.js new file mode 100644 index 00000000..bf740c72 --- /dev/null +++ b/test/fixtures/simple.js @@ -0,0 +1,5 @@ +import css from './simple.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/source-map/basic-postcss.js b/test/fixtures/source-map/basic-postcss.js new file mode 100644 index 00000000..ff2b03ea --- /dev/null +++ b/test/fixtures/source-map/basic-postcss.js @@ -0,0 +1,5 @@ +import css from './basic.postcss.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/source-map/basic-scss.js b/test/fixtures/source-map/basic-scss.js new file mode 100644 index 00000000..68ce09f0 --- /dev/null +++ b/test/fixtures/source-map/basic-scss.js @@ -0,0 +1,5 @@ +import css from './basic.scss'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/source-map/basic.css b/test/fixtures/source-map/basic.css index 19fce739..f125bf87 100644 --- a/test/fixtures/source-map/basic.css +++ b/test/fixtures/source-map/basic.css @@ -1,3 +1,5 @@ +@import "./nested/nested.css"; + .class { color: red; } diff --git a/test/fixtures/source-map/basic.js b/test/fixtures/source-map/basic.js new file mode 100644 index 00000000..72afb950 --- /dev/null +++ b/test/fixtures/source-map/basic.js @@ -0,0 +1,5 @@ +import css from './basic.css'; + +__export__ = css; + +export default css; diff --git a/test/fixtures/source-map/basic.postcss.css b/test/fixtures/source-map/basic.postcss.css index b95d332e..8da55590 100644 --- a/test/fixtures/source-map/basic.postcss.css +++ b/test/fixtures/source-map/basic.postcss.css @@ -1,3 +1,5 @@ +@import "./nested/nested.postcss.css"; + @custom-media --viewport-medium (width <= 50rem); @custom-selector :--heading h1, h2, h3, h4, h5, h6; diff --git a/test/fixtures/source-map/nested/nested.css b/test/fixtures/source-map/nested/nested.css new file mode 100644 index 00000000..c4313d19 --- /dev/null +++ b/test/fixtures/source-map/nested/nested.css @@ -0,0 +1,3 @@ +.nested { + color: blue; +} diff --git a/test/fixtures/source-map/nested/nested.postcss.css b/test/fixtures/source-map/nested/nested.postcss.css new file mode 100644 index 00000000..c4313d19 --- /dev/null +++ b/test/fixtures/source-map/nested/nested.postcss.css @@ -0,0 +1,3 @@ +.nested { + color: blue; +} diff --git a/test/fixtures/url/url.js b/test/fixtures/url/url.js new file mode 100644 index 00000000..188d1483 --- /dev/null +++ b/test/fixtures/url/url.js @@ -0,0 +1,5 @@ +import css from './url.css'; + +__export__ = css; + +export default css; diff --git a/test/helpers.js b/test/helpers.js deleted file mode 100644 index dc182401..00000000 --- a/test/helpers.js +++ /dev/null @@ -1,267 +0,0 @@ -import vm from 'vm'; -import path from 'path'; - -import del from 'del'; -import webpack from 'webpack'; -import MemoryFS from 'memory-fs'; -import stripAnsi from 'strip-ansi'; -import normalizePath from 'normalize-path'; - -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/order', - '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(/!!(.*)?!/, '') - ) - ); - - return importedPaths.includes(modulePath); - }); - - if (importedModule) { - // eslint-disable-next-line no-param-reassign - moduleId += 1; - return evaluated(importedModule.source, modules, moduleId); - } - - 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; -} - -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.disableFileLoader - ? {} - : { - test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/, - use: { - loader: 'file-loader', - options: config.fileLoaderOptions || { - name: '[name].[ext]', - esModule: false, - }, - }, - }, - config.additionalLoader ? config.additionalLoader : {}, - ], - }; -}; -const pluginsConfig = (config) => [].concat(config.plugins || []); -const outputConfig = (config) => { - return { - path: path.resolve( - __dirname, - `../outputs/${config.output ? config.output : ''}` - ), - filename: '[name].bundle.js', - }; -}; - -function compile(fixture, config = {}, options = {}) { - // webpack Config - // eslint-disable-next-line no-param-reassign - config = { - mode: 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: { - minimize: false, - runtimeChunk: false, - }, - resolve: { - alias: { - aliasesImg: path.resolve(__dirname, 'fixtures/url'), - aliasesImport: path.resolve(__dirname, 'fixtures/import'), - aliasesComposes: path.resolve(__dirname, 'fixtures/modules'), - }, - }, - }; - - // 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; - }); -} - -module.exports = { - webpack: compile, - evaluated, - normalizeErrors, - normalizeSourceMap, -}; diff --git a/test/helpers/compile.js b/test/helpers/compile.js new file mode 100644 index 00000000..066873ab --- /dev/null +++ b/test/helpers/compile.js @@ -0,0 +1,11 @@ +export default (compiler) => { + return new Promise((resolve, reject) => { + compiler.run((error, stats) => { + if (error) { + return reject(error); + } + + return resolve(stats); + }); + }); +}; diff --git a/test/helpers/execute.js b/test/helpers/execute.js new file mode 100644 index 00000000..866001ae --- /dev/null +++ b/test/helpers/execute.js @@ -0,0 +1,22 @@ +import Module from 'module'; +import path from 'path'; + +const parentModule = module; + +export default (code) => { + const resource = 'test.js'; + const module = new Module(resource, parentModule); + // eslint-disable-next-line no-underscore-dangle + module.paths = Module._nodeModulePaths( + path.resolve(__dirname, '../fixtures') + ); + module.filename = resource; + + // eslint-disable-next-line no-underscore-dangle + module._compile( + `let __export__;${code};module.exports = __export__;`, + resource + ); + + return module.exports; +}; diff --git a/test/helpers/getCompiler.js b/test/helpers/getCompiler.js new file mode 100644 index 00000000..e23cffba --- /dev/null +++ b/test/helpers/getCompiler.js @@ -0,0 +1,64 @@ +import path from 'path'; + +import webpack from 'webpack'; +import { createFsFromVolume, Volume } from 'memfs'; + +export default (fixture, loaderOptions = {}, config = {}) => { + const fullConfig = { + mode: 'development', + devtool: config.devtool || false, + context: path.resolve(__dirname, '../fixtures'), + entry: path.resolve(__dirname, '../fixtures', fixture), + output: { + path: path.resolve(__dirname, '../outputs'), + filename: '[name].bundle.js', + chunkFilename: '[name].chunk.js', + publicPath: '/webpack/public/path/', + }, + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../../src'), + options: loaderOptions || {}, + }, + ], + }, + { + test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/i, + loader: 'file-loader', + options: { name: '[name].[ext]' }, + }, + ], + }, + resolve: { + alias: { + aliasesImg: path.resolve(__dirname, '../fixtures/url'), + aliasesImport: path.resolve(__dirname, '../fixtures/import'), + aliasesComposes: path.resolve( + __dirname, + '../fixtures/modules/composes' + ), + }, + }, + optimization: { + minimize: false, + }, + plugins: [], + ...config, + }; + + const compiler = webpack(fullConfig); + + if (!config.outputFileSystem) { + const outputFileSystem = createFsFromVolume(new Volume()); + // Todo remove when we drop webpack@4 support + outputFileSystem.join = path.join.bind(path); + + compiler.outputFileSystem = outputFileSystem; + } + + return compiler; +}; diff --git a/test/helpers/getErrors.js b/test/helpers/getErrors.js new file mode 100644 index 00000000..716fbbb4 --- /dev/null +++ b/test/helpers/getErrors.js @@ -0,0 +1,5 @@ +import normalizeErrors from './normalizeErrors'; + +export default (stats) => { + return normalizeErrors(stats.compilation.errors); +}; diff --git a/test/helpers/getExecutedCode.js b/test/helpers/getExecutedCode.js new file mode 100644 index 00000000..d2d0b24d --- /dev/null +++ b/test/helpers/getExecutedCode.js @@ -0,0 +1,17 @@ +import { execute, readAsset } from './index'; + +export default (asset, compiler, stats) => { + let executed = execute(readAsset(asset, compiler, stats)); + + if (Array.isArray(executed)) { + executed = executed.map((module) => { + // Todo remove after drop webpack@4 + // eslint-disable-next-line no-param-reassign + module[0] = module[0].replace(/\?.*!/g, '?[ident]!'); + + return module; + }); + } + + return executed; +}; diff --git a/test/helpers/getModuleSource.js b/test/helpers/getModuleSource.js new file mode 100644 index 00000000..fd60583b --- /dev/null +++ b/test/helpers/getModuleSource.js @@ -0,0 +1,10 @@ +export default (id, stats) => { + const { modules } = stats.toJson({ source: true }); + const module = modules.find((m) => m.id === id); + let { source } = module; + + // Todo remove after drop webpack@4 support + source = source.replace(/\?\?.*!/g, '??[ident]!'); + + return source; +}; diff --git a/test/helpers/getWarnings.js b/test/helpers/getWarnings.js new file mode 100644 index 00000000..c8a09d6d --- /dev/null +++ b/test/helpers/getWarnings.js @@ -0,0 +1,5 @@ +import normalizeErrors from './normalizeErrors'; + +export default (stats) => { + return normalizeErrors(stats.compilation.warnings); +}; diff --git a/test/helpers/index.js b/test/helpers/index.js new file mode 100644 index 00000000..1dbb72f0 --- /dev/null +++ b/test/helpers/index.js @@ -0,0 +1,23 @@ +import compile from './compile'; +import execute from './execute'; +import getCompiler from './getCompiler'; +import getErrors from './getErrors'; +import getExecutedCode from './getExecutedCode'; +import getModuleSource from './getModuleSource'; +import getWarnings from './getWarnings'; +import normalizeErrors from './normalizeErrors'; +import readAsset from './readAsset'; +import readsAssets from './readAssets'; + +export { + compile, + execute, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, + normalizeErrors, + readAsset, + readsAssets, +}; diff --git a/test/helpers/normalizeErrors.js b/test/helpers/normalizeErrors.js new file mode 100644 index 00000000..c6e47405 --- /dev/null +++ b/test/helpers/normalizeErrors.js @@ -0,0 +1,29 @@ +import stripAnsi from 'strip-ansi'; + +function removeCWD(str) { + const isWin = process.platform === 'win32'; + let cwd = process.cwd(); + + if (isWin) { + // eslint-disable-next-line no-param-reassign + str = str.replace(/\\/g, '/'); + // eslint-disable-next-line no-param-reassign + cwd = cwd.replace(/\\/g, '/'); + } + + return stripAnsi(str) + .replace(/\(from .*?\)/, '(from `replaced original path`)') + .replace(new RegExp(cwd, 'g'), ''); +} + +export default (errors) => { + return errors.map((error) => + removeCWD( + error + .toString() + .split('\n') + .slice(0, 12) + .join('\n') + ) + ); +}; diff --git a/test/helpers/readAsset.js b/test/helpers/readAsset.js new file mode 100644 index 00000000..8f4699f0 --- /dev/null +++ b/test/helpers/readAsset.js @@ -0,0 +1,23 @@ +import path from 'path'; + +export default (asset, compiler, stats) => { + const usedFs = compiler.outputFileSystem; + const outputPath = stats.compilation.outputOptions.path; + + let data = ''; + let targetFile = asset; + + const queryStringIdx = targetFile.indexOf('?'); + + if (queryStringIdx >= 0) { + targetFile = targetFile.substr(0, queryStringIdx); + } + + try { + data = usedFs.readFileSync(path.join(outputPath, targetFile)).toString(); + } catch (error) { + data = error.toString(); + } + + return data; +}; diff --git a/test/helpers/readAssets.js b/test/helpers/readAssets.js new file mode 100644 index 00000000..a2fb7837 --- /dev/null +++ b/test/helpers/readAssets.js @@ -0,0 +1,11 @@ +import readAsset from './readAsset'; + +export default function readAssets(compiler, stats) { + const assets = {}; + + Object.keys(stats.compilation.assets).forEach((asset) => { + assets[asset] = readAsset(asset, compiler, stats); + }); + + return assets; +} diff --git a/test/icss.test.js b/test/icss.test.js index d83875aa..97a30650 100644 --- a/test/icss.test.js +++ b/test/icss.test.js @@ -1,24 +1,32 @@ import path from 'path'; import fs from 'fs'; -import { webpack, evaluated } from './helpers'; +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; 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); + it(`show work with the case "${name}"`, async () => { + const compiler = getCompiler(`./icss/tests-cases/${name}/source.js`); + const stats = await compile(compiler); - expect(evaluatedModule).toMatchSnapshot('module (evaluated)'); - expect(evaluatedModule.locals).toMatchSnapshot('locals'); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect( + getModuleSource(`./icss/tests-cases/${name}/source.css`, stats) + ).toMatchSnapshot('module'); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); }); diff --git a/test/import-option.test.js b/test/import-option.test.js index 58eac307..74e52e7f 100644 --- a/test/import-option.test.js +++ b/test/import-option.test.js @@ -1,82 +1,91 @@ -import { webpack, evaluated, normalizeErrors } from './helpers'; +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; -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); +describe('"import" option', () => { + it('should work when not specified', async () => { + const compiler = getCompiler('./import/import.js'); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect(getModuleSource('./import/import.css', stats)).toMatchSnapshot( + 'module' ); - expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot( - 'warnings' + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "true"', async () => { + const compiler = getCompiler('./import/import.js', { import: true }); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect(getModuleSource('./import/import.css', stats)).toMatchSnapshot( + 'module' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should work with a value equal to "false"', async () => { + const compiler = getCompiler('./import/import.js', { import: false }); + const stats = await compile(compiler); + + expect(getModuleSource('./import/import.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('Function', async () => { - const config = { - loader: { - options: { - import: (parsedImport, resourcePath) => { - expect(typeof resourcePath === 'string').toBe(true); + it('should work when "Function"', async () => { + const compiler = getCompiler('./import/import.js', { + import: (parsedImport, resourcePath) => { + expect(typeof resourcePath === 'string').toBe(true); - // Don't handle `test.css` - if (parsedImport.url.includes('test.css')) { - return false; - } + // Don't handle `test.css` + if (parsedImport.url.includes('test.css')) { + return false; + } - return true; - }, - }, + 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); + }); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect(getModuleSource('./import/import.css', stats)).toMatchSnapshot( + 'module' ); - expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot( - 'warnings' + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); it('should keep original order', async () => { - const testId = './import/order.css'; - const stats = await webpack(testId); - const { modules } = stats.toJson(); - const module = modules.find((m) => m.id === testId); + const compiler = getCompiler('./import/order.js'); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect(getModuleSource('./import/order.css', stats)).toMatchSnapshot( + 'module' ); - expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot( - 'warnings' + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); diff --git a/test/importLoaders-option.test.js b/test/importLoaders-option.test.js index 25952b9c..96a2929a 100644 --- a/test/importLoaders-option.test.js +++ b/test/importLoaders-option.test.js @@ -1,106 +1,173 @@ +import path from 'path'; + import postcssPresetEnv from 'postcss-preset-env'; -import { webpack, evaluated } from './helpers'; +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; -describe('importLoaders option', () => { - it('not specify (no loader before)', async () => { +describe('"importLoaders" option', () => { + it('should work when not specified', 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); + const compiler = getCompiler( + './nested-import/source.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + rules: [ + { loader: path.resolve(__dirname, '../src') }, + { + loader: 'postcss-loader', + options: { plugins: () => [postcssPresetEnv({ stage: 0 })] }, + }, + ], + }, + ], + }, + } + ); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect( + getModuleSource('./nested-import/source.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "0" (`postcss-loader` before)', async () => { + // It is hard to test `postcss` on reuse `ast`, please look on coverage before merging + const compiler = getCompiler( + './nested-import/source.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { importLoaders: 0 }, + }, + { + loader: 'postcss-loader', + options: { plugins: () => [postcssPresetEnv({ stage: 0 })] }, + }, + ], + }, + ], + }, + } + ); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect( + getModuleSource('./nested-import/source.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "1" (no loaders before)', async () => { + const compiler = getCompiler('./nested-import/source.js'); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect( + getModuleSource('./nested-import/source.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "1" ("postcss-loader" before)', async () => { + // It is hard to test `postcss` on reuse `ast`, please look on coverage before merging + const compiler = getCompiler( + './nested-import/source.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { importLoaders: 1 }, + }, + { + loader: 'postcss-loader', + options: { plugins: () => [postcssPresetEnv({ stage: 0 })] }, + }, + ], + }, + ], + }, + } + ); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect( + getModuleSource('./nested-import/source.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "2" ("postcss-loader" before)', async () => { + // It is hard to test `postcss` on reuse `ast`, please look on coverage before merging + const compiler = getCompiler( + './nested-import/source.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { importLoaders: 2 }, + }, + { + loader: 'postcss-loader', + options: { plugins: () => [postcssPresetEnv({ stage: 0 })] }, + }, + ], + }, + ], + }, + } + ); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect( + getModuleSource('./nested-import/source.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); diff --git a/test/loader.test.js b/test/loader.test.js index 88e19386..68741413 100644 --- a/test/loader.test.js +++ b/test/loader.test.js @@ -2,227 +2,310 @@ import path from 'path'; import postcssPresetEnv from 'postcss-preset-env'; -import { webpack, evaluated, normalizeErrors } from './helpers'; +import { version } from 'webpack'; + +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; 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)' + it('should work', async () => { + const compiler = getCompiler('./basic.js'); + const stats = await compile(compiler); + + expect(getModuleSource('./basic.css', stats)).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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; + it('should work with empty css', async () => { + const compiler = getCompiler('./empty.js'); + const stats = await compile(compiler); - expect(runtime.source).toMatchSnapshot('api'); - expect(escape.source).toMatchSnapshot('escape'); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect(getModuleSource('./empty.css', stats)).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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 work with empty options', async () => { + const compiler = getCompiler('./basic.js', {}); + const stats = await compile(compiler); - 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(getModuleSource('./basic.css', stats)).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with "asset" module type', async () => { + const isWebpack5 = version[0] === '5'; + const config = { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + }, + ], + }, + isWebpack5 + ? { + test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/i, + type: 'asset', + } + : { + test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/i, + loader: 'file-loader', + options: { name: '[name].[ext]' }, + }, + ], + }, + }; - 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'); - }); + if (isWebpack5) { + config.experiments = { asset: true }; + config.output = { + path: path.resolve(__dirname, 'outputs'), + filename: '[name].bundle.js', + chunkFilename: '[name].chunk.js', + publicPath: '/webpack/public/path/', + assetModuleFilename: '[name][ext]', + }; + } - 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); + const compiler = getCompiler('./basic.js', {}, config); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect(getModuleSource('./basic.css', stats)).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should throws error when no loader for assets', async () => { - const config = { - rules: [ - { - test: /\.css$/, - use: { - loader: path.resolve(__dirname, '../src/index'), - }, + it('should throws error when no loader(s) for assets', async () => { + const compiler = getCompiler( + './basic.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + loader: path.resolve(__dirname, '../src'), + }, + ], }, - ], - }; - const stats = await webpack('basic.css', config); + } + ); + const stats = await compile(compiler); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); it('should throw error on invalid css syntax', async () => { - const stats = await webpack('invalid.css'); + const compiler = getCompiler('./invalid.js', {}); + const stats = await compile(compiler); - expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot( - 'warnings' - ); - expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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)' + it('should reuse `ast` from "postcss-loader"', async () => { + const compiler = getCompiler( + './postcss-present-env/source.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + rules: [ + { + loader: path.resolve(__dirname, '../src'), + options: { importLoaders: 1 }, + }, + { + loader: 'postcss-loader', + options: { plugins: () => [postcssPresetEnv({ stage: 0 })] }, + }, + ], + }, + { + test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/, + loader: 'file-loader', + options: { name: '[name].[ext]' }, + }, + ], + }, + } ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + const stats = await compile(compiler); + + expect( + getModuleSource('./postcss-present-env/source.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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)' + it('should work with "sass-loader"', async () => { + const compiler = getCompiler( + './scss/source.js', + {}, + { + module: { + rules: [ + { + test: /\.s[ca]ss$/i, + rules: [ + { loader: path.resolve(__dirname, '../src') }, + { + loader: 'sass-loader', + options: { + // eslint-disable-next-line global-require + implementation: require('sass'), + }, + }, + ], + }, + ], + }, + } + ); + const stats = await compile(compiler); + + expect(getModuleSource('./scss/source.scss', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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)' + it('should work with ModuleConcatenationPlugin', async () => { + const compiler = getCompiler( + './basic.js', + {}, + { + mode: 'production', + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { esModule: true }, + }, + ], + }, + { + test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/, + loader: 'file-loader', + options: { name: '[name].[ext]', esModule: true }, + }, + ], + }, + } ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + const stats = await compile(compiler); + + if (stats.compilation.modules.size) { + expect(stats.compilation.modules.size).toBe(10); + } else { + expect(stats.compilation.modules.length).toBe(6); + } + + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); it('should work with ModuleConcatenationPlugin (file-loader)', async () => { - const stats = await webpack('basic.js', { - mode: 'production', - fileLoaderOptions: { - name: '[name].[ext]', - esModules: true, - }, - }); - - expect(stats.compilation.assets['main.bundle.js'].source()).toMatchSnapshot( - 'assets' + const compiler = getCompiler( + './basic.js', + {}, + { + mode: 'production', + module: { + rules: [ + { + test: /\.css$/i, + loader: path.resolve(__dirname, '../src'), + }, + { + test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/, + loader: 'file-loader', + options: { name: '[name].[ext]', esModule: true }, + }, + ], + }, + } ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + const stats = await compile(compiler); + + if (stats.compilation.modules.size) { + expect(stats.compilation.modules.size).toBe(11); + } else { + expect(stats.compilation.modules.length).toBe(6); + } + + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); it('should work with ModuleConcatenationPlugin (url-loader)', async () => { - const stats = await webpack('basic.js', { - mode: 'production', - disableFileLoader: true, - additionalLoader: { - test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/, - use: { - loader: 'url-loader', - options: { - name: '[name].[ext]', - esModules: true, - }, + const compiler = getCompiler( + './basic.js', + {}, + { + mode: 'production', + module: { + rules: [ + { + test: /\.css$/i, + loader: path.resolve(__dirname, '../src'), + }, + { + test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/, + loader: 'url-loader', + options: { name: '[name].[ext]', limit: true, esModule: true }, + }, + ], }, - }, - }); - - expect(stats.compilation.assets['main.bundle.js'].source()).toMatchSnapshot( - 'assets' + } ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + const stats = await compile(compiler); + + if (stats.compilation.modules.size) { + expect(stats.compilation.modules.size).toBe(10); + } else { + expect(stats.compilation.modules.length).toBe(6); + } + + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); diff --git a/test/localsConvention-option.test.js b/test/localsConvention-option.test.js index 5c8d7dda..ad62de97 100644 --- a/test/localsConvention-option.test.js +++ b/test/localsConvention-option.test.js @@ -1,122 +1,129 @@ -import { webpack, evaluated } from './helpers'; +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; -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); +describe('"localsConvention" option', () => { + it('should work when not specified', async () => { + const compiler = getCompiler( + './modules/localsConvention/localsConvention.js', + { + modules: true, + } + ); + const stats = await compile(compiler); - expect(evaluatedModule).toMatchSnapshot('module (evaluated)'); - expect(evaluatedModule.locals).toMatchSnapshot('locals'); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect( + getModuleSource('./modules/localsConvention/localsConvention.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "asIs"', async () => { + const compiler = getCompiler( + './modules/localsConvention/localsConvention.js', + { + modules: true, + localsConvention: 'asIs', + } + ); + const stats = await compile(compiler); - expect(evaluatedModule).toMatchSnapshot('module (evaluated)'); - expect(evaluatedModule.locals).toMatchSnapshot('locals'); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect( + getModuleSource('./modules/localsConvention/localsConvention.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "camelCase"', async () => { + const compiler = getCompiler( + './modules/localsConvention/localsConvention.js', + { + modules: true, + localsConvention: 'camelCase', + } + ); + const stats = await compile(compiler); - expect(evaluatedModule).toMatchSnapshot('module (evaluated)'); - expect(evaluatedModule.locals).toMatchSnapshot('locals'); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect( + getModuleSource('./modules/localsConvention/localsConvention.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "camelCaseOnly"', async () => { + const compiler = getCompiler( + './modules/localsConvention/localsConvention.js', + { + modules: true, + localsConvention: 'camelCaseOnly', + } + ); + const stats = await compile(compiler); - expect(evaluatedModule).toMatchSnapshot('module (evaluated)'); - expect(evaluatedModule.locals).toMatchSnapshot('locals'); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect( + getModuleSource('./modules/localsConvention/localsConvention.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "dashes"', async () => { + const compiler = getCompiler( + './modules/localsConvention/localsConvention.js', + { + modules: true, + localsConvention: 'dashes', + } + ); + const stats = await compile(compiler); - expect(evaluatedModule).toMatchSnapshot('module (evaluated)'); - expect(evaluatedModule.locals).toMatchSnapshot('locals'); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect( + getModuleSource('./modules/localsConvention/localsConvention.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "dashesOnly"', async () => { + const compiler = getCompiler( + './modules/localsConvention/localsConvention.js', + { + modules: true, + localsConvention: 'dashesOnly', + } + ); + const stats = await compile(compiler); - expect(evaluatedModule).toMatchSnapshot('module (evaluated)'); - expect(evaluatedModule.locals).toMatchSnapshot('locals'); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect( + getModuleSource('./modules/localsConvention/localsConvention.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); diff --git a/test/modules-option.test.js b/test/modules-option.test.js index 61496b33..d16e5927 100644 --- a/test/modules-option.test.js +++ b/test/modules-option.test.js @@ -1,12 +1,21 @@ import path from 'path'; import fs from 'fs'; -import { webpack, evaluated } from './helpers'; +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; const testCasesPath = path.join(__dirname, 'fixtures/modules/tests-cases'); const testCases = fs.readdirSync(testCasesPath); -describe('modules', () => { +jest.setTimeout(30000); + +describe('"modules" option', () => { [ true, false, @@ -16,607 +25,528 @@ describe('modules', () => { { mode: 'global' }, ].forEach((modulesValue) => { testCases.forEach((name) => { - it(`case \`${name}\` (\`modules\` value is \`${ + it(`should work with 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'); + const pathToTest = `./modules/tests-cases/${name}/source.js`; + const moduleId = `./modules/tests-cases/${name}/source.css`; + const compiler = getCompiler(pathToTest, { + modules: modulesValue.mode + ? { mode: modulesValue.mode, localIdentName: '_[local]' } + : modulesValue, + }); + const stats = await compile(compiler); + + expect(getModuleSource(moduleId, stats)).toMatchSnapshot('module'); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); }); - it('should support "pure" value', async () => { - const config = { - loader: { - options: { - modules: 'pure', - }, - }, - }; - const testId = './modules/pure.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)' + it('should work and support "pure" mode', async () => { + const compiler = getCompiler('./modules/pure/pure.js', { modules: 'pure' }); + const stats = await compile(compiler); + + expect(getModuleSource('./modules/pure/pure.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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 work and support "pure" mode #2', async () => { + const compiler = getCompiler('./modules/pure/pure.js', { + modules: { mode: 'pure' }, + }); + const stats = await compile(compiler); + + expect(getModuleSource('./modules/pure/pure.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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 work with the "[local]" placeholder for the "localIdentName" option', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + modules: { localIdentName: '[local]' }, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should respects path in localIdentName option', async () => { - const config = { - loader: { - options: { - modules: { - localIdentName: '[path][name]__[local]', - context: path.resolve(__dirname), - }, - }, + it('should work and respect the "localIdentName" option', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + 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'); + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should respects hashPrefix option with localIdentName option', async () => { - const config = { - loader: { - options: { - modules: { - localIdentName: '[local]--[hash]', - hashPrefix: 'x', - }, - }, + it('should work and respect the "context" option', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + 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'); + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should prefixes leading hyphen + digit with underscore with localIdentName option', async () => { - const config = { - loader: { - options: { - modules: { - localIdentName: '-1[local]', - }, - }, + it('should work and respect the "path" placeholder', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + 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'); + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should prefixes two leading hyphens with underscore with localIdentName option', async () => { - const config = { - loader: { - options: { - modules: { - localIdentName: '--[local]', - }, - }, + it('should work and respect the "hashPrefix" option', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + 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'); + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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 work and prefix leading hyphen when digit is first', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + modules: { localIdentName: '-1[local]' }, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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 should work with two leading hyphens', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + modules: { localIdentName: '--[local]' }, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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 should work with two leading underscore', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + modules: { localIdentName: '__[local]' }, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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 work and correctly replace escaped symbols', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + modules: { localIdentName: '[local]--[hash:base64:4]' }, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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'; - }, - }, + it('should work and respect the "getLocalIdent" option', async () => { + expect.assertions(382); + + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + 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'); + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should respects getLocalIdent option (global mode)', async () => { - const config = { - loader: { - options: { - modules: { - getLocalIdent() { - return 'foo'; - }, - }, + it('should work and has "undefined" context if no context was given', async () => { + expect.assertions(58); + + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + 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'); + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('getLocalIdent should be allowed to return false', async () => { - const config = { - loader: { - options: { - modules: { - localIdentName: '[local]', - getLocalIdent: () => false, - }, - }, + it('should work when the "getLocalIdent" option returns "false"', async () => { + const compiler = getCompiler('./modules/localIdentName/localIdentName.js', { + 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'); + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/localIdentName/localIdentName.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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)' + it('should support resolving in composes', async () => { + const compiler = getCompiler('./modules/composes/composes.js', { + modules: true, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/composes/composes.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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 compiler = getCompiler( + './modules/issue-286/source.js', + {}, + { + module: { + rules: [ + { + test: /source\.css$/, + loader: path.resolve(__dirname, '../src'), + options: { + importLoaders: false, + modules: { + localIdentName: 'b--[local]', + }, + }, + }, + { + test: /dep\.css$/, + loader: path.resolve(__dirname, '../src'), + 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)' + } + ); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/issue-286/source.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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, + const compiler = getCompiler( + './modules/issue-636/source.js', + {}, + { + module: { + rules: [ + { + test: /\.s[ca]ss$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { + modules: { + localIdentName: '[local]', + getLocalIdent: (context, localIdentName, localName) => + `prefix-${localName}`, + }, + importLoaders: 1, + }, + }, + { + loader: 'sass-loader', + options: { + // eslint-disable-next-line global-require + implementation: require('sass'), + }, + }, + ], + }, + ], }, - }, - 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'); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/issue-636/source.scss', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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)' + const compiler = getCompiler( + './modules/issue-861/resolving-from-node_modules.js', + { + modules: true, + } ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + const stats = await compile(compiler); + + expect( + getModuleSource( + './modules/issue-861/resolving-from-node_modules.css', + stats + ) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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-:', - }, - }, + it('issue #966', async () => { + const compiler = getCompiler('./modules/issue-966/button.js', { + modules: { + getLocalIdent: (ctx, localIdentName, localName) => `${localName}.hey`, }, - }; - 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)' + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/issue-966/button.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('issue #966', async () => { - const config = { - loader: { - options: { - modules: { - getLocalIdent: (ctx, localIdentName, localName) => - `${localName}.hey`, - }, - }, + it('issue #967', async () => { + const compiler = getCompiler('./modules/issue-967/path-placeholder.js', { + modules: { + mode: 'local', + localIdentName: + '[path][name]__[local]__/-sep-?-sep-<-sep->-sep-\\\\-sep-:-sep-*-sep-|-sep-"-sep-:', }, - }; - 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)' + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/issue-967/path-placeholder.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); it('issue #980', async () => { - const config = { - loader: { - options: { - modules: { - localIdentName: '[name]_[local]_[hash:base64:5]', - }, + const compiler = getCompiler( + './modules/issue-980/file.with.many.dots.in.name.js', + { + 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)' + } + ); + const stats = await compile(compiler); + + expect( + getModuleSource( + './modules/issue-980/file.with.many.dots.in.name.css', + stats + ) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); it('issue #995', async () => { - const config = { - loader: { - options: { - modules: { - mode: 'global', - localIdentName: '😀', - }, - }, + const compiler = getCompiler('./modules/issue-995/issue-995.js', { + modules: { + mode: 'global', + localIdentName: '😀', }, - }; - const testId = './modules/issue-995.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)' + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/issue-995/issue-995.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); it('should avoid unnecessary "require"', async () => { - const config = { - loader: { - options: { - modules: true, - }, - }, - }; - const testId = './modules/composes-duplicate.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)' + const compiler = getCompiler('./modules/composes/composes-duplicate.js', { + modules: true, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/composes/composes-duplicate.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); it('should keep order', async () => { - const config = { - loader: { - options: { - modules: true, - }, - }, - }; - const testId = './modules/order/index.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)' + const compiler = getCompiler('./modules/order/index.js', { modules: true }); + const stats = await compile(compiler); + + expect(getModuleSource('./modules/order/index.css', stats)).toMatchSnapshot( + 'module' + ); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); diff --git a/test/onlyLocals-option.test.js b/test/onlyLocals-option.test.js index 2a75cedc..04c819c2 100644 --- a/test/onlyLocals-option.test.js +++ b/test/onlyLocals-option.test.js @@ -1,29 +1,45 @@ -import { webpack } from './helpers'; +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; -describe('modules', () => { - it('true', 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') +describe('"onlyLocals" option', () => { + it('should work', async () => { + const compiler = getCompiler('./modules/composes/composes.js', { + modules: { mode: 'local', localIdentName: '_[local]' }, + onlyLocals: true, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/composes/composes.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); - expect(module.source).toMatchSnapshot('module'); - expect(valueModule.source).toMatchSnapshot('values module'); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + it('should work with the "esModule" option', async () => { + const compiler = getCompiler('./modules/composes/composes.js', { + modules: { mode: 'local', localIdentName: '_[local]' }, + onlyLocals: true, + esModule: true, + }); + const stats = await compile(compiler); + + expect( + getModuleSource('./modules/composes/composes.css', stats) + ).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' + ); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); diff --git a/test/runtime/__snapshots__/api.test.js.snap b/test/runtime/__snapshots__/api.test.js.snap index 7f342391..59695e48 100644 --- a/test/runtime/__snapshots__/api.test.js.snap +++ b/test/runtime/__snapshots__/api.test.js.snap @@ -1,14 +1,14 @@ // 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 modules 1`] = `"body { b: 2; }body { c: 3; }body { b: 2; }@media print {body { b: 2; }}@media print {body { d: 4; }}@media screen and (orientation:landscape) {body { a: 1; }}@media (orientation:landscape) {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 import named modules 1`] = `"body { b: 2; }body { c: 3; }body { b: 2; }@media print {body { b: 2; }}@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 media query 1`] = `"body { b: 2; }body { c: 3; }body { b: 2; }@media print {body { b: 2; }}@media print {body { d: 4; }}@media screen {body { a: 1; }}"`; exports[`api should toString with source mapping 1`] = ` "body { a: 1; } diff --git a/test/runtime/api.test.js b/test/runtime/api.test.js index b407af5b..508139a5 100644 --- a/test/runtime/api.test.js +++ b/test/runtime/api.test.js @@ -39,14 +39,22 @@ describe('api', () => { it('should toString with media query', () => { const m = api(); - m.push([1, 'body { a: 1; }', 'screen']); + 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 modules', () => { const m = api(); - const m1 = [1, 'body { a: 1; }', 'screen']; + const m1 = [1, 'body { a: 1; }', '(orientation:landscape)']; const m2 = [2, 'body { b: 2; }', '']; const m3 = [3, 'body { c: 3; }', '']; const m4 = [4, 'body { d: 4; }', '']; @@ -54,6 +62,7 @@ describe('api', () => { m.i([m2, m3], ''); m.i([m2], ''); m.i([m2, m4], 'print'); + m.i([m1], 'screen'); m.push(m1); expect(m.toString()).toMatchSnapshot(); diff --git a/test/sourceMap-option.test.js b/test/sourceMap-option.test.js index 92de774a..8aacdce8 100644 --- a/test/sourceMap-option.test.js +++ b/test/sourceMap-option.test.js @@ -2,242 +2,493 @@ import path from 'path'; import postcssPresetEnv from 'postcss-preset-env'; -import { webpack, evaluated, normalizeSourceMap } from './helpers'; +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; -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'); +describe('"sourceMap" option', () => { + describe('not specified', () => { + it('should not generate source maps', async () => { + const compiler = getCompiler('./source-map/basic.js'); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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'); + describe('true', () => { + it('should generate source maps', async () => { + const compiler = getCompiler('./source-map/basic.js', { + sourceMap: true, + }); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should generate source map when source map is `undefined` from other loader', async () => { - const config = { - loader: { - options: { - sourceMap: true, + it('should generate source maps when source maps equal to "null" from an other loader', async () => { + const compiler = getCompiler( + './source-map/basic.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { sourceMap: true }, + }, + { + loader: path.resolve( + __dirname, + './fixtures/source-map-loader.js' + ), + options: { + sourceMap: null, + }, + }, + ], + }, + ], }, - }, - // 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'); + } + ); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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, + it('should generate source maps when source maps equal to "undefined" from an other loader', async () => { + const compiler = getCompiler( + './source-map/basic.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { sourceMap: true }, + }, + { + loader: path.resolve( + __dirname, + './fixtures/source-map-loader.js' + ), + options: { + // eslint-disable-next-line no-undefined + sourceMap: undefined, + }, + }, + ], + }, + ], }, - }, - 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'); + } + ); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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, + it('should generate source maps when source maps is valid and string from an other loader', async () => { + const compiler = getCompiler( + './source-map/basic.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { sourceMap: true }, + }, + { + loader: path.resolve( + __dirname, + './fixtures/source-map-loader.js' + ), + options: { + sourceMap: JSON.stringify({ + foo: 'bar', + version: 3, + sources: ['basic.css'], + names: [], + mappings: 'AAAA;EACE,UAAU;AACZ', + file: 'basic.css', + sourcesContent: ['.class {\n color: red;\n}\n'], + }), + }, + }, + ], + }, + ], }, - }, - 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'); + } + ); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should generate source map when source map is valid from other loader (`postcss-loader`)', async () => { - const config = { - loader: { - options: { - sourceMap: true, + it('should generate source maps when source maps is valid from an other loader (`postcss-loader`)', async () => { + const compiler = getCompiler( + './source-map/basic-postcss.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { + sourceMap: true, + }, + }, + { + loader: 'postcss-loader', + options: { + plugins: () => [postcssPresetEnv({ stage: 0 })], + 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'); + } + ); + const stats = await compile(compiler); + + expect( + getModuleSource('./source-map/basic.postcss.css', stats) + ).toMatchSnapshot('module'); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); + + // TODO uncomment when `sass-loader` will always right source maps + // it('should generate source maps when source maps is valid from an other loader (`sass-loader`)', async () => { + // const compiler = getCompiler( + // './source-map/basic-scss.js', + // {}, + // { + // module: { + // rules: [ + // { + // test: /\.s[ca]ss$/i, + // use: [ + // { + // loader: path.resolve(__dirname, '../src'), + // options: { + // sourceMap: true, + // }, + // }, + // { + // loader: 'sass-loader', + // options: { + // // eslint-disable-next-line global-require + // implementation: require('sass'), + // sourceMap: true, + // }, + // }, + // ], + // }, + // ], + // }, + // } + // ); + // const stats = await compile(compiler); + // + // expect(getModuleSource('./source-map/basic.scss', stats)).toMatchSnapshot('module'); + // expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + // 'result' + // ); + // expect(getWarnings(stats)).toMatchSnapshot('warnings'); + // expect(getErrors(stats)).toMatchSnapshot('errors'); + // }); }); describe('false', () => { - it('should not generate source map', async () => { - const config = { - loader: { - options: { - sourceMap: false, + it('should not generate source maps', async () => { + const compiler = getCompiler('./source-map/basic.js', { + sourceMap: false, + }); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should not generate source maps when source maps equal to "null" from an other loader', async () => { + const compiler = getCompiler( + './source-map/basic.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { sourceMap: false }, + }, + { + loader: path.resolve( + __dirname, + './fixtures/source-map-loader.js' + ), + options: { + 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'); + } + ); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should not generate source map when source map is `null` from other loader', async () => { - const config = { - loader: { - options: { - sourceMap: false, + it('should not generate source maps when source maps equal to "undefined" from an other loader', async () => { + const compiler = getCompiler( + './source-map/basic.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { sourceMap: false }, + }, + { + loader: path.resolve( + __dirname, + './fixtures/source-map-loader.js' + ), + options: { + // eslint-disable-next-line no-undefined + sourceMap: undefined, + }, + }, + ], + }, + ], }, - }, - 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'); + } + ); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should not generate source map when source map is `undefined` from other loader', async () => { - const config = { - loader: { - options: { - sourceMap: false, + it('should not generate source maps when source maps is valid and string from an other loader', async () => { + const compiler = getCompiler( + './source-map/basic.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { sourceMap: false }, + }, + { + loader: path.resolve( + __dirname, + './fixtures/source-map-loader.js' + ), + options: { + sourceMap: JSON.stringify({ + foo: 'bar', + version: 3, + sources: ['basic.css'], + names: [], + mappings: 'AAAA;EACE,UAAU;AACZ', + file: 'basic.css', + sourcesContent: ['.class {\n color: red;\n}\n'], + }), + }, + }, + ], + }, + ], }, - }, - // 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'); + } + ); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.css', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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'); + it('should not generate source maps when source maps is valid from an other loader (`postcss-loader`)', async () => { + const compiler = getCompiler( + './source-map/basic-postcss.js', + {}, + { + module: { + rules: [ + { + test: /\.css$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { + sourceMap: false, + }, + }, + { + loader: 'postcss-loader', + options: { + plugins: () => [postcssPresetEnv({ stage: 0 })], + }, + }, + ], + }, + ], + }, + } + ); + const stats = await compile(compiler); + + expect( + getModuleSource('./source-map/basic.postcss.css', stats) + ).toMatchSnapshot('module'); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should not generate source maps when source maps is valid from an other loader (`sass-loader`)', async () => { + const compiler = getCompiler( + './source-map/basic-scss.js', + {}, + { + module: { + rules: [ + { + test: /\.s[ca]ss$/i, + use: [ + { + loader: path.resolve(__dirname, '../src'), + options: { + sourceMap: false, + }, + }, + { + loader: 'sass-loader', + options: { + // eslint-disable-next-line global-require + implementation: require('sass'), + sourceMap: true, + }, + }, + ], + }, + ], + }, + } + ); + const stats = await compile(compiler); + + expect(getModuleSource('./source-map/basic.scss', stats)).toMatchSnapshot( + 'module' + ); + expect( + getExecutedCode('main.bundle.js', compiler, stats) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); }); }); diff --git a/test/url-option.test.js b/test/url-option.test.js index d716d182..258ce6b7 100644 --- a/test/url-option.test.js +++ b/test/url-option.test.js @@ -1,66 +1,69 @@ -import { webpack, evaluated, normalizeErrors } from './helpers'; +import { + compile, + getCompiler, + getErrors, + getExecutedCode, + getModuleSource, + getWarnings, +} from './helpers/index'; -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); +describe('"url" option', () => { + it('should work when not specified', async () => { + const compiler = getCompiler('./url/url.js'); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect(getModuleSource('./url/url.css', stats)).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot( - 'warnings' + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should work with a value equal to "true"', async () => { + const compiler = getCompiler('./url/url.js', { url: true }); + const stats = await compile(compiler); + + expect(getModuleSource('./url/url.css', stats)).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).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); + it('should work with a value equal to "false"', async () => { + const compiler = getCompiler('./url/url.js', { url: false }); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' + expect(getModuleSource('./url/url.css', stats)).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(stats.compilation.warnings).toMatchSnapshot('warnings'); - expect(stats.compilation.errors).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('Function', async () => { - const config = { - loader: { - options: { - url: (url, resourcePath) => { - expect(typeof resourcePath === 'string').toBe(true); + it('should work with a value equal to "Function"', async () => { + const compiler = getCompiler('./url/url.js', { + url: (url, resourcePath) => { + expect(typeof resourcePath === 'string').toBe(true); - // Don't handle `img.png` - if (url.includes('img.png')) { - return false; - } + // Don't handle `img.png` + if (url.includes('img.png')) { + return false; + } - return true; - }, - }, + 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); + }); + const stats = await compile(compiler); - expect(module.source).toMatchSnapshot('module'); - expect(evaluated(module.source, modules)).toMatchSnapshot( - 'module (evaluated)' - ); - expect(normalizeErrors(stats.compilation.warnings)).toMatchSnapshot( - 'warnings' + expect(getModuleSource('./url/url.css', stats)).toMatchSnapshot('module'); + expect(getExecutedCode('main.bundle.js', compiler, stats)).toMatchSnapshot( + 'result' ); - expect(normalizeErrors(stats.compilation.errors)).toMatchSnapshot('errors'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); }); }); diff --git a/test/validate-options.test.js b/test/validate-options.test.js index b15a0d0f..814ee799 100644 --- a/test/validate-options.test.js +++ b/test/validate-options.test.js @@ -1,118 +1,116 @@ -import loader from '../src/cjs'; +import { getCompiler, compile } from './helpers/index'; -it('validate options', () => { - const validate = (options) => - loader.call( - Object.assign( - {}, - { - query: options, - loaders: [], - remainingRequest: 'file.css', - currentRequest: 'file.css', - resourcePath: 'file.css', - async: () => (error) => { - if (error) { - throw error; - } - }, - } - ), - '.red { 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: 'pure' })).not.toThrow(); - expect(() => validate({ modules: { mode: 'local' } })).not.toThrow(); - expect(() => validate({ modules: { mode: 'global' } })).not.toThrow(); - expect(() => validate({ modules: { mode: 'pure' } })).not.toThrow(); - expect(() => validate({ modules: 'true' })).toThrowErrorMatchingSnapshot(); - expect(() => validate({ modules: 'globals' })).toThrowErrorMatchingSnapshot(); - expect(() => validate({ modules: 'locals' })).toThrowErrorMatchingSnapshot(); - expect(() => validate({ modules: 'pures' })).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(); +describe('validate options', () => { + const tests = { + url: { + success: [true, false, () => {}], + failure: ['true'], + }, + import: { + success: [true, false, () => {}], + failure: ['true'], + }, + modules: { + success: [ + true, + false, + 'global', + 'local', + 'pure', + { mode: 'global' }, + { mode: 'local' }, + { mode: 'pure' }, + { localIdentName: '[path][name]__[local]--[hash:base64:5]' }, + { context: 'context' }, + { hashPrefix: 'hash' }, + { getLocalIdent: () => {} }, + { localIdentRegExp: 'page-(.*)\\.js' }, + { localIdentRegExp: /page-(.*)\.js/ }, + ], + failure: [ + 'true', + 'globals', + 'locals', + 'pures', + { mode: true }, + { mode: 'globals' }, + { mode: 'locals' }, + { mode: 'pures' }, + { localIdentName: true }, + { context: true }, + { hashPrefix: true }, + { getLocalIdent: [] }, + { localIdentRegExp: true }, + ], + }, + sourceMap: { + success: [true, false], + failure: ['true'], + }, + localsConvention: { + success: ['camelCase', 'camelCaseOnly', 'dashes', 'dashesOnly'], + failure: ['unknown'], + }, + importLoaders: { + success: [false, 0, 1, 2], + failure: ['1'], + }, + onlyLocals: { + success: [true, false], + failure: ['true'], + }, + esModule: { + success: [true, false], + failure: ['true'], + }, + unknown: { + success: [], + failure: [1, true, false, 'test', /test/, [], {}, { foo: 'bar' }], + }, + }; - expect(() => validate({ modules: { context: 'context' } })).not.toThrow(); - expect(() => - validate({ modules: { context: true } }) - ).toThrowErrorMatchingSnapshot(); + function stringifyValue(value) { + if ( + Array.isArray(value) || + (value && typeof value === 'object' && value.constructor === Object) + ) { + return JSON.stringify(value); + } - expect(() => validate({ modules: { hashPrefix: 'hash' } })).not.toThrow(); - expect(() => - validate({ modules: { hashPrefix: true } }) - ).toThrowErrorMatchingSnapshot(); + return value; + } - expect(() => - validate({ modules: { getLocalIdent: () => {} } }) - ).not.toThrow(); - expect(() => - validate({ modules: { getLocalIdent: [] } }) - ).toThrowErrorMatchingSnapshot(); + async function createTestCase(key, value, type) { + it(`should ${ + type === 'success' ? 'successfully validate' : 'throw an error on' + } the "${key}" option with "${stringifyValue(value)}" value`, async () => { + const compiler = getCompiler('simple.js', { [key]: value }); + let stats; - expect(() => - validate({ modules: { localIdentRegExp: 'page-(.*)\\.js' } }) - ).not.toThrow(); - expect(() => - validate({ modules: { localIdentRegExp: /page-(.*)\.js/ } }) - ).not.toThrow(); - expect(() => - validate({ modules: { localIdentRegExp: true } }) - ).toThrowErrorMatchingSnapshot(); + try { + stats = await compile(compiler); + } finally { + if (type === 'success') { + expect(stats.hasErrors()).toBe(false); + } else if (type === 'failure') { + const { + compilation: { errors }, + } = stats; - 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(errors).toHaveLength(1); + expect(() => { + throw new Error(errors[0].error.message); + }).toThrowErrorMatchingSnapshot(); + } + } + }); + } - expect(() => validate({ unknown: 'unknown' })).toThrowErrorMatchingSnapshot(); + for (const [key, values] of Object.entries(tests)) { + for (const type of Object.keys(values)) { + for (const value of values[type]) { + createTestCase(key, value, type); + } + } + } });