mirror of
https://git.axenov.dev/mirrors/cursor-free-vip.git
synced 2026-01-03 09:19:27 +03:00
Big Change Update
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
/*******************************************************************************
|
||||
|
||||
uBlock Origin - a browser extension to block requests.
|
||||
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
|
||||
*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
// https://developers.google.com/analytics/devguides/collection/analyticsjs/
|
||||
const noopfn = function() {
|
||||
};
|
||||
//
|
||||
const Tracker = function() {
|
||||
};
|
||||
const p = Tracker.prototype;
|
||||
p.get = noopfn;
|
||||
p.set = noopfn;
|
||||
p.send = noopfn;
|
||||
//
|
||||
const w = window;
|
||||
const gaName = w.GoogleAnalyticsObject || 'ga';
|
||||
const gaQueue = w[gaName];
|
||||
// https://github.com/uBlockOrigin/uAssets/pull/4115
|
||||
const ga = function() {
|
||||
const len = arguments.length;
|
||||
if ( len === 0 ) { return; }
|
||||
const args = Array.from(arguments);
|
||||
let fn;
|
||||
let a = args[len-1];
|
||||
if ( a instanceof Object && a.hitCallback instanceof Function ) {
|
||||
fn = a.hitCallback;
|
||||
} else if ( a instanceof Function ) {
|
||||
fn = ( ) => { a(ga.create()); };
|
||||
} else {
|
||||
const pos = args.indexOf('hitCallback');
|
||||
if ( pos !== -1 && args[pos+1] instanceof Function ) {
|
||||
fn = args[pos+1];
|
||||
}
|
||||
}
|
||||
if ( fn instanceof Function === false ) { return; }
|
||||
try {
|
||||
fn();
|
||||
} catch (ex) {
|
||||
}
|
||||
};
|
||||
ga.create = function() {
|
||||
return new Tracker();
|
||||
};
|
||||
ga.getByName = function() {
|
||||
return new Tracker();
|
||||
};
|
||||
ga.getAll = function() {
|
||||
return [new Tracker()];
|
||||
};
|
||||
ga.remove = noopfn;
|
||||
// https://github.com/uBlockOrigin/uAssets/issues/2107
|
||||
ga.loaded = true;
|
||||
w[gaName] = ga;
|
||||
// https://github.com/gorhill/uBlock/issues/3075
|
||||
const dl = w.dataLayer;
|
||||
if ( dl instanceof Object ) {
|
||||
if ( dl.hide instanceof Object && typeof dl.hide.end === 'function' ) {
|
||||
dl.hide.end();
|
||||
dl.hide.end = ()=>{};
|
||||
}
|
||||
if ( typeof dl.push === 'function' ) {
|
||||
const doCallback = function(item) {
|
||||
if ( item instanceof Object === false ) { return; }
|
||||
if ( typeof item.eventCallback !== 'function' ) { return; }
|
||||
setTimeout(item.eventCallback, 1);
|
||||
item.eventCallback = ()=>{};
|
||||
};
|
||||
dl.push = new Proxy(dl.push, {
|
||||
apply: function(target, thisArg, args) {
|
||||
doCallback(args[0]);
|
||||
return Reflect.apply(target, thisArg, args);
|
||||
}
|
||||
});
|
||||
if ( Array.isArray(dl) ) {
|
||||
const q = dl.slice();
|
||||
for ( const item of q ) {
|
||||
doCallback(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// empty ga queue
|
||||
if ( gaQueue instanceof Function && Array.isArray(gaQueue.q) ) {
|
||||
const q = gaQueue.q.slice();
|
||||
gaQueue.q.length = 0;
|
||||
for ( const entry of q ) {
|
||||
ga(...entry);
|
||||
}
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user