diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2024-03-12 18:39:36 +0530 |
|---|---|---|
| committer | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2024-03-12 18:39:36 +0530 |
| commit | 7ea487be4aaf8f3b3047e2a7b3c1da80744f258b (patch) | |
| tree | a4f91d979fe838aefe2ab8c4cecd9037b879e0aa /config/webpack/utils | |
| parent | 95becf369822cbb74f4cefb5658f3ff97e164d6e (diff) | |
| download | banglar-bhumi-utils-7ea487be4aaf8f3b3047e2a7b3c1da80744f258b.tar.gz banglar-bhumi-utils-7ea487be4aaf8f3b3047e2a7b3c1da80744f258b.zip | |
Passing url of extension assets to the injected javascript code using data arguments on the script tag.
Diffstat (limited to 'config/webpack/utils')
| -rw-r--r-- | config/webpack/utils/injected-code.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/config/webpack/utils/injected-code.js b/config/webpack/utils/injected-code.js new file mode 100644 index 0000000..a4f88ac --- /dev/null +++ b/config/webpack/utils/injected-code.js @@ -0,0 +1,41 @@ +const crypto = require("crypto"); + +const getHash = url => + crypto + .createHash("md5") + .update(url) + .digest("hex") + .substring(16); + +module.exports.getInjectedCode = code => { + const extensionAssets = {}; + let i = 0; + + while (true) { + i = code.indexOf("\"$l{", i); + + if (i < 0) { + break; + } + + const start = i; + const end = code.indexOf("}l$\"", i); + + if (end <= 0) { + break; + } + + const url = code.substring(start + 4, end).trim(); + const urlHash = getHash(url); + code = code.substring(0, start) + `document.currentScript.getAttribute("data-${urlHash}")` + code.substring(end + 4); + extensionAssets[urlHash] = url; + + i = end + 4; + } + + const extensionAssetsCode = Object.entries(extensionAssets).map( + asset => `"${asset[0]}": chrome.runtime.getURL("${asset[1]}")` + ).join(","); + + return [code, `{${extensionAssetsCode}}`]; +}; |
