aboutsummaryrefslogtreecommitdiffstats
path: root/config/webpack/utils
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-03-12 18:39:36 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-03-12 18:39:36 +0530
commit7ea487be4aaf8f3b3047e2a7b3c1da80744f258b (patch)
treea4f91d979fe838aefe2ab8c4cecd9037b879e0aa /config/webpack/utils
parent95becf369822cbb74f4cefb5658f3ff97e164d6e (diff)
downloadbanglar-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.js41
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}}`];
+};