From c4813cfcf716c0eecaf79dca1f3545bc865382ea Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 18 Mar 2020 18:04:24 +0300 Subject: [PATCH] feat: `preprocessor` option --- README.md | 159 +++++++++++++++++- package-lock.json | 92 ++++++++++ package.json | 3 + src/index.js | 14 +- src/options.json | 3 + src/utils.js | 2 +- .../attributes-option.test.js.snap | 22 +-- .../esModule-option.test.js.snap | 4 +- test/__snapshots__/loader.test.js.snap | 16 +- .../minimize-option.test.js.snap | 14 +- .../preprocessor-option.test.js.snap | 46 +++++ .../validate-options.test.js.snap | 16 +- test/fixtures/image.png.webp | Bin 0 -> 78117 bytes test/fixtures/posthtml.html | 1 + test/fixtures/preprocessor.hbs | 4 + test/helpers/execute.js | 5 +- test/helpers/getCompiler.js | 4 +- test/preprocessor-option.test.js | 81 +++++++++ 18 files changed, 441 insertions(+), 45 deletions(-) create mode 100644 test/__snapshots__/preprocessor-option.test.js.snap create mode 100644 test/fixtures/image.png.webp create mode 100644 test/fixtures/posthtml.html create mode 100644 test/fixtures/preprocessor.hbs create mode 100644 test/preprocessor-option.test.js diff --git a/README.md b/README.md index fc47fb5b..563ce6fc 100644 --- a/README.md +++ b/README.md @@ -50,12 +50,66 @@ module.exports = { ## Options -| Name | Type | Default | Description | -| :-----------------------------: | :------------------------: | :------------------------------------------: | :--------------------------------------- | -| **[`attributes`](#attributes)** | `{Boolean\/Array\/Object}` | `true` | Enables/Disables attributes handling | -| **[`root`](#root)** | `{String}` | `undefiend` | Allow to handle root-relative attributes | -| **[`minimize`](#minimize)** | `{Boolean\|Object}` | `true` in production mode, otherwise `false` | Tell `html-loader` to minimize HTML | -| **[`esModule`](#esmodule)** | `{Boolean}` | `false` | Use ES modules syntax | +| Name | Type | Default | Description | +| :---------------------------------: | :------------------------: | :------------------------------------------: | :----------------------------------------------- | +| **[`preprocessor`](#preprocessor)** | `{Function}` | `undefined` | Allows pre-processing of content before handling | +| **[`attributes`](#attributes)** | `{Boolean\/Array\/Object}` | `true` | Enables/Disables attributes handling | +| **[`root`](#root)** | `{String}` | `undefiend` | Allow to handle root-relative attributes | +| **[`minimize`](#minimize)** | `{Boolean\|Object}` | `true` in production mode, otherwise `false` | Tell `html-loader` to minimize HTML | +| **[`esModule`](#esmodule)** | `{Boolean}` | `false` | Use ES modules syntax | + +### `preprocessor` + +Type: `Function` +Default: `undefined` + +Allows pre-processing of content before handling. + +> ⚠ You should always return valid HTML + +**file.hbs** + +```hbs +
+

{{firstname}} {{lastname}}

+ alt +
+``` + +**webpack.config.js** + +```js +const Handlebars = require('handlebars'); + +module.exports = { + module: { + rules: [ + { + test: /\.hbs$/i, + loader: 'html-loader', + options: { + preprocessor: (content, loaderContext) => { + let result; + + try { + result = Handlebars.compile(content)({ + firstname: 'Value', + lastname: 'OtherValue', + }); + } catch (error) { + loaderContext.emitError(error); + + return content; + } + + return result; + }, + }, + }, + ], + }, +}; +``` ### `attributes` @@ -501,6 +555,99 @@ require('html-loader?root=.!./file.html'); // => '' ``` +### Templating + +You can use any template system. Below is an example for [handlebars](https://handlebarsjs.com/). + +**file.hbs** + +```hbs +
+

{{firstname}} {{lastname}}

+ alt +
+``` + +**webpack.config.js** + +```js +const Handlebars = require('handlebars'); + +module.exports = { + module: { + rules: [ + { + test: /\.hbs$/i, + loader: 'html-loader', + options: { + preprocessor: (content, loaderContext) => { + let result; + + try { + result = Handlebars.compile(content)({ + firstname: 'Value', + lastname: 'OtherValue', + }); + } catch (error) { + loaderContext.emitError(error); + + return content; + } + + return result; + }, + }, + }, + ], + }, +}; +``` + +### PostHTML + +You can use [PostHTML](https://github.com/posthtml/posthtml) without any additional loaders. + +**file.html** + +```html + +``` + +**webpack.config.js** + +```js +const posthtml = require('posthtml'); +const posthtmlWebp = require('posthtml-webp'); + +module.exports = { + module: { + rules: [ + { + test: /\.hbs$/i, + loader: 'html-loader', + options: { + preprocessor: () => { + let result; + + try { + result = posthtml() + .use(plugin) + .process(content, { sync: true }); + } catch (error) { + loaderContext.emitError(error); + + return content; + } + + return result.html; + }, + }, + }, + ], + }, +}; +``` + ### Export into HTML files A very common scenario is exporting the HTML into their own _.html_ file, to diff --git a/package-lock.json b/package-lock.json index f1a10a7c..3780d23c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11532,6 +11532,98 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "posthtml": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.0.tgz", + "integrity": "sha512-aNUEP/SfKUXAt+ghG51LC5MmafChBZeslVe/SSdfKIgLGUVRE68mrMF4V8XbH07ZifM91tCSuxY3eHIFLlecQw==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + } + }, + "posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "dev": true, + "requires": { + "htmlparser2": "^3.9.2" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "posthtml-render": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.0.tgz", + "integrity": "sha512-dQB+hoAKDtnI94RZm/wxBUH9My8OJcXd0uhWmGh2c7tVtQ85A+OS3yCN3LNbFtPz3bViwBJXAeoi+CBGMXM0DA==", + "dev": true + }, + "posthtml-webp": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/posthtml-webp/-/posthtml-webp-1.5.0.tgz", + "integrity": "sha512-aer+AJVtOEocrt8COdtRb0b7i/u6gdcZnUHdAQnEB3oG+bax46HnrAhxDKRCgzzEyV0QCmxhSmFh5bZ6PnebHQ==", + "dev": true, + "requires": { + "posthtml": "^0.12.0" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", diff --git a/package.json b/package.json index d8a66858..abeeca28 100644 --- a/package.json +++ b/package.json @@ -67,12 +67,15 @@ "eslint-config-prettier": "^6.10.0", "eslint-plugin-import": "^2.20.1", "file-loader": "^6.0.0", + "handlebars": "^4.7.3", "husky": "^4.2.3", "jest": "^25.1.0", "jest-junit": "^10.0.0", "lint-staged": "^10.0.8", "memfs": "^3.1.2", "npm-run-all": "^4.1.5", + "posthtml": "^0.12.0", + "posthtml-webp": "^1.5.0", "prettier": "^1.19.1", "standard-version": "^7.1.0", "webpack": "^4.42.0" diff --git a/src/index.js b/src/index.js index 01450e03..4307c4f4 100644 --- a/src/index.js +++ b/src/index.js @@ -21,6 +21,11 @@ export default function htmlLoader(content) { baseDataPath: 'options', }); + if (options.preprocessor) { + // eslint-disable-next-line no-param-reassign + content = options.preprocessor(content, this); + } + const plugins = []; const attributes = @@ -70,5 +75,12 @@ export default function htmlLoader(content) { const moduleCode = getModuleCode(html, replaceableMessages, codeOptions); const exportCode = getExportCode(html, exportedMessages, codeOptions); - return `${importCode}${moduleCode}${exportCode}`; + let code = `${importCode}${moduleCode}${exportCode}`; + + if (options.process && options.process.post) { + // eslint-disable-next-line no-param-reassign + code = options.process.post(code, this); + } + + return code; } diff --git a/src/options.json b/src/options.json index d1a283fd..b623512e 100644 --- a/src/options.json +++ b/src/options.json @@ -1,6 +1,9 @@ { "type": "object", "properties": { + "preprocessor": { + "instanceof": "Function" + }, "attributes": { "anyOf": [ { "type": "boolean" }, diff --git a/src/utils.js b/src/utils.js index ded52c3b..244791df 100644 --- a/src/utils.js +++ b/src/utils.js @@ -94,5 +94,5 @@ export function getExportCode(html, exportedMessages, codeOptions) { return `// Exports\nexport default code;`; } - return `// Exports\nmodule.exports = code`; + return `// Exports\nmodule.exports = code;`; } diff --git a/test/__snapshots__/attributes-option.test.js.snap b/test/__snapshots__/attributes-option.test.js.snap index b65e6abc..c8268fa7 100644 --- a/test/__snapshots__/attributes-option.test.js.snap +++ b/test/__snapshots__/attributes-option.test.js.snap @@ -455,7 +455,7 @@ var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_REPLACER_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); var code = \\"\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\\\"\\\\\\"\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should handle "src" and "srcset" tags correctly: result 1`] = ` @@ -776,7 +776,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should handle attributes with a "boolean" notation equals "true": result 1`] = ` @@ -1060,7 +1060,7 @@ exports[`'attributes' option should not handle attributes with a "boolean" notat "// Module var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should not handle attributes with a "boolean" notation equals "false": result 1`] = ` @@ -1376,7 +1376,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should work by default with CommonJS module syntax and ES module syntax from other loader: result 1`] = ` @@ -1692,7 +1692,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should work by default with CommonJS module syntax: result 1`] = ` @@ -2640,7 +2640,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should work by default: result 1`] = ` @@ -2938,7 +2938,7 @@ var ___HTML_LOADER_REPLACER_5___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___H var ___HTML_LOADER_REPLACER_6___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_4___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should work with an "array" notations: result 1`] = ` @@ -3248,7 +3248,7 @@ var ___HTML_LOADER_REPLACER_11___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_12___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_10___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should work with an "object" notations and filter some sources: result 1`] = ` @@ -3564,7 +3564,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should work with an "object" notations and translate root-relative sources: result 1`] = ` @@ -3862,7 +3862,7 @@ var ___HTML_LOADER_REPLACER_5___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___H var ___HTML_LOADER_REPLACER_6___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_4___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should work with an "object" notations: result 1`] = ` @@ -4178,7 +4178,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'attributes' option should work with an empty "object" notations: result 1`] = ` diff --git a/test/__snapshots__/esModule-option.test.js.snap b/test/__snapshots__/esModule-option.test.js.snap index bef0c633..9d1fadf6 100644 --- a/test/__snapshots__/esModule-option.test.js.snap +++ b/test/__snapshots__/esModule-option.test.js.snap @@ -38,7 +38,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'esModule' option should use a CommonJS export by default: result 1`] = ` @@ -354,7 +354,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

My First Heading

\\\\n

My first paragraph.

\\\\n

An Unordered HTML List

\\\\n\\\\n
    \\\\n
  • Coffee
  • \\\\n
  • Tea
  • \\\\n
  • Milk
  • \\\\n
\\\\n\\\\n

An Ordered HTML List

\\\\n\\\\n
    \\\\n
  1. Coffee
  2. \\\\n
  3. Tea
  4. \\\\n
  5. Milk
  6. \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
Foo
\\\\n\\\\n\\\\n
BAR
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
\\\\n First name:
\\\\n \\\\n
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
\\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
\\\\n
\\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
\\\\n\\\\n\\\\\\"Red\\\\n
\\\\n Written by Jon Doe.
\\\\n Visit us at:
\\\\n Example.com
\\\\n Box 564, Disneyland
\\\\n USA\\\\n
\\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

Text

\\\\n

Text

\\\\n

Text

\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`'esModule' option should use a CommonJS export when the value is "false": result 1`] = ` diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index 640407bc..a11a433c 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -10,7 +10,7 @@ var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_REPLACER_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); var code = \\"Text < img src=\\\\\\"image.png\\\\\\" >\\\\nText <\\\\nText >\\\\n\\\\nboohay\\\\n<<<<>foo\\\\n>><
  • \\\\\\\\u2028 - \\\\u2028 Text \\\\u2028
  • \\\\\\\\u2029 - \\\\u2029 Text \\\\u2029
  • \\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`loader should not failed contain invisible spaces: result 1`] = `"
    • \\\\u2028 - 
 Text 

    • \\\\u2029 - 
 Text 

    "`; @@ -46,7 +46,7 @@ exports[`loader should not make bad things with templates: module 1`] = ` "// Module var code = \\"\\\\n\\\\n

    Something about the \\\\\\\\\` character

    \\\\n\\\\n

    #{number} {customer}

    \\\\n

    {title}

    \\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`loader should not make bad things with templates: result 1`] = ` @@ -68,10 +68,14 @@ exports[`loader should work with an empty file: module 1`] = ` "// Module var code = \\"\\"; // Exports -module.exports = code" +module.exports = code;" `; -exports[`loader should work with an empty file: result 1`] = `""`; +exports[`loader should work with an empty file: result 1`] = ` +Object { + "default": "", +} +`; exports[`loader should work with an empty file: warnings 1`] = `Array []`; @@ -113,7 +117,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

    My First Heading

    \\\\n

    My first paragraph.

    \\\\n

    An Unordered HTML List

    \\\\n\\\\n
      \\\\n
    • Coffee
    • \\\\n
    • Tea
    • \\\\n
    • Milk
    • \\\\n
    \\\\n\\\\n

    An Ordered HTML List

    \\\\n\\\\n
      \\\\n
    1. Coffee
    2. \\\\n
    3. Tea
    4. \\\\n
    5. Milk
    6. \\\\n
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
    Foo
    \\\\n\\\\n\\\\n
    BAR
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
    \\\\n First name:
    \\\\n \\\\n
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
    \\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
    \\\\n
    \\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
    \\\\n\\\\n\\\\\\"Red\\\\n
    \\\\n Written by Jon Doe.
    \\\\n Visit us at:
    \\\\n Example.com
    \\\\n Box 564, Disneyland
    \\\\n USA\\\\n
    \\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

    Text

    \\\\n

    Text

    \\\\n

    Text

    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`loader should work: result 1`] = ` diff --git a/test/__snapshots__/minimize-option.test.js.snap b/test/__snapshots__/minimize-option.test.js.snap index 4e1d731f..42754268 100644 --- a/test/__snapshots__/minimize-option.test.js.snap +++ b/test/__snapshots__/minimize-option.test.js.snap @@ -38,7 +38,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

    My First Heading

    \\\\n

    My first paragraph.

    \\\\n

    An Unordered HTML List

    \\\\n\\\\n
      \\\\n
    • Coffee
    • \\\\n
    • Tea
    • \\\\n
    • Milk
    • \\\\n
    \\\\n\\\\n

    An Ordered HTML List

    \\\\n\\\\n
      \\\\n
    1. Coffee
    2. \\\\n
    3. Tea
    4. \\\\n
    5. Milk
    6. \\\\n
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
    Foo
    \\\\n\\\\n\\\\n
    BAR
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
    \\\\n First name:
    \\\\n \\\\n
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
    \\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
    \\\\n
    \\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
    \\\\n\\\\n\\\\\\"Red\\\\n
    \\\\n Written by Jon Doe.
    \\\\n Visit us at:
    \\\\n Example.com
    \\\\n Box 564, Disneyland
    \\\\n USA\\\\n
    \\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

    Text

    \\\\n

    Text

    \\\\n

    Text

    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`"minimize" option should be turned off by default: result 1`] = ` @@ -354,7 +354,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"\\\\n\\\\n

    My First Heading

    \\\\n

    My first paragraph.

    \\\\n

    An Unordered HTML List

    \\\\n\\\\n
      \\\\n
    • Coffee
    • \\\\n
    • Tea
    • \\\\n
    • Milk
    • \\\\n
    \\\\n\\\\n

    An Ordered HTML List

    \\\\n\\\\n
      \\\\n
    1. Coffee
    2. \\\\n
    3. Tea
    4. \\\\n
    5. Milk
    6. \\\\n
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
    Foo
    \\\\n\\\\n\\\\n
    BAR
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
    \\\\n First name:
    \\\\n \\\\n
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
    \\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
    \\\\n
    \\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
    \\\\n\\\\n\\\\\\"Red\\\\n
    \\\\n Written by Jon Doe.
    \\\\n Visit us at:
    \\\\n Example.com
    \\\\n Box 564, Disneyland
    \\\\n USA\\\\n
    \\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

    Text

    \\\\n

    Text

    \\\\n

    Text

    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`"minimize" option should be turned off in "development" mode: result 1`] = ` @@ -670,7 +670,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"

    My First Heading

    My first paragraph.

    An Unordered HTML List

    • Coffee
    • Tea
    • Milk

    An Ordered HTML List

    1. Coffee
    2. Tea
    3. Milk
    Foo
    BAR
    \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva Flowers \\\\\\"Smiley
    First name:
    T ex t
    Call me --> -->

    <div id = "character"> © 2007 or © 2007
    \\\\\\"Red
    Written by Jon Doe.
    Visit us at:
    Example.com
    Box 564, Disneyland
    USA
    link Start Chat Start Chat Start Chat \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva Test Test test test test

    Text

    Text

    Text

    \\\\\\"Elva \\\\\\"Elva test test test test test \\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`"minimize" option should be turned on in "production" mode: result 1`] = `"

    My First Heading

    My first paragraph.

    An Unordered HTML List

    • Coffee
    • Tea
    • Milk

    An Ordered HTML List

    1. Coffee
    2. Tea
    3. Milk
    Foo
    BAR
    \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva Flowers \\"Smiley
    First name:
    T ex t
    Call me --> -->

    <div id = "character"> © 2007 or © 2007
    \\"Red
    Written by Jon Doe.
    Visit us at:
    Example.com
    Box 564, Disneyland
    USA
    link Start Chat Start Chat Start Chat \\"Elva \\"Elva \\"Elva Test Test test test test

    Text

    Text

    Text

    \\"Elva \\"Elva test test test test test "`; @@ -692,7 +692,7 @@ var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_REPLACER_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); var code = \\"Text < img src=\\\\\\"image.png\\\\\\" >\\\\nText <\\\\nText >\\\\n\\\\nboohay\\\\n<<<<>foo\\\\n>><\\\\n\\\\n

    My First Heading

    \\\\n

    My first paragraph.

    \\\\n

    An Unordered HTML List

    \\\\n\\\\n
      \\\\n
    • Coffee
    • \\\\n
    • Tea
    • \\\\n
    • Milk
    • \\\\n
    \\\\n\\\\n

    An Ordered HTML List

    \\\\n\\\\n
      \\\\n
    1. Coffee
    2. \\\\n
    3. Tea
    4. \\\\n
    5. Milk
    6. \\\\n
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
    Foo
    \\\\n\\\\n\\\\n
    BAR
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n \\\\n \\\\n \\\\\\"Flowers\\\\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Smiley\\\\n\\\\n
    \\\\n First name:
    \\\\n \\\\n
    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nT ex t \\\\n\\\\n
    \\\\n\\\\n\\\\n\\\\n]]>\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nlink text\\\\n\\\\nCall me\\\\n\\\\n-->\\\\n-->\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n
    \\\\n
    \\\\n\\\\n<div id = "character">\\\\n© 2007\\\\nor\\\\n© 2007\\\\n\\\\n
    \\\\n\\\\n\\\\\\"Red\\\\n
    \\\\n Written by Jon Doe.
    \\\\n Visit us at:
    \\\\n Example.com
    \\\\n Box 564, Disneyland
    \\\\n USA\\\\n
    \\\\nlink\\\\nStart Chat\\\\nStart Chat\\\\nStart Chat\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Elva\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"Test\\\\\\"\\\\n\\\\n\\\\n\\\\n Test \\\\n\\\\ntest\\\\ntest\\\\ntest\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n

    Text

    \\\\n

    Text

    \\\\n

    Text

    \\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\\\"Elva\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\\\"test\\\\\\"/\\\\n\\\\n\\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`"minimize" option should not work with a value equal to "false": result 1`] = ` @@ -1063,7 +1063,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"

    My First Heading

    My first paragraph.

    An Unordered HTML List

    • Coffee
    • Tea
    • Milk

    An Ordered HTML List

    1. Coffee
    2. Tea
    3. Milk
    Foo
    BAR
    \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva Flowers \\\\\\"Smiley
    First name:
    T ex t
    ]]> Call me --> -->

    <div id = "character"> © 2007 or © 2007
    \\\\\\"Red
    Written by Jon Doe.
    Visit us at:
    Example.com
    Box 564, Disneyland
    USA
    link Start Chat Start Chat Start Chat \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva Test Test test test test

    Text

    Text

    Text

    \\\\\\"Elva \\\\\\"Elva test test test test test \\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`"minimize" option should support options for minimizer: result 1`] = ` @@ -1112,7 +1112,7 @@ var ___HTML_LOADER_REPLACER_14___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___ var ___HTML_LOADER_REPLACER_15___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_13___); var code = \\"

    My First Heading

    My first paragraph.

    An Unordered HTML List

    • Coffee
    • Tea
    • Milk

    An Ordered HTML List

    1. Coffee
    2. Tea
    3. Milk
    Foo
    BAR
    \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva Flowers \\\\\\"Smiley
    First name:
    T ex t
    Call me --> -->

    <div id = "character"> © 2007 or © 2007
    \\\\\\"Red
    Written by Jon Doe.
    Visit us at:
    Example.com
    Box 564, Disneyland
    USA
    link Start Chat Start Chat Start Chat \\\\\\"Elva \\\\\\"Elva \\\\\\"Elva Test Test test test test

    Text

    Text

    Text

    \\\\\\"Elva \\\\\\"Elva test test test test test \\"; // Exports -module.exports = code" +module.exports = code;" `; exports[`"minimize" option should work with a value equal to "true": result 1`] = `"

    My First Heading

    My first paragraph.

    An Unordered HTML List

    • Coffee
    • Tea
    • Milk

    An Ordered HTML List

    1. Coffee
    2. Tea
    3. Milk
    Foo
    BAR
    \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva \\"Elva Flowers \\"Smiley
    First name:
    T ex t
    Call me --> -->

    <div id = "character"> © 2007 or © 2007
    \\"Red
    Written by Jon Doe.
    Visit us at:
    Example.com
    Box 564, Disneyland
    USA
    link Start Chat Start Chat Start Chat \\"Elva \\"Elva \\"Elva Test Test test test test

    Text

    Text

    Text

    \\"Elva \\"Elva test test test test test "`; diff --git a/test/__snapshots__/preprocessor-option.test.js.snap b/test/__snapshots__/preprocessor-option.test.js.snap new file mode 100644 index 00000000..195b3449 --- /dev/null +++ b/test/__snapshots__/preprocessor-option.test.js.snap @@ -0,0 +1,46 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`'process' option should work with the "preprocessor" option #2: errors 1`] = `Array []`; + +exports[`'process' option should work with the "preprocessor" option #2: module 1`] = ` +"// Imports +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); +var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png.webp\\"); +var ___HTML_LOADER_IMPORT_1___ = require(\\"./image.png\\"); +// Module +var ___HTML_LOADER_REPLACER_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); +var ___HTML_LOADER_REPLACER_1___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_1___); +var code = \\"\\\\n\\"; +// Exports +module.exports = code;" +`; + +exports[`'process' option should work with the "preprocessor" option #2: result 1`] = ` +" +" +`; + +exports[`'process' option should work with the "preprocessor" option #2: warnings 1`] = `Array []`; + +exports[`'process' option should work with the "preprocessor" option: errors 1`] = `Array []`; + +exports[`'process' option should work with the "preprocessor" option: module 1`] = ` +"// Imports +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); +var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); +// Module +var ___HTML_LOADER_REPLACER_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); +var code = \\"
    \\\\n

    Alexander Krasnoyarov

    \\\\n \\\\\\"alt\\\\\\"\\\\n
    \\\\n\\"; +// Exports +module.exports = code;" +`; + +exports[`'process' option should work with the "preprocessor" option: result 1`] = ` +"
    +

    Alexander Krasnoyarov

    + \\"alt\\" +
    +" +`; + +exports[`'process' option should work with the "preprocessor" option: warnings 1`] = `Array []`; diff --git a/test/__snapshots__/validate-options.test.js.snap b/test/__snapshots__/validate-options.test.js.snap index 19441ffa..462f463c 100644 --- a/test/__snapshots__/validate-options.test.js.snap +++ b/test/__snapshots__/validate-options.test.js.snap @@ -50,47 +50,47 @@ exports[`validate options should throw an error on the "esModule" option with "t exports[`validate options should throw an error on the "unknown" option with "/test/" value 1`] = ` "Invalid options object. HTML Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'unknown'. These properties are valid: - object { attributes?, minimize?, esModule? }" + object { preprocessor?, attributes?, minimize?, esModule? }" `; exports[`validate options should throw an error on the "unknown" option with "[]" value 1`] = ` "Invalid options object. HTML Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'unknown'. These properties are valid: - object { attributes?, minimize?, esModule? }" + object { preprocessor?, attributes?, minimize?, esModule? }" `; exports[`validate options should throw an error on the "unknown" option with "{"foo":"bar"}" value 1`] = ` "Invalid options object. HTML Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'unknown'. These properties are valid: - object { attributes?, minimize?, esModule? }" + object { preprocessor?, attributes?, minimize?, esModule? }" `; exports[`validate options should throw an error on the "unknown" option with "{}" value 1`] = ` "Invalid options object. HTML Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'unknown'. These properties are valid: - object { attributes?, minimize?, esModule? }" + object { preprocessor?, attributes?, minimize?, esModule? }" `; exports[`validate options should throw an error on the "unknown" option with "1" value 1`] = ` "Invalid options object. HTML Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'unknown'. These properties are valid: - object { attributes?, minimize?, esModule? }" + object { preprocessor?, attributes?, minimize?, esModule? }" `; exports[`validate options should throw an error on the "unknown" option with "false" value 1`] = ` "Invalid options object. HTML Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'unknown'. These properties are valid: - object { attributes?, minimize?, esModule? }" + object { preprocessor?, attributes?, minimize?, esModule? }" `; exports[`validate options should throw an error on the "unknown" option with "test" value 1`] = ` "Invalid options object. HTML Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'unknown'. These properties are valid: - object { attributes?, minimize?, esModule? }" + object { preprocessor?, attributes?, minimize?, esModule? }" `; exports[`validate options should throw an error on the "unknown" option with "true" value 1`] = ` "Invalid options object. HTML Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'unknown'. These properties are valid: - object { attributes?, minimize?, esModule? }" + object { preprocessor?, attributes?, minimize?, esModule? }" `; diff --git a/test/fixtures/image.png.webp b/test/fixtures/image.png.webp new file mode 100644 index 0000000000000000000000000000000000000000..b74b839e2b868d2df9ea33cc1747eb7803d2d69c GIT binary patch literal 78117 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

    T}Ke+!9t-m?i2X-;f#-{#p<{2~ia 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 diff --git a/test/fixtures/preprocessor.hbs b/test/fixtures/preprocessor.hbs new file mode 100644 index 00000000..3400bc24 --- /dev/null +++ b/test/fixtures/preprocessor.hbs @@ -0,0 +1,4 @@ +
    +

    {{firstname}} {{lastname}}

    + alt +
    diff --git a/test/helpers/execute.js b/test/helpers/execute.js index e41ebaba..a3421e7f 100644 --- a/test/helpers/execute.js +++ b/test/helpers/execute.js @@ -13,7 +13,10 @@ export default (code) => { module.filename = resource; // eslint-disable-next-line no-underscore-dangle - module._compile(`${code};module.exports = ___TEST___.default;`, resource); + module._compile( + `${code};module.exports = ___TEST___.default ?___TEST___.default : ___TEST___;`, + resource + ); return module.exports; }; diff --git a/test/helpers/getCompiler.js b/test/helpers/getCompiler.js index dfdc14ed..84ffbac1 100644 --- a/test/helpers/getCompiler.js +++ b/test/helpers/getCompiler.js @@ -19,7 +19,7 @@ export default (fixture, loaderOptions = {}, config = {}) => { module: { rules: [ { - test: /\.html$/i, + test: /\.(html|hbs)$/i, rules: [ { loader: path.resolve(__dirname, '../../src'), @@ -28,7 +28,7 @@ export default (fixture, loaderOptions = {}, config = {}) => { ], }, { - test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2|ogg|pdf|vtt)$/i, + test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2|ogg|pdf|vtt|webp)$/i, loader: 'file-loader', options: { name: '[name].[ext]' }, }, diff --git a/test/preprocessor-option.test.js b/test/preprocessor-option.test.js new file mode 100644 index 00000000..ddf4e79e --- /dev/null +++ b/test/preprocessor-option.test.js @@ -0,0 +1,81 @@ +import Handlebars from 'handlebars'; +import posthtml from 'posthtml'; +import posthtmlWebp from 'posthtml-webp'; + +import { + compile, + execute, + getCompiler, + getErrors, + getModuleSource, + getWarnings, + readAsset, +} from './helpers'; + +describe("'process' option", () => { + it('should work with the "preprocessor" option', async () => { + const compiler = getCompiler('preprocessor.hbs', { + preprocessor: (content, loaderContext) => { + expect(typeof content).toBe('string'); + expect(loaderContext).toBeDefined(); + + let result; + + try { + result = Handlebars.compile(content)({ + firstname: 'Alexander', + lastname: 'Krasnoyarov', + }); + } catch (error) { + loaderContext.emitError(error); + + return content; + } + + return result; + }, + }); + const stats = await compile(compiler); + + expect(getModuleSource('./preprocessor.hbs', stats)).toMatchSnapshot( + 'module' + ); + expect( + execute(readAsset('main.bundle.js', compiler, stats)) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); + + it('should work with the "preprocessor" option #2', async () => { + const plugin = posthtmlWebp(); + const compiler = getCompiler('posthtml.html', { + preprocessor: (content, loaderContext) => { + expect(typeof content).toBe('string'); + expect(loaderContext).toBeDefined(); + + let result; + + try { + result = posthtml() + .use(plugin) + .process(content, { sync: true }); + } catch (error) { + loaderContext.emitError(error); + + return content; + } + + return result.html; + }, + }); + const stats = await compile(compiler); + + expect(getModuleSource('./posthtml.html', stats)).toMatchSnapshot('module'); + expect( + execute(readAsset('main.bundle.js', compiler, stats)) + ).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); +});