diff --git a/src/js/redirect-engine.js b/src/js/redirect-engine.js index 377b561be..59dae48c0 100644 --- a/src/js/redirect-engine.js +++ b/src/js/redirect-engine.js @@ -109,6 +109,8 @@ const redirectableResources = new Map([ [ 'ligatus_angular-tag.js', { alias: 'ligatus.com/*/angular-tag.js', } ], + [ 'mxpnl_mixpanel.js', { + } ], [ 'monkeybroker.js', { alias: 'd3pkae9owd2lcf.cloudfront.net/mb105.js', } ], diff --git a/src/web_accessible_resources/mxpnl_mixpanel.js b/src/web_accessible_resources/mxpnl_mixpanel.js new file mode 100644 index 000000000..1eb804501 --- /dev/null +++ b/src/web_accessible_resources/mxpnl_mixpanel.js @@ -0,0 +1,51 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2021-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://developer.mixpanel.com/docs/javascript-full-api-reference + const mixpanel = { + get_distinct_id() { + return ''; + }, + init(t, cfg) { + if ( cfg instanceof Object === false ) { return; } + if ( 'loaded' in cfg === false ) { return; } + if ( cfg.loaded instanceof Function === false ) { return; } + cfg.loaded(); + }, + register() { + }, + register_once() { + }, + track() { + const cb = Array.from(arguments).pop(); + if ( cb instanceof Function === false ) { return; } + cb(); + }, + }; + const q = self.mixpanel && self.mixpanel._i || []; + self.mixpanel = mixpanel; + for ( const i of q ) { + if ( Array.isArray(i) === false ) { continue; } + mixpanel.init(...i); + } +})();