aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rules/block-scripts.json9
-rw-r--r--src/rules/redirect-scripts.json12
-rw-r--r--src/scripts/optimize.ts12
-rw-r--r--src/shared/block-url.ts1
-rw-r--r--src/shared/modify-dom.ts55
-rw-r--r--src/shared/observe-dom.ts10
6 files changed, 57 insertions, 42 deletions
diff --git a/src/rules/block-scripts.json b/src/rules/block-scripts.json
new file mode 100644
index 0000000..0e7606b
--- /dev/null
+++ b/src/rules/block-scripts.json
@@ -0,0 +1,9 @@
+{
+ "priority": 1,
+ "action": {
+ "type": "block"
+ },
+ "condition": {
+ "regexFilter": "^https:\/\/banglarbhumi.gov.in\/BanglarBhumi\/js\/(jquery-1.12.4|jquery.nivo.slider|bootstrap-dropdownhover).js$"
+ }
+}
diff --git a/src/rules/redirect-scripts.json b/src/rules/redirect-scripts.json
new file mode 100644
index 0000000..b54a7ed
--- /dev/null
+++ b/src/rules/redirect-scripts.json
@@ -0,0 +1,12 @@
+{
+ "priority": 1,
+ "action": {
+ "type": "redirect",
+ "redirect": {
+ "url": "https://code.jquery.com/jquery-1.12.4.min.js"
+ }
+ },
+ "condition": {
+ "urlFilter": "https://banglarbhumi.gov.in/BanglarBhumi/js/jquery-1.12.4.min.js"
+ }
+}
diff --git a/src/scripts/optimize.ts b/src/scripts/optimize.ts
index 55492b6..336a6ca 100644
--- a/src/scripts/optimize.ts
+++ b/src/scripts/optimize.ts
@@ -2,22 +2,10 @@ import { modifyDOM } from "@/shared/modify-dom";
modifyDOM([
[
- "head > script:nth-child(34)",
- {
- src: null
- }
- ],
- [
"head > script:nth-child(36)",
{
src: null,
innerHTML: "$.prototype.nivoSlider = () => {};"
}
- ],
- [
- "head > script:nth-child(43)",
- {
- src: null
- }
]
]);
diff --git a/src/shared/block-url.ts b/src/shared/block-url.ts
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/shared/block-url.ts
@@ -0,0 +1 @@
+
diff --git a/src/shared/modify-dom.ts b/src/shared/modify-dom.ts
index 337c879..21dfab0 100644
--- a/src/shared/modify-dom.ts
+++ b/src/shared/modify-dom.ts
@@ -4,44 +4,47 @@ type DOMReplacements = {
innerHTML?: string;
[key: string]: string | undefined | null;
};
-
type DOMModificaitonRule = readonly [string, DOMReplacements];
+type DOMModificationRules = (DOMModificaitonRule | null)[];
-export const modifyDOM = (modificationRules: (DOMModificaitonRule | null)[]) => {
- let count = 0;
+let domModificationRules: DOMModificationRules = [];
+let domModificationFinishedCount = 0;
- observeDOM(() => {
- for (let i = 0; i < modificationRules.length; i++) {
- if (modificationRules[i]) {
- const element = document.querySelector(modificationRules[i]![0]) as HTMLElement | null;
+observeDOM(() => {
+ for (let i = 0; i < domModificationRules.length; i++) {
+ if (domModificationRules[i]) {
+ const element = document.querySelector(domModificationRules[i]![0]) as HTMLElement | null;
- if (element) {
- const attributes = modificationRules[i]![1];
+ if (element) {
+ const attributes = domModificationRules[i]![1];
- if (attributes.innerHTML) {
- element.innerHTML = attributes.innerHTML as string;
- }
+ if (attributes.innerHTML) {
+ element.innerHTML = attributes.innerHTML as string;
+ }
- delete attributes.innerHTML;
+ delete attributes.innerHTML;
- for (const attribute in attributes) {
- if (attributes[attribute] === null) {
- element.removeAttribute(attribute);
- } else {
- element.setAttribute(attribute, attributes[attribute] as string);
- }
+ for (const attribute in attributes) {
+ if (attributes[attribute] === null) {
+ element.removeAttribute(attribute);
+ } else {
+ element.setAttribute(attribute, attributes[attribute] as string);
}
+ }
- modificationRules[i] = null;
- count++;
+ domModificationRules[i] = null;
+ domModificationFinishedCount++;
- if (count >= modificationRules.length) {
- return true;
- }
+ if (domModificationFinishedCount >= domModificationRules.length) {
+ return true;
}
}
}
+ }
+
+ return false;
+});
- return false;
- });
+export const modifyDOM = (modificationRules: DOMModificationRules) => {
+ domModificationRules = domModificationRules.concat(modificationRules);
};
diff --git a/src/shared/observe-dom.ts b/src/shared/observe-dom.ts
index dc2cb45..37bcfcd 100644
--- a/src/shared/observe-dom.ts
+++ b/src/shared/observe-dom.ts
@@ -1,15 +1,17 @@
type ObserveDOMCallback = () => boolean;
let callbacks: (ObserveDOMCallback | null)[] = [];
-let count = 0;
+let callbacksCalledCount = 0;
const observer = new MutationObserver(() => {
- for (const callback of callbacks) {
+ for (let i = 0; i < callbacks.length; i++) {
+ const callback = callbacks[i];
if (callback && callback()) {
- count++;
+ callbacksCalledCount++;
+ callbacks[i] = null;
}
- if (count >= callbacks.length) {
+ if (callbacksCalledCount >= callbacks.length) {
observer.disconnect();
break;