diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rules/block-scripts.json | 9 | ||||
| -rw-r--r-- | src/rules/redirect-scripts.json | 12 | ||||
| -rw-r--r-- | src/scripts/optimize.ts | 12 | ||||
| -rw-r--r-- | src/shared/block-url.ts | 1 | ||||
| -rw-r--r-- | src/shared/modify-dom.ts | 55 | ||||
| -rw-r--r-- | src/shared/observe-dom.ts | 10 |
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; |
