Files
discord-decomp/_bundle/collectAst.js
T
2026-11-01 12:12:55 +02:00

334 lines
8.6 KiB
JavaScript

// Metro module 7770 (f7771).
function $mk79295($env) {
return (a0) => {
let r12 = $env[0];
if (r12 === void 0) {
r12 = [];
}
let env26039;
const r7 = $env.$parent;
const r4 = env26039 = {
$parent: r7
};
env26039[0] = r12;
if (Array.isArray(a0)) {
a0.forEach($mk79295(r4));
} else if (typeof a0.content === "string") {
r12.push(a0.content);
} else if (a0.content != null) {
let env26040;
const content = a0.content;
const r17 = env26040 = {
$parent: r7
};
env26040[0] = void 0;
let r10 = r12;
if (r10 === void 0) {
r10 = [];
}
env26040[0] = r10;
if (Array.isArray(content)) {
content.forEach($mk79295(r17));
} else if (typeof content.content === "string") {
r10.push(content.content);
} else if (content.content != null) {
(0, r7[0])(content.content, r10);
}
}
return r12;
};
}
function $mk79298($env) {
return (a0) => {
const r4 = $env;
const r1 = r4[2];
const r5 = r1 !== 0 ? r4[0][r1 - 1].endIndex : 0;
r4[2] = r4[2] + 1;
const type = a0.type;
if (type !== "spoiler" && type !== "u" && type !== "s" && type !== "strong") {
if (type !== "em" && type !== "customEmoji" && type !== "emoji" && type !== "inlineCode") {
if (type === "text") {
a0.startIndex = r4[1] + r5;
a0.endIndex = a0.startIndex + a0.content.length;
return a0;
}
let env26041;
a0.startIndex = r4[1] + r5;
const { content, startIndex } = a0;
const r27 = env26041 = {
$parent: $env.$parent
};
env26041[0] = content;
env26041[1] = startIndex;
env26041[2] = 0;
const r30 = content.map($mk79298(r27));
a0.endIndex = r30[r30.length - 1].endIndex;
return a0;
}
let env26042;
a0.startIndex = r4[1] + r5;
const content2 = a0.content;
const r45 = a0.startIndex + 1;
const r47 = env26042 = {
$parent: $env.$parent
};
env26042[0] = content2;
env26042[1] = r45;
env26042[2] = 0;
const r50 = content2.map($mk79298(r47));
a0.endIndex = r50[r50.length - 1].endIndex + 1;
return a0;
}
let env26043;
a0.startIndex = r4[1] + r5;
const content3 = a0.content;
const r61 = a0.startIndex + 2;
const r63 = env26043 = {
$parent: $env.$parent
};
env26043[0] = content3;
env26043[1] = r61;
env26043[2] = 0;
const r66 = content3.map($mk79298(r63));
a0.endIndex = r66[r66.length - 1].endIndex + 2;
return a0;
};
}
let c4893_1, c4893_2, c4893_3, walkAst, flattenAst, constrainAst;
let env4893 = {};
const collectAst = function collectAst(a0, r2 = []) {
let env16018;
const r3 = env16018 = {
$parent: env4893
};
env16018[0] = r2;
if (Array.isArray(a0)) {
a0.forEach($mk79295(r3));
} else if (typeof a0.content === "string") {
r2.push(a0.content);
} else if (a0.content != null) {
collectAst(a0.content, r2);
}
return r2;
};
c4893_1 = {};
c4893_2 = void 0;
export class MarkupParserNodeTypeError extends Error {
constructor(a0) {
const set = new Set();
const r8 = [a0];
while (r8.length > 0) {
const r10 = r8.pop();
if (r10 !== void 0) {
if (Array.isArray(r10)) {
r8.push.apply(r8, [...r10]);
} else {
set.add(r10.type);
if ("content" in r10 && Array.isArray(r10.content)) {
r8.push.apply(r8, [...r10.content]);
}
if ("items" in r10 && Array.isArray(r10.items)) {
r8.push.apply(r8, [...r10.items]);
}
}
}
}
const nodeTypes = Array.from(set);
const message = c4893_2.getMessage(nodeTypes);
super(message);
this.nodeTypes = nodeTypes;
}
static getMessage(a0) {
return `MarkupParserNodeTypeError: Unknown AST node type in "${a0.join(", ")}" caused rendering failure`;
}
}
c4893_2 = MarkupParserNodeTypeError;
c4893_3 = MarkupParserNodeTypeError;
export const NUM_MAX_AST_NODES = 200;
walkAst = function walkAst(a0, a1) {
if (Array.isArray(a0)) {
for (const item of a0) {
walkAst(item, a1);
}
} else {
a1(a0, null);
if (Array.isArray(a0.content)) {
walkAst(a0.content, a1);
}
if (a0.type === "list") {
walkAst(a0.items, a1);
}
}
};
export { walkAst };
export function astToString(a0) {
let env16019;
const r3 = env16019 = {
$parent: env4893
};
const r5 = [];
env16019[0] = r5;
if (Array.isArray(a0)) {
a0.forEach($mk79295(r3));
} else if (typeof a0.content === "string") {
r5.push(a0.content);
} else if (a0.content != null) {
let env16020;
const content = a0.content;
const r14 = env16020 = {
$parent: env4893
};
env16020[0] = void 0;
env16020[0] = r5;
if (Array.isArray(content)) {
content.forEach($mk79295(r14));
} else if (typeof content.content === "string") {
r5.push(content.content);
} else if (content.content != null) {
collectAst(content.content, r5);
}
}
return r5.join("");
}
flattenAst = function flattenAst(a0, a1) {
let length3;
let r15 = arguments[2];
if (r15 === void 0) {
r15 = null;
}
if (Array.isArray(a1)) {
const length = a1.length;
const r38 = [];
const r39 = 0 < length;
let r1 = 0;
if (r39) {
do {
const r41 = flattenAst(a0, a1[r1], r15);
const isArray = Array.isArray(r41);
const r3 = r1;
if (isArray) {
const length2 = r41.length;
const r47 = 0 < length2;
let r0 = 0;
if (r47) {
do {
r38.push(r41[r0]);
r0 = r0 + 1;
} while (r0 < length2);
}
} else {
r38.push(r41);
}
r1 = r3 + 1;
} while (r1 < length);
}
if (!a0.isSlate) {
const r52 = 0 < r38.length;
let r55 = 0;
let r56 = null;
if (r52) {
do {
const r57 = r38[r55];
const r58 = r55;
const r59 = r56;
let r60 = r58;
let r61 = r57;
if (r59 != null) {
const type = r59.type;
r60 = r58;
r61 = r57;
if (type === "text") {
const type2 = r59.type;
const type3 = r57.type;
r60 = r58;
r61 = r57;
if (type2 === type3) {
const content = r59.content;
r60 = r58;
r61 = r57;
if (typeof content === "string") {
const content2 = r57.content;
r60 = r58;
r61 = r57;
if (typeof content2 === "string") {
r59.content = r59.content + r57.content;
r38.splice(r58, 1);
r60 = r58 - 1;
r61 = r59;
}
}
}
}
}
r55 = r60 + 1;
length3 = r38.length;
r56 = r61;
} while (r55 < length3);
}
}
return r38;
}
if (a1.content != null) {
a1.content = flattenAst(a0, a1.content, a1);
}
if (a1.type === "inlineCode") {
delete a1["validationChildContent"];
}
if (a1.type === "list") {
a1.items = a1.items.map((item) => Array.isArray(item) ? flattenAst(a0, item, null) : item);
}
return r15 != null ? a1.type === r15.type ? a1.content : a1 : a1;
};
export { flattenAst };
constrainAst = function constrainAst(a0, r7 = {
limit: 200,
hasBailedAst: false
}) {
let c16022_0 = r7;
if (Array.isArray(a0)) {
const length = a0.length;
let r0 = 0;
while (r0 < length) {
const ast = constrainAst(a0[r0], r7).ast;
const length2 = r0;
if (ast === c4893_1) {
r7.hasBailedAst = true;
a0.length = length2;
break;
}
a0[length2] = ast;
r0 = length2 + 1;
}
} else if (a0.type !== "text") {
r7.limit = r7.limit - 1;
if (r7.limit <= 0) {
r7.hasBailedAst = true;
return {
ast: c4893_1,
hasBailedAst: true
};
}
if (Array.isArray(a0.content)) {
a0.content = constrainAst(a0.content, r7).ast;
}
if (a0.type === "list") {
a0.items = a0.items.map((item) => constrainAst(item, c16022_0).ast);
}
}
return {
ast: a0,
hasBailedAst: r7.hasBailedAst
};
};
export { constrainAst };
export function getIndexedAST(a0, a1) {
let env16023;
const r1 = env16023 = {
$parent: env4893
};
env16023[0] = a0;
env16023[1] = a1;
env16023[2] = 0;
return a0.map($mk79298(r1));
}