summaryrefslogtreecommitdiffstats
path: root/platform/mv3/scriptlets
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 05:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 05:47:55 +0000
commit31d6ff6f931696850c348007241195ab3b2eddc7 (patch)
tree615cb1c57ce9f6611bad93326b9105098f379609 /platform/mv3/scriptlets
parentInitial commit. (diff)
downloadublock-origin-31d6ff6f931696850c348007241195ab3b2eddc7.tar.xz
ublock-origin-31d6ff6f931696850c348007241195ab3b2eddc7.zip
Adding upstream version 1.55.0+dfsg.upstream/1.55.0+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'platform/mv3/scriptlets')
-rw-r--r--platform/mv3/scriptlets/css-declarative.template.js51
-rw-r--r--platform/mv3/scriptlets/css-generic.template.js61
-rw-r--r--platform/mv3/scriptlets/css-generichigh.template.css26
-rw-r--r--platform/mv3/scriptlets/css-procedural.template.js51
-rw-r--r--platform/mv3/scriptlets/css-specific.template.js51
-rw-r--r--platform/mv3/scriptlets/scriptlet.template.js175
6 files changed, 415 insertions, 0 deletions
diff --git a/platform/mv3/scriptlets/css-declarative.template.js b/platform/mv3/scriptlets/css-declarative.template.js
new file mode 100644
index 0000000..c1f480f
--- /dev/null
+++ b/platform/mv3/scriptlets/css-declarative.template.js
@@ -0,0 +1,51 @@
+/*******************************************************************************
+
+ uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
+ Copyright (C) 2014-present Raymond Hill
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see {http://www.gnu.org/licenses/}.
+
+ Home: https://github.com/gorhill/uBlock
+*/
+
+/* jshint esversion:11 */
+
+'use strict';
+
+// ruleset: $rulesetId$
+
+/******************************************************************************/
+
+// Important!
+// Isolate from global scope
+(function uBOL_cssDeclarativeImport() {
+
+/******************************************************************************/
+
+const argsList = self.$argsList$;
+
+const hostnamesMap = new Map(self.$hostnamesMap$);
+
+const entitiesMap = new Map(self.$entitiesMap$);
+
+const exceptionsMap = new Map(self.$exceptionsMap$);
+
+self.declarativeImports = self.declarativeImports || [];
+self.declarativeImports.push({ argsList, hostnamesMap, entitiesMap, exceptionsMap });
+
+/******************************************************************************/
+
+})();
+
+/******************************************************************************/
diff --git a/platform/mv3/scriptlets/css-generic.template.js b/platform/mv3/scriptlets/css-generic.template.js
new file mode 100644
index 0000000..a1f1d6c
--- /dev/null
+++ b/platform/mv3/scriptlets/css-generic.template.js
@@ -0,0 +1,61 @@
+/*******************************************************************************
+
+ uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
+ Copyright (C) 2014-present Raymond Hill
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see {http://www.gnu.org/licenses/}.
+
+ Home: https://github.com/gorhill/uBlock
+*/
+
+/* jshint esversion:11 */
+
+'use strict';
+
+/******************************************************************************/
+
+// Important!
+// Isolate from global scope
+(function uBOL_cssGenericImport() {
+
+/******************************************************************************/
+
+// $rulesetId$
+
+const toImport = self.$genericSelectorMap$;
+
+const genericSelectorMap = self.genericSelectorMap || new Map();
+
+if ( genericSelectorMap.size === 0 ) {
+ self.genericSelectorMap = new Map(toImport);
+ return;
+}
+
+for ( const toImportEntry of toImport ) {
+ const existing = genericSelectorMap.get(toImportEntry[0]);
+ genericSelectorMap.set(
+ toImportEntry[0],
+ existing === undefined
+ ? toImportEntry[1]
+ : `${existing},${toImportEntry[1]}`
+ );
+}
+
+self.genericSelectorMap = genericSelectorMap;
+
+/******************************************************************************/
+
+})();
+
+/******************************************************************************/
diff --git a/platform/mv3/scriptlets/css-generichigh.template.css b/platform/mv3/scriptlets/css-generichigh.template.css
new file mode 100644
index 0000000..370bc4c
--- /dev/null
+++ b/platform/mv3/scriptlets/css-generichigh.template.css
@@ -0,0 +1,26 @@
+/*******************************************************************************
+
+ uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
+ Copyright (C) 2014-present Raymond Hill
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see {http://www.gnu.org/licenses/}.
+
+ Home: https://github.com/gorhill/uBlock
+*/
+
+/* $rulesetId$ */
+
+$selectorList$ {
+ display: none !important;
+}
diff --git a/platform/mv3/scriptlets/css-procedural.template.js b/platform/mv3/scriptlets/css-procedural.template.js
new file mode 100644
index 0000000..61c95e6
--- /dev/null
+++ b/platform/mv3/scriptlets/css-procedural.template.js
@@ -0,0 +1,51 @@
+/*******************************************************************************
+
+ uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
+ Copyright (C) 2014-present Raymond Hill
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see {http://www.gnu.org/licenses/}.
+
+ Home: https://github.com/gorhill/uBlock
+*/
+
+/* jshint esversion:11 */
+
+'use strict';
+
+// ruleset: $rulesetId$
+
+/******************************************************************************/
+
+// Important!
+// Isolate from global scope
+(function uBOL_cssProceduralImport() {
+
+/******************************************************************************/
+
+const argsList = self.$argsList$;
+
+const hostnamesMap = new Map(self.$hostnamesMap$);
+
+const entitiesMap = new Map(self.$entitiesMap$);
+
+const exceptionsMap = new Map(self.$exceptionsMap$);
+
+self.proceduralImports = self.proceduralImports || [];
+self.proceduralImports.push({ argsList, hostnamesMap, entitiesMap, exceptionsMap });
+
+/******************************************************************************/
+
+})();
+
+/******************************************************************************/
diff --git a/platform/mv3/scriptlets/css-specific.template.js b/platform/mv3/scriptlets/css-specific.template.js
new file mode 100644
index 0000000..6858931
--- /dev/null
+++ b/platform/mv3/scriptlets/css-specific.template.js
@@ -0,0 +1,51 @@
+/*******************************************************************************
+
+ uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
+ Copyright (C) 2019-present Raymond Hill
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see {http://www.gnu.org/licenses/}.
+
+ Home: https://github.com/gorhill/uBlock
+*/
+
+/* jshint esversion:11 */
+
+'use strict';
+
+// ruleset: $rulesetId$
+
+/******************************************************************************/
+
+// Important!
+// Isolate from global scope
+(function uBOL_cssSpecificImports() {
+
+/******************************************************************************/
+
+const argsList = self.$argsList$;
+
+const hostnamesMap = new Map(self.$hostnamesMap$);
+
+const entitiesMap = new Map(self.$entitiesMap$);
+
+const exceptionsMap = new Map(self.$exceptionsMap$);
+
+self.specificImports = self.specificImports || [];
+self.specificImports.push({ argsList, hostnamesMap, entitiesMap, exceptionsMap });
+
+/******************************************************************************/
+
+})();
+
+/******************************************************************************/
diff --git a/platform/mv3/scriptlets/scriptlet.template.js b/platform/mv3/scriptlets/scriptlet.template.js
new file mode 100644
index 0000000..b2c4ada
--- /dev/null
+++ b/platform/mv3/scriptlets/scriptlet.template.js
@@ -0,0 +1,175 @@
+/*******************************************************************************
+
+ uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
+ Copyright (C) 2014-present Raymond Hill
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see {http://www.gnu.org/licenses/}.
+
+ Home: https://github.com/gorhill/uBlock
+
+*/
+
+/* jshint esversion:11 */
+/* global cloneInto */
+
+'use strict';
+
+// ruleset: $rulesetId$
+
+/******************************************************************************/
+
+// Important!
+// Isolate from global scope
+
+// Start of local scope
+(( ) => {
+
+/******************************************************************************/
+
+// Start of code to inject
+const uBOL_$scriptletName$ = function() {
+
+const scriptletGlobals = new Map(); // jshint ignore: line
+
+const argsList = self.$argsList$;
+
+const hostnamesMap = new Map(self.$hostnamesMap$);
+
+const entitiesMap = new Map(self.$entitiesMap$);
+
+const exceptionsMap = new Map(self.$exceptionsMap$);
+
+/******************************************************************************/
+
+function $scriptletName$(){}
+
+/******************************************************************************/
+
+const hnParts = [];
+try { hnParts.push(...document.location.hostname.split('.')); }
+catch(ex) { }
+const hnpartslen = hnParts.length;
+if ( hnpartslen === 0 ) { return; }
+
+const todoIndices = new Set();
+const tonotdoIndices = [];
+
+// Exceptions
+if ( exceptionsMap.size !== 0 ) {
+ for ( let i = 0; i < hnpartslen; i++ ) {
+ const hn = hnParts.slice(i).join('.');
+ const excepted = exceptionsMap.get(hn);
+ if ( excepted ) { tonotdoIndices.push(...excepted); }
+ }
+ exceptionsMap.clear();
+}
+
+// Hostname-based
+if ( hostnamesMap.size !== 0 ) {
+ const collectArgIndices = hn => {
+ let argsIndices = hostnamesMap.get(hn);
+ if ( argsIndices === undefined ) { return; }
+ if ( typeof argsIndices === 'number' ) { argsIndices = [ argsIndices ]; }
+ for ( const argsIndex of argsIndices ) {
+ if ( tonotdoIndices.includes(argsIndex) ) { continue; }
+ todoIndices.add(argsIndex);
+ }
+ };
+ for ( let i = 0; i < hnpartslen; i++ ) {
+ const hn = hnParts.slice(i).join('.');
+ collectArgIndices(hn);
+ }
+ collectArgIndices('*');
+ hostnamesMap.clear();
+}
+
+// Entity-based
+if ( entitiesMap.size !== 0 ) {
+ const n = hnpartslen - 1;
+ for ( let i = 0; i < n; i++ ) {
+ for ( let j = n; j > i; j-- ) {
+ const en = hnParts.slice(i,j).join('.');
+ let argsIndices = entitiesMap.get(en);
+ if ( argsIndices === undefined ) { continue; }
+ if ( typeof argsIndices === 'number' ) { argsIndices = [ argsIndices ]; }
+ for ( const argsIndex of argsIndices ) {
+ if ( tonotdoIndices.includes(argsIndex) ) { continue; }
+ todoIndices.add(argsIndex);
+ }
+ }
+ }
+ entitiesMap.clear();
+}
+
+// Apply scriplets
+for ( const i of todoIndices ) {
+ try { $scriptletName$(...argsList[i]); }
+ catch(ex) {}
+}
+argsList.length = 0;
+
+/******************************************************************************/
+
+};
+// End of code to inject
+
+/******************************************************************************/
+
+// Inject code
+
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1736575
+// 'MAIN' world not yet supported in Firefox, so we inject the code into
+// 'MAIN' ourself when environment in Firefox.
+
+const targetWorld = '$world$';
+
+// Not Firefox
+if ( typeof wrappedJSObject !== 'object' || targetWorld === 'ISOLATED' ) {
+ return uBOL_$scriptletName$();
+}
+
+// Firefox
+{
+ const page = self.wrappedJSObject;
+ let script, url;
+ try {
+ page.uBOL_$scriptletName$ = cloneInto([
+ [ '(', uBOL_$scriptletName$.toString(), ')();' ],
+ { type: 'text/javascript; charset=utf-8' },
+ ], self);
+ const blob = new page.Blob(...page.uBOL_$scriptletName$);
+ url = page.URL.createObjectURL(blob);
+ const doc = page.document;
+ script = doc.createElement('script');
+ script.async = false;
+ script.src = url;
+ (doc.head || doc.documentElement || doc).append(script);
+ } catch (ex) {
+ console.error(ex);
+ }
+ if ( url ) {
+ if ( script ) { script.remove(); }
+ page.URL.revokeObjectURL(url);
+ }
+ delete page.uBOL_$scriptletName$;
+}
+
+/******************************************************************************/
+
+// End of local scope
+})();
+
+/******************************************************************************/
+
+void 0;