From fae5edae24e29ede1b3597385965a217531bfaa7 Mon Sep 17 00:00:00 2001 From: cap-Bernardito Date: Fri, 19 Feb 2021 17:57:15 +0300 Subject: [PATCH 1/2] refactor: removed `parse5-sax-parser` package in favor `parse5` --- package-lock.json | 20 +-- package.json | 2 +- src/parse5-traverse.js | 30 ++++ src/plugins/sources-plugin.js | 14 +- .../esModule-option.test.js.snap | 27 +++- test/__snapshots__/loader.test.js.snap | 9 +- .../minimize-option.test.js.snap | 39 +++-- .../__snapshots__/sources-option.test.js.snap | 135 ++++++++++++++---- test/fixtures/simple.html | 6 + 9 files changed, 208 insertions(+), 74 deletions(-) create mode 100644 src/parse5-traverse.js diff --git a/package-lock.json b/package-lock.json index 9ad7c85e..a0464ff8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,12 +5,12 @@ "requires": true, "packages": { "": { - "version": "1.3.2", + "version": "2.0.0", "hasInstallScript": true, "license": "MIT", "dependencies": { "html-minifier-terser": "^5.1.1", - "parse5-sax-parser": "^6.0.1" + "parse5": "^6.0.1" }, "devDependencies": { "@babel/cli": "^7.12.10", @@ -13044,14 +13044,6 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "node_modules/parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dependencies": { - "parse5": "^6.0.1" - } - }, "node_modules/pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", @@ -26975,14 +26967,6 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "requires": { - "parse5": "^6.0.1" - } - }, "pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", diff --git a/package.json b/package.json index bc97a46b..84ec498c 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ }, "dependencies": { "html-minifier-terser": "^5.1.1", - "parse5-sax-parser": "^6.0.1" + "parse5": "^6.0.1" }, "devDependencies": { "@babel/cli": "^7.12.10", diff --git a/src/parse5-traverse.js b/src/parse5-traverse.js new file mode 100644 index 00000000..16c776a3 --- /dev/null +++ b/src/parse5-traverse.js @@ -0,0 +1,30 @@ +const traverse = (root, callback) => { + const visit = (node, parent) => { + let res; + + if (!node) { + return; + } + + if (callback) { + res = callback(node, parent); + } + + let { childNodes } = node; + + // in case a