From c766f01d9418c0ed28300bb6bf16f185d0e7aee9 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 24 Feb 2021 17:48:06 +0300 Subject: [PATCH 1/8] fix: invalid URL for runtime helpers --- package-lock.json | 492 +++++++++++++++++- package.json | 1 + src/utils.js | 11 +- .../esModule-option.test.js.snap | 6 +- test/__snapshots__/loader.test.js.snap | 33 +- .../minimize-option.test.js.snap | 14 +- .../preprocessor-option.test.js.snap | 8 +- .../__snapshots__/sources-option.test.js.snap | 30 +- test/fixtures/entry.js | 1 + test/fixtures/template-html.html | 14 + test/helpers/getModuleSource.js | 4 +- test/loader.test.js | 32 ++ 12 files changed, 604 insertions(+), 42 deletions(-) create mode 100644 test/fixtures/entry.js create mode 100644 test/fixtures/template-html.html diff --git a/package-lock.json b/package-lock.json index 86f0b37c..8d99b64a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "requires": true, "packages": { "": { - "version": "2.0.0", + "version": "2.1.0", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -29,6 +29,7 @@ "eslint-config-prettier": "^7.2.0", "eslint-plugin-import": "^2.22.1", "handlebars": "^4.7.6", + "html-webpack-plugin": "^5.2.0", "husky": "^5.0.9", "jest": "^26.6.3", "lint-staged": "^10.5.4", @@ -2623,6 +2624,12 @@ "@types/node": "*" } }, + "node_modules/@types/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -3623,6 +3630,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -5285,6 +5298,56 @@ "node": ">=4.8" } }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/css-select/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -5754,6 +5817,15 @@ "node": ">=6.0.0" } }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, "node_modules/dom-serializer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", @@ -8276,6 +8348,44 @@ "node": ">=6" } }, + "node_modules/html-webpack-plugin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.2.0.tgz", + "integrity": "sha512-0wkVlJKq7edCN793gdLgdAm5m196qI2vb5SGXy4AtGOFB/lYKyS10+3Vkhe6Bo0acddAW3QVw+0ysgWoko/IEQ==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^5.0.0", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^2.0.0", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/htmlparser2": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", @@ -12684,6 +12794,15 @@ "gauge": "~1.2.5" } }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, "node_modules/null-check": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", @@ -13466,6 +13585,16 @@ "node": ">=10.13.0" } }, + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, "node_modules/pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", @@ -13919,6 +14048,130 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, + "node_modules/renderkid": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "dev": true, + "dependencies": { + "css-select": "^2.0.2", + "dom-converter": "^0.2", + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/renderkid/node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/renderkid/node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/renderkid/node_modules/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, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -15853,6 +16106,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -18621,6 +18880,12 @@ "@types/node": "*" } }, + "@types/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -19475,6 +19740,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -20809,6 +21080,54 @@ "which": "^1.2.9" } }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + }, + "dependencies": { + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "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" + }, + "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 + } + } + } + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -21182,6 +21501,15 @@ "esutils": "^2.0.2" } }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, "dom-serializer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", @@ -23195,6 +23523,33 @@ "terser": "^4.6.3" } }, + "html-webpack-plugin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.2.0.tgz", + "integrity": "sha512-0wkVlJKq7edCN793gdLgdAm5m196qI2vb5SGXy4AtGOFB/lYKyS10+3Vkhe6Bo0acddAW3QVw+0ysgWoko/IEQ==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^5.0.0", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^2.0.0", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^2.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, "htmlparser2": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", @@ -26690,6 +27045,15 @@ "gauge": "~1.2.5" } }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, "null-check": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", @@ -27299,6 +27663,16 @@ "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", "dev": true }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, "pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", @@ -27680,6 +28054,116 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, + "renderkid": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "dev": true, + "requires": { + "css-select": "^2.0.2", + "dom-converter": "^0.2", + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -29252,6 +29736,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", diff --git a/package.json b/package.json index 3def88de..2b088994 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "eslint-config-prettier": "^7.2.0", "eslint-plugin-import": "^2.22.1", "handlebars": "^4.7.6", + "html-webpack-plugin": "^5.2.0", "husky": "^5.0.9", "jest": "^26.6.3", "lint-staged": "^10.5.4", diff --git a/src/utils.js b/src/utils.js index 78d9015b..a12b1fdd 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,4 +1,5 @@ import path from 'path'; +import url from 'url'; import HtmlSourceError from './HtmlSourceError'; @@ -1100,13 +1101,13 @@ export function getImportCode(html, loaderContext, imports, options) { return ''; } - const stringifiedHelperRequest = `"${path - .relative(loaderContext.context, require.resolve('./runtime/getUrl.js')) - .replace(/\\/g, '/')}"`; + const fileURLToHelper = `"${url.pathToFileURL( + require.resolve('./runtime/getUrl.js') + )}"`; let code = options.esModule - ? `import ${GET_SOURCE_FROM_IMPORT_NAME} from ${stringifiedHelperRequest};\n` - : `var ${GET_SOURCE_FROM_IMPORT_NAME} = require(${stringifiedHelperRequest});\n`; + ? `import ${GET_SOURCE_FROM_IMPORT_NAME} from ${fileURLToHelper};\n` + : `var ${GET_SOURCE_FROM_IMPORT_NAME} = require(${fileURLToHelper});\n`; for (const item of imports) { const { importName, source } = item; diff --git a/test/__snapshots__/esModule-option.test.js.snap b/test/__snapshots__/esModule-option.test.js.snap index 967d76f8..3c924b0e 100644 --- a/test/__snapshots__/esModule-option.test.js.snap +++ b/test/__snapshots__/esModule-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'esModule' option should use a CommonJS export by default: errors 1`] = exports[`'esModule' option should use a CommonJS export by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -523,7 +523,7 @@ exports[`'esModule' option should use a CommonJS export when the value is "false exports[`'esModule' option should use a CommonJS export when the value is "false": module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -1042,7 +1042,7 @@ exports[`'esModule' option should use an ES module export when the value is "tru exports[`'esModule' option should use an ES module export when the value is "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index 0dd88bf4..2aca7028 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -4,7 +4,7 @@ exports[`loader should emit an error on broken HTML syntax: errors 1`] = `Array exports[`loader should emit an error on broken HTML syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -66,7 +66,7 @@ exports[`loader should pass queries to other loader: errors 1`] = `Array []`; exports[`loader should pass queries to other loader: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./icons.svg?color=%23BAAFDB%3F\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___, { hash: \\"#foo\\" }); @@ -79,11 +79,32 @@ exports[`loader should pass queries to other loader: result 1`] = `" + + + + + + Title + + +
Text
+ \\"image\\" + +" +`; + +exports[`loader should work with "html-webpack-plugin" plugin: warnings 1`] = `Array []`; + exports[`loader should work with "resolve.roots": errors 1`] = `Array []`; exports[`loader should work with "resolve.roots": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"/image2.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -134,7 +155,7 @@ exports[`loader should work with server-relative url: errors 1`] = `Array []`; exports[`loader should work with server-relative url: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"/nested/image3.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -156,7 +177,7 @@ exports[`loader should work with webpackIgnore comment: errors 1`] = `Array []`; exports[`loader should work with webpackIgnore comment: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -290,7 +311,7 @@ exports[`loader should work: errors 1`] = `Array []`; exports[`loader should work: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/minimize-option.test.js.snap b/test/__snapshots__/minimize-option.test.js.snap index a3a9ad1a..a6853319 100644 --- a/test/__snapshots__/minimize-option.test.js.snap +++ b/test/__snapshots__/minimize-option.test.js.snap @@ -4,7 +4,7 @@ exports[`"minimize" option should be turned off by default: errors 1`] = `Array exports[`"minimize" option should be turned off by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -523,7 +523,7 @@ exports[`"minimize" option should be turned off in "development" mode: errors 1` exports[`"minimize" option should be turned off in "development" mode: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1042,7 +1042,7 @@ exports[`"minimize" option should be turned on in "production" mode: errors 1`] exports[`"minimize" option should be turned on in "production" mode: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1126,7 +1126,7 @@ Parse Error: < img src=\\"image.png\\" >", exports[`"minimize" option should emit an error on broken HTML syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -1153,7 +1153,7 @@ exports[`"minimize" option should not work with a value equal to "false": errors exports[`"minimize" option should not work with a value equal to "false": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1672,7 +1672,7 @@ exports[`"minimize" option should support options for minimizer: errors 1`] = `A exports[`"minimize" option should support options for minimizer: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1766,7 +1766,7 @@ exports[`"minimize" option should work with a value equal to "true": errors 1`] exports[`"minimize" option should work with a value equal to "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/preprocessor-option.test.js.snap b/test/__snapshots__/preprocessor-option.test.js.snap index 3e5ee268..0ba73ecb 100644 --- a/test/__snapshots__/preprocessor-option.test.js.snap +++ b/test/__snapshots__/preprocessor-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'process' option should work with Async "preprocessor" Function option: exports[`'process' option should work with Async "preprocessor" Function option: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -27,7 +27,7 @@ exports[`'process' option should work with the "preprocessor" option #2: errors exports[`'process' option should work with the "preprocessor" option #2: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png.webp\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); // Module @@ -49,7 +49,7 @@ exports[`'process' option should work with the "preprocessor" option: errors 1`] exports[`'process' option should work with the "preprocessor" option: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -72,7 +72,7 @@ exports[`'process' option should work with the Async "preprocessor" Function opt exports[`'process' option should work with the Async "preprocessor" Function option #2: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png.webp\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); // Module diff --git a/test/__snapshots__/sources-option.test.js.snap b/test/__snapshots__/sources-option.test.js.snap index a4d99521..4fc72276 100644 --- a/test/__snapshots__/sources-option.test.js.snap +++ b/test/__snapshots__/sources-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'sources' option should allow to add more attributes ti default values: exports[`'sources' option should allow to add more attributes ti default values: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -972,7 +972,7 @@ HtmlSourceError: Bad value for attribute \\"srcset\\" on element \\"img\\": Must exports[`'sources' option should handle "sources" tags: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -1280,7 +1280,7 @@ exports[`'sources' option should handle all src sources in all HTML tags except exports[`'sources' option should handle all src sources in all HTML tags except img tag (testing filter option): module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./example.ogg\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./example.pdf\\", import.meta.url); @@ -1766,7 +1766,7 @@ exports[`'sources' option should handle all src sources in all HTML tags when ta exports[`'sources' option should handle all src sources in all HTML tags when tag is undefined: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -2271,7 +2271,7 @@ exports[`'sources' option should handle sources with a "boolean" notation equals exports[`'sources' option should handle sources with a "boolean" notation equals "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -3254,7 +3254,7 @@ exports[`'sources' option should work and override the "img" tag logic with "... exports[`'sources' option should work and override the "img" tag logic with "...": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./image.png?foo=bar,baz\\", import.meta.url); @@ -3761,7 +3761,7 @@ exports[`'sources' option should work by default with CommonJS module syntax and exports[`'sources' option should work by default with CommonJS module syntax and ES module syntax from other loader: module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -4280,7 +4280,7 @@ exports[`'sources' option should work by default with CommonJS module syntax: er exports[`'sources' option should work by default with CommonJS module syntax: module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"../../src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -4799,7 +4799,7 @@ exports[`'sources' option should work by default with ES module syntax from Comm exports[`'sources' option should work by default with ES module syntax from CommonJS module syntax from other loader: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -5318,7 +5318,7 @@ exports[`'sources' option should work by default with ES module syntax: errors 1 exports[`'sources' option should work by default with ES module syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -5837,7 +5837,7 @@ exports[`'sources' option should work by default: errors 1`] = `Array []`; exports[`'sources' option should work by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -6356,7 +6356,7 @@ exports[`'sources' option should work prefer source with tag over without: error exports[`'sources' option should work prefer source with tag over without: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./example.ogg\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./example.pdf\\", import.meta.url); @@ -6842,7 +6842,7 @@ exports[`'sources' option should work with "..." syntax: errors 1`] = `Array []` exports[`'sources' option should work with "..." syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -7361,7 +7361,7 @@ exports[`'sources' option should work with an "object" notations: errors 1`] = ` exports[`'sources' option should work with an "object" notations: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -7848,7 +7848,7 @@ exports[`'sources' option should work with an empty "object" notations: errors 1 exports[`'sources' option should work with an empty "object" notations: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"../../src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/fixtures/entry.js b/test/fixtures/entry.js new file mode 100644 index 00000000..3ba7e2e3 --- /dev/null +++ b/test/fixtures/entry.js @@ -0,0 +1 @@ +console.log('HERE'); \ No newline at end of file diff --git a/test/fixtures/template-html.html b/test/fixtures/template-html.html new file mode 100644 index 00000000..cbfdbc65 --- /dev/null +++ b/test/fixtures/template-html.html @@ -0,0 +1,14 @@ + + + + + + + Title + + +
Text
+ image + + \ No newline at end of file diff --git a/test/helpers/getModuleSource.js b/test/helpers/getModuleSource.js index 05448813..7cd0d932 100644 --- a/test/helpers/getModuleSource.js +++ b/test/helpers/getModuleSource.js @@ -1,7 +1,9 @@ export default (id, stats) => { const { modules } = stats.toJson({ source: true }); const module = modules.find((m) => m.name === id); - const { source } = module; + let { source } = module; + + source = source.replace(new RegExp(`${process.cwd()}/`, 'g'), '//'); return source; }; diff --git a/test/loader.test.js b/test/loader.test.js index 67287ffa..9cf4609f 100644 --- a/test/loader.test.js +++ b/test/loader.test.js @@ -1,6 +1,8 @@ import fs from 'fs'; import path from 'path'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; + import { compile, getCompiler, @@ -204,4 +206,34 @@ describe('loader', () => { expect(getWarnings(stats)).toMatchSnapshot('warnings'); expect(getErrors(stats)).toMatchSnapshot('errors'); }); + + it('should work with "html-webpack-plugin" plugin', async () => { + const compiler = getCompiler( + 'entry.js', + {}, + { + output: { + publicPath: 'http://example.com', + }, + module: { + rules: [ + { + test: /\.html$/i, + loader: path.resolve(__dirname, '../src'), + }, + ], + }, + plugins: [ + new HtmlWebpackPlugin({ + template: path.resolve(__dirname, 'fixtures/template-html.html'), + }), + ], + } + ); + const stats = await compile(compiler); + + expect(readAsset('index.html', compiler, stats)).toMatchSnapshot('result'); + expect(getWarnings(stats)).toMatchSnapshot('warnings'); + expect(getErrors(stats)).toMatchSnapshot('errors'); + }); }); From 9db0a654755fbd7400922daeb60353e8a55046ec Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 24 Feb 2021 18:27:29 +0300 Subject: [PATCH 2/8] fix: code --- src/utils.js | 37 +++++-------------- .../esModule-option.test.js.snap | 6 +-- test/__snapshots__/loader.test.js.snap | 12 +++--- .../minimize-option.test.js.snap | 14 +++---- .../preprocessor-option.test.js.snap | 8 ++-- .../__snapshots__/sources-option.test.js.snap | 30 +++++++-------- 6 files changed, 44 insertions(+), 63 deletions(-) diff --git a/src/utils.js b/src/utils.js index a12b1fdd..6a89ab2b 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,5 +1,4 @@ import path from 'path'; -import url from 'url'; import HtmlSourceError from './HtmlSourceError'; @@ -430,16 +429,6 @@ export function isUrlRequestable(url) { return true; } -const matchRelativePath = /^\.\.?[/\\]/; - -function isAbsolutePath(str) { - return matchNativeWin32Path.test(str) && path.win32.isAbsolute(str); -} - -function isRelativePath(str) { - return matchRelativePath.test(str); -} - export function stringifyRequest(context, request) { const splitted = request.split('!'); @@ -449,22 +438,13 @@ export function stringifyRequest(context, request) { // First, separate singlePath from query, because the query might contain paths again const splittedPart = part.match(/^(.*?)(\?.*)/); const query = splittedPart ? splittedPart[2] : ''; - let singlePath = splittedPart ? splittedPart[1] : part; + const singlePath = splittedPart ? splittedPart[1] : part; - if (isAbsolutePath(singlePath) && context) { - singlePath = path.relative(context, singlePath); - - if (isAbsolutePath(singlePath)) { - // If singlePath still matches an absolute path, singlePath was on a different drive than context. - // In this case, we leave the path platform-specific without replacing any separators. - // @see https://github.com/webpack/loader-utils/pull/14 - return singlePath + query; - } - - if (isRelativePath(singlePath) === false) { - // Ensure that the relative path starts at least with ./ otherwise it would be a request into the modules directory (like node_modules). - singlePath = `./${singlePath}`; - } + if ( + path.posix.isAbsolute(singlePath) || + path.win32.isAbsolute(singlePath) + ) { + return singlePath + query; } return singlePath.replace(/\\/g, '/') + query; @@ -1101,9 +1081,10 @@ export function getImportCode(html, loaderContext, imports, options) { return ''; } - const fileURLToHelper = `"${url.pathToFileURL( + const fileURLToHelper = stringifyRequest( + loaderContext.context, require.resolve('./runtime/getUrl.js') - )}"`; + ); let code = options.esModule ? `import ${GET_SOURCE_FROM_IMPORT_NAME} from ${fileURLToHelper};\n` diff --git a/test/__snapshots__/esModule-option.test.js.snap b/test/__snapshots__/esModule-option.test.js.snap index 3c924b0e..a45bcea8 100644 --- a/test/__snapshots__/esModule-option.test.js.snap +++ b/test/__snapshots__/esModule-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'esModule' option should use a CommonJS export by default: errors 1`] = exports[`'esModule' option should use a CommonJS export by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -523,7 +523,7 @@ exports[`'esModule' option should use a CommonJS export when the value is "false exports[`'esModule' option should use a CommonJS export when the value is "false": module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"//src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -1042,7 +1042,7 @@ exports[`'esModule' option should use an ES module export when the value is "tru exports[`'esModule' option should use an ES module export when the value is "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index 2aca7028..e655352d 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -4,7 +4,7 @@ exports[`loader should emit an error on broken HTML syntax: errors 1`] = `Array exports[`loader should emit an error on broken HTML syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -66,7 +66,7 @@ exports[`loader should pass queries to other loader: errors 1`] = `Array []`; exports[`loader should pass queries to other loader: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./icons.svg?color=%23BAAFDB%3F\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___, { hash: \\"#foo\\" }); @@ -104,7 +104,7 @@ exports[`loader should work with "resolve.roots": errors 1`] = `Array []`; exports[`loader should work with "resolve.roots": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"/image2.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -155,7 +155,7 @@ exports[`loader should work with server-relative url: errors 1`] = `Array []`; exports[`loader should work with server-relative url: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"/nested/image3.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -177,7 +177,7 @@ exports[`loader should work with webpackIgnore comment: errors 1`] = `Array []`; exports[`loader should work with webpackIgnore comment: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -311,7 +311,7 @@ exports[`loader should work: errors 1`] = `Array []`; exports[`loader should work: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/minimize-option.test.js.snap b/test/__snapshots__/minimize-option.test.js.snap index a6853319..a60f84f7 100644 --- a/test/__snapshots__/minimize-option.test.js.snap +++ b/test/__snapshots__/minimize-option.test.js.snap @@ -4,7 +4,7 @@ exports[`"minimize" option should be turned off by default: errors 1`] = `Array exports[`"minimize" option should be turned off by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -523,7 +523,7 @@ exports[`"minimize" option should be turned off in "development" mode: errors 1` exports[`"minimize" option should be turned off in "development" mode: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1042,7 +1042,7 @@ exports[`"minimize" option should be turned on in "production" mode: errors 1`] exports[`"minimize" option should be turned on in "production" mode: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1126,7 +1126,7 @@ Parse Error: < img src=\\"image.png\\" >", exports[`"minimize" option should emit an error on broken HTML syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -1153,7 +1153,7 @@ exports[`"minimize" option should not work with a value equal to "false": errors exports[`"minimize" option should not work with a value equal to "false": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1672,7 +1672,7 @@ exports[`"minimize" option should support options for minimizer: errors 1`] = `A exports[`"minimize" option should support options for minimizer: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1766,7 +1766,7 @@ exports[`"minimize" option should work with a value equal to "true": errors 1`] exports[`"minimize" option should work with a value equal to "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/preprocessor-option.test.js.snap b/test/__snapshots__/preprocessor-option.test.js.snap index 0ba73ecb..85d6433c 100644 --- a/test/__snapshots__/preprocessor-option.test.js.snap +++ b/test/__snapshots__/preprocessor-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'process' option should work with Async "preprocessor" Function option: exports[`'process' option should work with Async "preprocessor" Function option: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -27,7 +27,7 @@ exports[`'process' option should work with the "preprocessor" option #2: errors exports[`'process' option should work with the "preprocessor" option #2: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png.webp\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); // Module @@ -49,7 +49,7 @@ exports[`'process' option should work with the "preprocessor" option: errors 1`] exports[`'process' option should work with the "preprocessor" option: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -72,7 +72,7 @@ exports[`'process' option should work with the Async "preprocessor" Function opt exports[`'process' option should work with the Async "preprocessor" Function option #2: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png.webp\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); // Module diff --git a/test/__snapshots__/sources-option.test.js.snap b/test/__snapshots__/sources-option.test.js.snap index 4fc72276..cb615d21 100644 --- a/test/__snapshots__/sources-option.test.js.snap +++ b/test/__snapshots__/sources-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'sources' option should allow to add more attributes ti default values: exports[`'sources' option should allow to add more attributes ti default values: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -972,7 +972,7 @@ HtmlSourceError: Bad value for attribute \\"srcset\\" on element \\"img\\": Must exports[`'sources' option should handle "sources" tags: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -1280,7 +1280,7 @@ exports[`'sources' option should handle all src sources in all HTML tags except exports[`'sources' option should handle all src sources in all HTML tags except img tag (testing filter option): module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./example.ogg\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./example.pdf\\", import.meta.url); @@ -1766,7 +1766,7 @@ exports[`'sources' option should handle all src sources in all HTML tags when ta exports[`'sources' option should handle all src sources in all HTML tags when tag is undefined: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -2271,7 +2271,7 @@ exports[`'sources' option should handle sources with a "boolean" notation equals exports[`'sources' option should handle sources with a "boolean" notation equals "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -3254,7 +3254,7 @@ exports[`'sources' option should work and override the "img" tag logic with "... exports[`'sources' option should work and override the "img" tag logic with "...": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./image.png?foo=bar,baz\\", import.meta.url); @@ -3761,7 +3761,7 @@ exports[`'sources' option should work by default with CommonJS module syntax and exports[`'sources' option should work by default with CommonJS module syntax and ES module syntax from other loader: module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"//src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -4280,7 +4280,7 @@ exports[`'sources' option should work by default with CommonJS module syntax: er exports[`'sources' option should work by default with CommonJS module syntax: module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"//src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -4799,7 +4799,7 @@ exports[`'sources' option should work by default with ES module syntax from Comm exports[`'sources' option should work by default with ES module syntax from CommonJS module syntax from other loader: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -5318,7 +5318,7 @@ exports[`'sources' option should work by default with ES module syntax: errors 1 exports[`'sources' option should work by default with ES module syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -5837,7 +5837,7 @@ exports[`'sources' option should work by default: errors 1`] = `Array []`; exports[`'sources' option should work by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -6356,7 +6356,7 @@ exports[`'sources' option should work prefer source with tag over without: error exports[`'sources' option should work prefer source with tag over without: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./example.ogg\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./example.pdf\\", import.meta.url); @@ -6842,7 +6842,7 @@ exports[`'sources' option should work with "..." syntax: errors 1`] = `Array []` exports[`'sources' option should work with "..." syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -7361,7 +7361,7 @@ exports[`'sources' option should work with an "object" notations: errors 1`] = ` exports[`'sources' option should work with an "object" notations: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -7848,7 +7848,7 @@ exports[`'sources' option should work with an empty "object" notations: errors 1 exports[`'sources' option should work with an empty "object" notations: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); From 4658f7e4481bd71bcba4b7cedac5420d0d923d9e Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 24 Feb 2021 18:28:24 +0300 Subject: [PATCH 3/8] test: fix --- test/helpers/getModuleSource.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/helpers/getModuleSource.js b/test/helpers/getModuleSource.js index 7cd0d932..96fc9679 100644 --- a/test/helpers/getModuleSource.js +++ b/test/helpers/getModuleSource.js @@ -3,7 +3,10 @@ export default (id, stats) => { const module = modules.find((m) => m.name === id); let { source } = module; - source = source.replace(new RegExp(`${process.cwd()}/`, 'g'), '//'); + source = source.replace( + new RegExp(`${process.cwd().replace(/\\/g, '/')}/`, 'g'), + '//' + ); return source; }; From f2d1dfcbfe8cf36c1fff6f7ad92460e9e61d48fe Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 24 Feb 2021 19:04:17 +0300 Subject: [PATCH 4/8] test: fix --- src/utils.js | 6 ++-- .../esModule-option.test.js.snap | 6 ++-- test/__snapshots__/loader.test.js.snap | 12 ++++---- .../minimize-option.test.js.snap | 14 ++++----- .../preprocessor-option.test.js.snap | 8 ++--- .../__snapshots__/sources-option.test.js.snap | 30 +++++++++---------- test/helpers/getModuleSource.js | 6 ++-- 7 files changed, 42 insertions(+), 40 deletions(-) diff --git a/src/utils.js b/src/utils.js index 6a89ab2b..9409aaea 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,4 +1,5 @@ import path from 'path'; +import { pathToFileURL } from 'url'; import HtmlSourceError from './HtmlSourceError'; @@ -1081,10 +1082,9 @@ export function getImportCode(html, loaderContext, imports, options) { return ''; } - const fileURLToHelper = stringifyRequest( - loaderContext.context, + const fileURLToHelper = `"${pathToFileURL( require.resolve('./runtime/getUrl.js') - ); + )}"`; let code = options.esModule ? `import ${GET_SOURCE_FROM_IMPORT_NAME} from ${fileURLToHelper};\n` diff --git a/test/__snapshots__/esModule-option.test.js.snap b/test/__snapshots__/esModule-option.test.js.snap index a45bcea8..1af0ffd3 100644 --- a/test/__snapshots__/esModule-option.test.js.snap +++ b/test/__snapshots__/esModule-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'esModule' option should use a CommonJS export by default: errors 1`] = exports[`'esModule' option should use a CommonJS export by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -523,7 +523,7 @@ exports[`'esModule' option should use a CommonJS export when the value is "false exports[`'esModule' option should use a CommonJS export when the value is "false": module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"//src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -1042,7 +1042,7 @@ exports[`'esModule' option should use an ES module export when the value is "tru exports[`'esModule' option should use an ES module export when the value is "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index e655352d..4fde771f 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -4,7 +4,7 @@ exports[`loader should emit an error on broken HTML syntax: errors 1`] = `Array exports[`loader should emit an error on broken HTML syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -66,7 +66,7 @@ exports[`loader should pass queries to other loader: errors 1`] = `Array []`; exports[`loader should pass queries to other loader: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./icons.svg?color=%23BAAFDB%3F\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___, { hash: \\"#foo\\" }); @@ -104,7 +104,7 @@ exports[`loader should work with "resolve.roots": errors 1`] = `Array []`; exports[`loader should work with "resolve.roots": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"/image2.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -155,7 +155,7 @@ exports[`loader should work with server-relative url: errors 1`] = `Array []`; exports[`loader should work with server-relative url: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"/nested/image3.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -177,7 +177,7 @@ exports[`loader should work with webpackIgnore comment: errors 1`] = `Array []`; exports[`loader should work with webpackIgnore comment: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -311,7 +311,7 @@ exports[`loader should work: errors 1`] = `Array []`; exports[`loader should work: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/minimize-option.test.js.snap b/test/__snapshots__/minimize-option.test.js.snap index a60f84f7..2aaf995d 100644 --- a/test/__snapshots__/minimize-option.test.js.snap +++ b/test/__snapshots__/minimize-option.test.js.snap @@ -4,7 +4,7 @@ exports[`"minimize" option should be turned off by default: errors 1`] = `Array exports[`"minimize" option should be turned off by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -523,7 +523,7 @@ exports[`"minimize" option should be turned off in "development" mode: errors 1` exports[`"minimize" option should be turned off in "development" mode: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1042,7 +1042,7 @@ exports[`"minimize" option should be turned on in "production" mode: errors 1`] exports[`"minimize" option should be turned on in "production" mode: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1126,7 +1126,7 @@ Parse Error: < img src=\\"image.png\\" >", exports[`"minimize" option should emit an error on broken HTML syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -1153,7 +1153,7 @@ exports[`"minimize" option should not work with a value equal to "false": errors exports[`"minimize" option should not work with a value equal to "false": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1672,7 +1672,7 @@ exports[`"minimize" option should support options for minimizer: errors 1`] = `A exports[`"minimize" option should support options for minimizer: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1766,7 +1766,7 @@ exports[`"minimize" option should work with a value equal to "true": errors 1`] exports[`"minimize" option should work with a value equal to "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/preprocessor-option.test.js.snap b/test/__snapshots__/preprocessor-option.test.js.snap index 85d6433c..abc85976 100644 --- a/test/__snapshots__/preprocessor-option.test.js.snap +++ b/test/__snapshots__/preprocessor-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'process' option should work with Async "preprocessor" Function option: exports[`'process' option should work with Async "preprocessor" Function option: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -27,7 +27,7 @@ exports[`'process' option should work with the "preprocessor" option #2: errors exports[`'process' option should work with the "preprocessor" option #2: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png.webp\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); // Module @@ -49,7 +49,7 @@ exports[`'process' option should work with the "preprocessor" option: errors 1`] exports[`'process' option should work with the "preprocessor" option: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -72,7 +72,7 @@ exports[`'process' option should work with the Async "preprocessor" Function opt exports[`'process' option should work with the Async "preprocessor" Function option #2: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png.webp\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); // Module diff --git a/test/__snapshots__/sources-option.test.js.snap b/test/__snapshots__/sources-option.test.js.snap index cb615d21..857ee3c7 100644 --- a/test/__snapshots__/sources-option.test.js.snap +++ b/test/__snapshots__/sources-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'sources' option should allow to add more attributes ti default values: exports[`'sources' option should allow to add more attributes ti default values: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -972,7 +972,7 @@ HtmlSourceError: Bad value for attribute \\"srcset\\" on element \\"img\\": Must exports[`'sources' option should handle "sources" tags: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -1280,7 +1280,7 @@ exports[`'sources' option should handle all src sources in all HTML tags except exports[`'sources' option should handle all src sources in all HTML tags except img tag (testing filter option): module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./example.ogg\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./example.pdf\\", import.meta.url); @@ -1766,7 +1766,7 @@ exports[`'sources' option should handle all src sources in all HTML tags when ta exports[`'sources' option should handle all src sources in all HTML tags when tag is undefined: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -2271,7 +2271,7 @@ exports[`'sources' option should handle sources with a "boolean" notation equals exports[`'sources' option should handle sources with a "boolean" notation equals "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -3254,7 +3254,7 @@ exports[`'sources' option should work and override the "img" tag logic with "... exports[`'sources' option should work and override the "img" tag logic with "...": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./image.png?foo=bar,baz\\", import.meta.url); @@ -3761,7 +3761,7 @@ exports[`'sources' option should work by default with CommonJS module syntax and exports[`'sources' option should work by default with CommonJS module syntax and ES module syntax from other loader: module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"//src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -4280,7 +4280,7 @@ exports[`'sources' option should work by default with CommonJS module syntax: er exports[`'sources' option should work by default with CommonJS module syntax: module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"//src/runtime/getUrl.js\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -4799,7 +4799,7 @@ exports[`'sources' option should work by default with ES module syntax from Comm exports[`'sources' option should work by default with ES module syntax from CommonJS module syntax from other loader: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -5318,7 +5318,7 @@ exports[`'sources' option should work by default with ES module syntax: errors 1 exports[`'sources' option should work by default with ES module syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -5837,7 +5837,7 @@ exports[`'sources' option should work by default: errors 1`] = `Array []`; exports[`'sources' option should work by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -6356,7 +6356,7 @@ exports[`'sources' option should work prefer source with tag over without: error exports[`'sources' option should work prefer source with tag over without: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./example.ogg\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./example.pdf\\", import.meta.url); @@ -6842,7 +6842,7 @@ exports[`'sources' option should work with "..." syntax: errors 1`] = `Array []` exports[`'sources' option should work with "..." syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -7361,7 +7361,7 @@ exports[`'sources' option should work with an "object" notations: errors 1`] = ` exports[`'sources' option should work with an "object" notations: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -7848,7 +7848,7 @@ exports[`'sources' option should work with an empty "object" notations: errors 1 exports[`'sources' option should work with an empty "object" notations: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"//src/runtime/getUrl.js\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/helpers/getModuleSource.js b/test/helpers/getModuleSource.js index 96fc9679..be9ead2f 100644 --- a/test/helpers/getModuleSource.js +++ b/test/helpers/getModuleSource.js @@ -1,11 +1,13 @@ +import { pathToFileURL } from 'url'; + export default (id, stats) => { const { modules } = stats.toJson({ source: true }); const module = modules.find((m) => m.name === id); let { source } = module; source = source.replace( - new RegExp(`${process.cwd().replace(/\\/g, '/')}/`, 'g'), - '//' + pathToFileURL(require.resolve('../../src/runtime/getUrl.js')), + 'file:////' ); return source; From 7eb0543c4ca8537752ec32b89a6821c5fb7a897a Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 24 Feb 2021 19:20:17 +0300 Subject: [PATCH 5/8] refactor: code --- src/plugins/sources-plugin.js | 6 +----- src/utils.js | 37 +++++------------------------------ 2 files changed, 6 insertions(+), 37 deletions(-) diff --git a/src/plugins/sources-plugin.js b/src/plugins/sources-plugin.js index 633cb826..8bdedc3b 100644 --- a/src/plugins/sources-plugin.js +++ b/src/plugins/sources-plugin.js @@ -5,7 +5,6 @@ import { getFilter, normalizeUrl, requestify, - stringifyRequest, webpackIgnoreCommentRegexp, } from '../utils'; @@ -158,10 +157,7 @@ export default (options) => importName = `___HTML_LOADER_IMPORT_${imports.size}___`; imports.set(importKey, importName); - options.imports.push({ - importName, - source: stringifyRequest(options.context, newUrl), - }); + options.imports.push({ importName, source: newUrl }); } const replacementKey = JSON.stringify({ newUrl, isValueQuoted, hash }); diff --git a/src/utils.js b/src/utils.js index 9409aaea..d220788f 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,4 +1,3 @@ -import path from 'path'; import { pathToFileURL } from 'url'; import HtmlSourceError from './HtmlSourceError'; @@ -430,30 +429,6 @@ export function isUrlRequestable(url) { return true; } -export function stringifyRequest(context, request) { - const splitted = request.split('!'); - - return JSON.stringify( - splitted - .map((part) => { - // First, separate singlePath from query, because the query might contain paths again - const splittedPart = part.match(/^(.*?)(\?.*)/); - const query = splittedPart ? splittedPart[2] : ''; - const singlePath = splittedPart ? splittedPart[1] : part; - - if ( - path.posix.isAbsolute(singlePath) || - path.win32.isAbsolute(singlePath) - ) { - return singlePath + query; - } - - return singlePath.replace(/\\/g, '/') + query; - }) - .join('!') - ); -} - function isProductionMode(loaderContext) { return loaderContext.mode === 'production' || !loaderContext.mode; } @@ -1082,20 +1057,18 @@ export function getImportCode(html, loaderContext, imports, options) { return ''; } - const fileURLToHelper = `"${pathToFileURL( - require.resolve('./runtime/getUrl.js') - )}"`; + const fileURLToHelper = pathToFileURL(require.resolve('./runtime/getUrl.js')); let code = options.esModule - ? `import ${GET_SOURCE_FROM_IMPORT_NAME} from ${fileURLToHelper};\n` - : `var ${GET_SOURCE_FROM_IMPORT_NAME} = require(${fileURLToHelper});\n`; + ? `import ${GET_SOURCE_FROM_IMPORT_NAME} from "${fileURLToHelper}";\n` + : `var ${GET_SOURCE_FROM_IMPORT_NAME} = require("${fileURLToHelper}");\n`; for (const item of imports) { const { importName, source } = item; code += options.esModule - ? `var ${importName} = new URL(${source}, import.meta.url);\n` - : `var ${importName} = require(${source});\n`; + ? `var ${importName} = new URL("${source}", import.meta.url);\n` + : `var ${importName} = require("${source}");\n`; } return `// Imports\n${code}`; From e07a3713bba63c711c89baeb1fa13fa13386e545 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 24 Feb 2021 19:25:50 +0300 Subject: [PATCH 6/8] test: update --- test/__snapshots__/loader.test.js.snap | 6 ------ test/loader.test.js | 19 ------------------- 2 files changed, 25 deletions(-) diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index 4fde771f..86927da1 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -122,12 +122,6 @@ exports[`loader should work with "resolve.roots": result 1`] = ` exports[`loader should work with "resolve.roots": warnings 1`] = `Array []`; -exports[`loader should work with absolute paths: errors 1`] = `Array []`; - -exports[`loader should work with absolute paths: result 1`] = `""`; - -exports[`loader should work with absolute paths: warnings 1`] = `Array []`; - exports[`loader should work with an empty file: errors 1`] = `Array []`; exports[`loader should work with an empty file: module 1`] = ` diff --git a/test/loader.test.js b/test/loader.test.js index 9cf4609f..0c3b9e67 100644 --- a/test/loader.test.js +++ b/test/loader.test.js @@ -117,25 +117,6 @@ describe('loader', () => { expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should work with absolute paths', async () => { - const file = path.resolve(__dirname, 'fixtures', 'generated-1.html'); - const absolutePath = path.resolve(__dirname, 'fixtures', 'image.png'); - - fs.writeFileSync(file, ``); - - const compiler = getCompiler('absolute.js'); - const stats = await compile(compiler); - - // expect(getModuleSource('./generated-1.html', 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 file protocol', async () => { const file = path.resolve(__dirname, 'fixtures', 'generated-2.html'); const absolutePath = path.resolve(__dirname, 'fixtures', 'image.png'); From 89bb89b625d377ce4349145e509bb148f9e2d5e2 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 24 Feb 2021 19:26:45 +0300 Subject: [PATCH 7/8] chore: update `.gitignore` --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index eacf3de0..76df9327 100644 --- a/.gitignore +++ b/.gitignore @@ -20,5 +20,4 @@ Thumbs.db .vscode *.sublime-project *.sublime-workspace -/test/fixtures/generated-1.html /test/fixtures/generated-2.html From 83e19886c58ce7ade40e14a18fceaaeb95d8c929 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Wed, 24 Feb 2021 19:32:33 +0300 Subject: [PATCH 8/8] test: update --- .../esModule-option.test.js.snap | 6 ++-- test/__snapshots__/loader.test.js.snap | 12 ++++---- .../minimize-option.test.js.snap | 14 ++++----- .../preprocessor-option.test.js.snap | 8 ++--- .../__snapshots__/sources-option.test.js.snap | 30 +++++++++---------- test/helpers/getModuleSource.js | 5 +--- 6 files changed, 36 insertions(+), 39 deletions(-) diff --git a/test/__snapshots__/esModule-option.test.js.snap b/test/__snapshots__/esModule-option.test.js.snap index 1af0ffd3..cb6ce455 100644 --- a/test/__snapshots__/esModule-option.test.js.snap +++ b/test/__snapshots__/esModule-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'esModule' option should use a CommonJS export by default: errors 1`] = exports[`'esModule' option should use a CommonJS export by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -523,7 +523,7 @@ exports[`'esModule' option should use a CommonJS export when the value is "false exports[`'esModule' option should use a CommonJS export when the value is "false": module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file://///src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -1042,7 +1042,7 @@ exports[`'esModule' option should use an ES module export when the value is "tru exports[`'esModule' option should use an ES module export when the value is "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/loader.test.js.snap b/test/__snapshots__/loader.test.js.snap index 86927da1..657f6460 100644 --- a/test/__snapshots__/loader.test.js.snap +++ b/test/__snapshots__/loader.test.js.snap @@ -4,7 +4,7 @@ exports[`loader should emit an error on broken HTML syntax: errors 1`] = `Array exports[`loader should emit an error on broken HTML syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -66,7 +66,7 @@ exports[`loader should pass queries to other loader: errors 1`] = `Array []`; exports[`loader should pass queries to other loader: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./icons.svg?color=%23BAAFDB%3F\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___, { hash: \\"#foo\\" }); @@ -104,7 +104,7 @@ exports[`loader should work with "resolve.roots": errors 1`] = `Array []`; exports[`loader should work with "resolve.roots": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"/image2.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -149,7 +149,7 @@ exports[`loader should work with server-relative url: errors 1`] = `Array []`; exports[`loader should work with server-relative url: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"/nested/image3.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -171,7 +171,7 @@ exports[`loader should work with webpackIgnore comment: errors 1`] = `Array []`; exports[`loader should work with webpackIgnore comment: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -305,7 +305,7 @@ exports[`loader should work: errors 1`] = `Array []`; exports[`loader should work: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/minimize-option.test.js.snap b/test/__snapshots__/minimize-option.test.js.snap index 2aaf995d..591ad032 100644 --- a/test/__snapshots__/minimize-option.test.js.snap +++ b/test/__snapshots__/minimize-option.test.js.snap @@ -4,7 +4,7 @@ exports[`"minimize" option should be turned off by default: errors 1`] = `Array exports[`"minimize" option should be turned off by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -523,7 +523,7 @@ exports[`"minimize" option should be turned off in "development" mode: errors 1` exports[`"minimize" option should be turned off in "development" mode: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1042,7 +1042,7 @@ exports[`"minimize" option should be turned on in "production" mode: errors 1`] exports[`"minimize" option should be turned on in "production" mode: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1126,7 +1126,7 @@ Parse Error: < img src=\\"image.png\\" >", exports[`"minimize" option should emit an error on broken HTML syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -1153,7 +1153,7 @@ exports[`"minimize" option should not work with a value equal to "false": errors exports[`"minimize" option should not work with a value equal to "false": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1672,7 +1672,7 @@ exports[`"minimize" option should support options for minimizer: errors 1`] = `A exports[`"minimize" option should support options for minimizer: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -1766,7 +1766,7 @@ exports[`"minimize" option should work with a value equal to "true": errors 1`] exports[`"minimize" option should work with a value equal to "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/__snapshots__/preprocessor-option.test.js.snap b/test/__snapshots__/preprocessor-option.test.js.snap index abc85976..1b78bcc3 100644 --- a/test/__snapshots__/preprocessor-option.test.js.snap +++ b/test/__snapshots__/preprocessor-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'process' option should work with Async "preprocessor" Function option: exports[`'process' option should work with Async "preprocessor" Function option: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -27,7 +27,7 @@ exports[`'process' option should work with the "preprocessor" option #2: errors exports[`'process' option should work with the "preprocessor" option #2: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png.webp\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); // Module @@ -49,7 +49,7 @@ exports[`'process' option should work with the "preprocessor" option: errors 1`] exports[`'process' option should work with the "preprocessor" option: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -72,7 +72,7 @@ exports[`'process' option should work with the Async "preprocessor" Function opt exports[`'process' option should work with the Async "preprocessor" Function option #2: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png.webp\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); // Module diff --git a/test/__snapshots__/sources-option.test.js.snap b/test/__snapshots__/sources-option.test.js.snap index 857ee3c7..19fef1a1 100644 --- a/test/__snapshots__/sources-option.test.js.snap +++ b/test/__snapshots__/sources-option.test.js.snap @@ -4,7 +4,7 @@ exports[`'sources' option should allow to add more attributes ti default values: exports[`'sources' option should allow to add more attributes ti default values: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -972,7 +972,7 @@ HtmlSourceError: Bad value for attribute \\"srcset\\" on element \\"img\\": Must exports[`'sources' option should handle "sources" tags: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); // Module var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___); @@ -1280,7 +1280,7 @@ exports[`'sources' option should handle all src sources in all HTML tags except exports[`'sources' option should handle all src sources in all HTML tags except img tag (testing filter option): module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./example.ogg\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./example.pdf\\", import.meta.url); @@ -1766,7 +1766,7 @@ exports[`'sources' option should handle all src sources in all HTML tags when ta exports[`'sources' option should handle all src sources in all HTML tags when tag is undefined: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -2271,7 +2271,7 @@ exports[`'sources' option should handle sources with a "boolean" notation equals exports[`'sources' option should handle sources with a "boolean" notation equals "true": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -3254,7 +3254,7 @@ exports[`'sources' option should work and override the "img" tag logic with "... exports[`'sources' option should work and override the "img" tag logic with "...": module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./image.png?foo=bar,baz\\", import.meta.url); @@ -3761,7 +3761,7 @@ exports[`'sources' option should work by default with CommonJS module syntax and exports[`'sources' option should work by default with CommonJS module syntax and ES module syntax from other loader: module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file://///src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -4280,7 +4280,7 @@ exports[`'sources' option should work by default with CommonJS module syntax: er exports[`'sources' option should work by default with CommonJS module syntax: module 1`] = ` "// Imports -var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file:////\\"); +var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = require(\\"file://///src/runtime/getUrl.js\\"); var ___HTML_LOADER_IMPORT_0___ = require(\\"./image.png\\"); var ___HTML_LOADER_IMPORT_1___ = require(\\"/image.png\\"); var ___HTML_LOADER_IMPORT_2___ = require(\\"aliasImg\\"); @@ -4799,7 +4799,7 @@ exports[`'sources' option should work by default with ES module syntax from Comm exports[`'sources' option should work by default with ES module syntax from CommonJS module syntax from other loader: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -5318,7 +5318,7 @@ exports[`'sources' option should work by default with ES module syntax: errors 1 exports[`'sources' option should work by default with ES module syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -5837,7 +5837,7 @@ exports[`'sources' option should work by default: errors 1`] = `Array []`; exports[`'sources' option should work by default: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -6356,7 +6356,7 @@ exports[`'sources' option should work prefer source with tag over without: error exports[`'sources' option should work prefer source with tag over without: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./script.file.js\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"./example.ogg\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"./example.pdf\\", import.meta.url); @@ -6842,7 +6842,7 @@ exports[`'sources' option should work with "..." syntax: errors 1`] = `Array []` exports[`'sources' option should work with "..." syntax: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -7361,7 +7361,7 @@ exports[`'sources' option should work with an "object" notations: errors 1`] = ` exports[`'sources' option should work with an "object" notations: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); @@ -7848,7 +7848,7 @@ exports[`'sources' option should work with an empty "object" notations: errors 1 exports[`'sources' option should work with an empty "object" notations: module 1`] = ` "// Imports -import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file:////\\"; +import ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ from \\"file://///src/runtime/getUrl.js\\"; var ___HTML_LOADER_IMPORT_0___ = new URL(\\"./image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_1___ = new URL(\\"/image.png\\", import.meta.url); var ___HTML_LOADER_IMPORT_2___ = new URL(\\"aliasImg\\", import.meta.url); diff --git a/test/helpers/getModuleSource.js b/test/helpers/getModuleSource.js index be9ead2f..9fd93b04 100644 --- a/test/helpers/getModuleSource.js +++ b/test/helpers/getModuleSource.js @@ -5,10 +5,7 @@ export default (id, stats) => { const module = modules.find((m) => m.name === id); let { source } = module; - source = source.replace( - pathToFileURL(require.resolve('../../src/runtime/getUrl.js')), - 'file:////' - ); + source = source.replace(pathToFileURL(process.cwd()), 'file:////'); return source; };