-
Notifications
You must be signed in to change notification settings - Fork 29
/
hit.js
51 lines (45 loc) · 1.66 KB
/
hit.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* eslint-disable no-console, no-underscore-dangle */
/**
* Hit used only for debug purposes now
*
* @param {Object} source scriptlet properties
* use LOG_MARKER = 'log: ' at the start of a message
* for logging scriptlets
*/
export const hit = (source) => {
if (source.verbose !== true) {
return;
}
try {
const log = console.log.bind(console);
const trace = console.trace.bind(console);
let prefix = source.ruleText || '';
if (source.domainName) {
const AG_SCRIPTLET_MARKER = '#%#//';
const UBO_SCRIPTLET_MARKER = '##+js';
let ruleStartIndex;
if (source.ruleText.includes(AG_SCRIPTLET_MARKER)) {
ruleStartIndex = source.ruleText.indexOf(AG_SCRIPTLET_MARKER);
} else if (source.ruleText.includes(UBO_SCRIPTLET_MARKER)) {
ruleStartIndex = source.ruleText.indexOf(UBO_SCRIPTLET_MARKER);
}
// delete all domains from ruleText and leave just rule part
const rulePart = source.ruleText.slice(ruleStartIndex);
// prepare applied scriptlet rule for specific domain
prefix = `${source.domainName}${rulePart}`;
}
log(`${prefix} trace start`);
if (trace) {
trace();
}
log(`${prefix} trace end`);
} catch (e) {
// try catch for Edge 15
// In according to this issue https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14495220/
// console.log throws an error
}
// This is necessary for unit-tests only!
if (typeof window.__debug === 'function') {
window.__debug(source);
}
};