Spaces:
Running
Running
AI-in-Healthcare
/
Developer Meetup in Boston Generative AI Use Cases in Healthcare _files
/google-analytics_analytics.js
/******************************************************************************* | |
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 []; | |
}; | |
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(); | |
} | |
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); | |
}; | |
if ( Array.isArray(dl) ) { | |
dl.push = item => doCallback(item); | |
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); | |
} | |
} | |
})(); | |