aboutsummaryrefslogtreecommitdiffstats
path: root/config/webpack/utils/get-injection-code.js
blob: 71afa93c469cd618c1c15e29b347dfc25765e191 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module.exports.getInjectionCode = (code, front) => {
	const escapeSequences = [
		["\b", "\\b"],
		["\f", "\\f"],
		["\n", "\\n"],
		["\r", "\\r"],
		["\t", "\\t"],
		["\v", "\\v"]
	];
	let finalCode = code.replaceAll("`","\\`");

	for (const escapeSequence of escapeSequences) {
		finalCode = finalCode
			.replaceAll(escapeSequence[1], "\\" + escapeSequence[1])
			.replaceAll(escapeSequence[0], escapeSequence[1]);
	}

	const concatenationCode = front
		? "t.innerHTML=i+t.innerHTML"
		: "t.innerHTML+=i";

	return `(()=>{let e=new MutationObserver(()=>{let t=document.querySelector("head > script:nth-child(54)");if(t){let i=\`(()=>{${finalCode}})();\`;${concatenationCode},e.disconnect()}});e.observe(document,{childList:!0,subtree:!0})})();`;
};