-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcjs_client.js
112 lines (109 loc) · 3.65 KB
/
cjs_client.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
"use strict";
// catto.js
(() => {
var symbol = window._CATTOJS_SYMBOL || "%";
var updateTime = window._CATTOJS_UPDATE_TIME || 1;
var incid = 0;
var cache = {};
var ignoret = !1;
var dstartcode = "output += `<span id=\"_cattojs_d%\">`;\ncfs[%] = function() {\nvar ignoret = !0;\n";
var dendcode = "};\ncfs[%]();\noutput += `</span>`;\n";
function render(code) {
code = code.split("<").join("<").split(">").join(">").split("&").join("&");
var parts = code.split(new RegExp(`<${symbol}c(?:lient)?(\\*)?(?!=) +(.+?) +${symbol}>`, "g"));
var output = "";
var compile = "";
var did = 0;
var ob = 0;
var cfs = {};
parts.forEach((part, index) => {
if ((index + 1) % 3 == 2) {
if (!did && part == "*") {
compile += dstartcode.split("%").join(++incid);
did = incid;
}
return;
}
if ((index + 1) % 3 < 1) {
var instr = !1;
var chstr = "";
for (var char of part) {
if (!instr && "'\"`".includes(char)) {
instr = !0;
chstr = char;
}
if (instr && char == chstr) {
instr = !1;
}
if (!instr && char == "{") {
ob++;
}
if (!instr && char == "}") {
ob--;
}
}
}
compile += ((index + 1) % 3 < 1 ? `${part}\n` : `output += ${JSON.stringify(part)}.replace(/<${symbol}c(?:lient)?(\\*)?= +(.+?) +${symbol}>/g, (_, t, g) => __rpf(t, g, eval(g), !0, ignoret)).replace(/<${symbol}c(?:lient)?(\\*)?- +(.+?) +${symbol}>/g, (_, t, g) => __rpf(t, g, eval(g), !1, ignoret)).replace(/<${symbol}c(lient)\\*?# +(.+?) +${symbol}>/g, "");\n`);
if (did && !ob) {
compile += dendcode.split("%").join(did);
did = 0;
}
});
function __rpf(t, g, result, r, ignoret) {
if (result === void 0) {
return "undefined";
}
if (typeof result !== "string") {
result = result.toString();
}
if (r) {
result = result.split("<").join("<").split(">").join(">");
}
if (!ignoret && t) {
function update(id, code, format) {
var result2 = eval(code);
if (result2 === void 0) {
return "undefined";
}
if (typeof result2 !== "string") {
result2 = result2.toString();
}
if (format) {
result2 = result2.split("<").join("<").split(">").join(">");
}
if (cache[id] != result2) {
cache[id] = result2;
try {
document.querySelector(`#_cattojs_d${id}`).innerHTML = result2;
} catch(e) {
throw `Dynamic element #${id} was deleted.`;
}
}
}
setInterval(update.bind(null, ++incid, g, r), updateTime);
return `<span id="_cattojs_d${incid}">${result}</span>`;
}
return result;
}
eval(compile);
function updateb(inf) {
output = "";
var id = inf[0];
inf[1]();
if (cache[id] != output) {
cache[id] = output;
document.querySelector(`#_cattojs_d${id}`).innerHTML = output;
}
}
if (Object.keys(cfs).length) {
setInterval(() => Object.entries(cfs).forEach(updateb), updateTime);
}
return output;
}
window.addEventListener("DOMContentLoaded", () => {
if (typeof window.$ === "undefined") {
window.$ = selector => document.querySelector(selector);
}
document.documentElement.innerHTML = render(document.documentElement.innerHTML);
});
})();