diff options
Diffstat (limited to 'config/webpack/plugins/inject-script-webpack-plugin')
| -rw-r--r-- | config/webpack/plugins/inject-script-webpack-plugin/get-injection-code.js | 19 | ||||
| -rw-r--r-- | config/webpack/plugins/inject-script-webpack-plugin/index.js | 2 |
2 files changed, 19 insertions, 2 deletions
diff --git a/config/webpack/plugins/inject-script-webpack-plugin/get-injection-code.js b/config/webpack/plugins/inject-script-webpack-plugin/get-injection-code.js index 6f3c9b3..2993c44 100644 --- a/config/webpack/plugins/inject-script-webpack-plugin/get-injection-code.js +++ b/config/webpack/plugins/inject-script-webpack-plugin/get-injection-code.js @@ -1 +1,18 @@ -module.exports = code => `(()=>{const o=new MutationObserver(()=>{let t=document.querySelector("head > script:nth-child(54)");if(t){let e=\`(()=>{${code.replaceAll("`","\\`")}})();\`;null==t.getAttribute("data-replaced")?(t.innerHTML=e,t.setAttribute("data-replaced","")):t.innerHTML+=e,o.disconnect()}});o.observe(document,{childList:!0,subtree:!0});})();`; +module.exports.getInjectionCode = code => { + const escapeSequences = [["\b", "\\b"], + ["\f", "\\f"], + ["\n", "\\n"], + ["\r", "\\r"], + ["\t", "\\t"], + ["\v", "\\v"] + ]; + let finalCode = code.replaceAll("`","\\`"); + + for (const escapeSequence of escapeSequences) { + finalCode = finalCode + .replaceAll(escapeSequence[1], "\\" + escapeSequence[1]) + .replaceAll(escapeSequence[0], escapeSequence[1]); + } + + return `(()=>{const o=new MutationObserver(()=>{let t=document.querySelector("head > script:nth-child(54)");if(t){let e=\`(()=>{${finalCode}})();\`;null==t.getAttribute("data-replaced")?(t.innerHTML=e,t.setAttribute("data-replaced","")):t.innerHTML+=e,o.disconnect()}});o.observe(document,{childList:!0,subtree:!0});})();`; +}; diff --git a/config/webpack/plugins/inject-script-webpack-plugin/index.js b/config/webpack/plugins/inject-script-webpack-plugin/index.js index b7b5940..a0ee1f7 100644 --- a/config/webpack/plugins/inject-script-webpack-plugin/index.js +++ b/config/webpack/plugins/inject-script-webpack-plugin/index.js @@ -1,7 +1,7 @@ const { sources } = require("webpack"); const terser = require("terser"); -const getInjectionCode = webpackRequire("plugins/inject-script-webpack-plugin/get-injection-code"); +const { getInjectionCode } = webpackRequire("plugins/inject-script-webpack-plugin/get-injection-code"); class InjectScriptPlugin { apply(compiler) { |
