- "scriptlet": "function(source, args){function setConstant(source, property, value, stack) {if (!property || !matchStackTrace(stack, new Error().stack)) {return;}var emptyArr = noopArray();var emptyObj = noopObject();var constantValue;if (value === 'undefined') {constantValue = undefined;} else if (value === 'false') {constantValue = false;} else if (value === 'true') {constantValue = true;} else if (value === 'null') {constantValue = null;} else if (value === 'emptyArr') {constantValue = emptyArr;} else if (value === 'emptyObj') {constantValue = emptyObj;} else if (value === 'noopFunc') {constantValue = noopFunc;} else if (value === 'trueFunc') {constantValue = trueFunc;} else if (value === 'falseFunc') {constantValue = falseFunc;} else if (value === 'noopPromiseResolve') {constantValue = noopPromiseResolve;} else if (value === 'noopPromiseReject') {constantValue = noopPromiseReject;} else if (/^\\d+$/.test(value)) {constantValue = parseFloat(value);if (nativeIsNaN(constantValue)) {return;}if (Math.abs(constantValue) > 0x7FFF) {return;}} else if (value === '-1') {constantValue = -1;} else if (value === '') {constantValue = '';} else {return;}var getCurrentScript = function getCurrentScript() {if ('currentScript' in document) {return document.currentScript;}var scripts = document.getElementsByTagName('script');return scripts[scripts.length - 1];};var ourScript = getCurrentScript();var canceled = false;var mustCancel = function mustCancel(value) {if (canceled) {return canceled;}canceled = value !== undefined && constantValue !== undefined && typeof value !== typeof constantValue;return canceled;};var trapProp = function trapProp(base, prop, configurable, handler) {if (!handler.init(base[prop])) {return;}var origDescriptor = Object.getOwnPropertyDescriptor(base, prop);var prevGetter;var prevSetter;if (origDescriptor instanceof Object) {base[prop] = constantValue;if (origDescriptor.get instanceof Function) {prevGetter = origDescriptor.get;}if (origDescriptor.set instanceof Function) {prevSetter = origDescriptor.set;}}Object.defineProperty(base, prop, {configurable: configurable,get: function get() {if (prevGetter !== undefined) {prevGetter();}return handler.get();},set: function set(a) {if (prevSetter !== undefined) {prevSetter(a);}handler.set(a);}});};var setChainPropAccess = function setChainPropAccess(owner, property) {var chainInfo = getPropertyInChain(owner, property);var base = chainInfo.base;var prop = chainInfo.prop,chain = chainInfo.chain;var undefPropHandler = {factValue: undefined,init: function init(a) {this.factValue = a;return true;},get: function get() {return this.factValue;},set: function set(a) {this.factValue = a;if (a instanceof Object) {setChainPropAccess(a, chain);}}};var endPropHandler = {factValue: undefined,init: function init(a) {if (mustCancel(a)) {return false;}this.factValue = a;return true;},get: function get() {return document.currentScript === ourScript ? this.factValue : constantValue;},set: function set(a) {if (!mustCancel(a)) {return;}constantValue = a;}};if (!chain) {trapProp(base, prop, false, endPropHandler);hit(source);return;}var propValue = owner[prop];if (propValue instanceof Object || typeof propValue === 'object' && propValue !== null) {setChainPropAccess(propValue, chain);}trapProp(owner, prop, true, undefPropHandler);};setChainPropAccess(window, property);}function hit(source, message) {if (source.verbose !== true) {return;}try {var log = console.log.bind(console);var trace = console.trace.bind(console);var prefix = source.ruleText || '';if (source.domainName) {var AG_SCRIPTLET_MARKER = '#%#//';var UBO_SCRIPTLET_MARKER = '##+js';var ruleStartIndex;if (source.ruleText.indexOf(AG_SCRIPTLET_MARKER) > -1) {ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER);} else if (source.ruleText.indexOf(UBO_SCRIPTLET_MARKER) > -1) {ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER);}var rulePart = source.ruleText.slice(ruleStartIndex);prefix = \"\".concat(source.domainName).concat(rulePart);}var LOG_MARKER = 'log: ';if (message) {if (message.indexOf(LOG_MARKER) === -1) {log(\"\".concat(prefix, \" message:\\n\").concat(message));} else {log(message.slice(LOG_MARKER.length));}}log(\"\".concat(prefix, \" trace start\"));if (trace) {trace();}log(\"\".concat(prefix, \" trace end\"));} catch (e) {}if (typeof window.__debug === 'function') {window.__debug(source);}}function noopArray() {return [];}function noopObject() {return {};}function noopFunc() {}function trueFunc() {return true;}function falseFunc() {return false;}function noopPromiseReject() {return Promise.reject();}function noopPromiseResolve() {return Promise.resolve(new Response());}function getPropertyInChain(base, chain) {var pos = chain.indexOf('.');if (pos === -1) {return {base: base,prop: chain};}var prop = chain.slice(0, pos);if (base === null) {return {base: base,prop: prop,chain: chain};}var nextBase = base[prop];chain = chain.slice(pos + 1);if (nextBase !== undefined) {return getPropertyInChain(nextBase, chain);}Object.defineProperty(base, prop, {configurable: true});return {base: nextBase,prop: prop,chain: chain};}function setPropertyAccess(object, property, descriptor) {var currentDescriptor = Object.getOwnPropertyDescriptor(object, property);if (currentDescriptor && !currentDescriptor.configurable) {return false;}Object.defineProperty(object, property, descriptor);return true;}function toRegExp() {var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';var DEFAULT_VALUE = '.?';var FORWARD_SLASH = '/';if (input === '') {return new RegExp(DEFAULT_VALUE);}if (input[0] === FORWARD_SLASH && input[input.length - 1] === FORWARD_SLASH) {return new RegExp(input.slice(1, -1));}var escaped = input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');return new RegExp(escaped);}function matchStackTrace(stackMatch, stackTrace) {if (!stackMatch || stackMatch === '') {return true;}var stackRegexp = toRegExp(stackMatch);var refinedStackTrace = stackTrace.split('\\n').slice(2).map(function (line) {return line.trim();}).join('\\n');return stackRegexp.test(refinedStackTrace);}function nativeIsNaN(num) {var native = Number.isNaN || window.isNaN;return native(num);};const updatedArgs = args ? [].concat(source).concat(args) : [source];try {setConstant.apply(this, updatedArgs);} catch (e) {console.log(e);}}"
0 commit comments