Files
discord-decomp/lib/PlainRecord.tsx
T
2026-11-01 12:12:55 +02:00

105 lines
2.6 KiB
TypeScript

// Metro module 1412 (f1413).
import Module1413, { TypeTag } from "../_bundle/Module1413";
import Module38 from "../_bundle/Module38";
import { areSetsEqual } from "../_bundle/Module1414";
import shallowEqual, { areArraysShallowEqual } from "../_bundle/shallowEqual";
let isPlainRecordDataEqual;
const isValueEqual = function isValueEqual(a0, a1) {
let r1;
L22: {
if (a0 != null && a1 != null) {
r1 = a0 === a1;
if (r1) {
break L22;
}
r1 = a0 instanceof Date && a1 instanceof Date ? a0.getTime() === a1.getTime() : a0 instanceof Set && a1 instanceof Set ? areSetsEqual(a0, a1) : Array.isArray(a0) && Array.isArray(a1) ? areArraysShallowEqual(a0, a1) : (typeof a0 === "object" ? typeof a1 === "object" : typeof a0 === "object") && shallowEqual(a0, a1);
} else {
r1 = a0 === a1;
}
}
return r1;
};
isPlainRecordDataEqual = function isPlainRecordDataEqual(a0, a1) {
if (a0 === a1) {
return true;
}
for (const item of Object.keys(a0)) {
if (isValueEqual(a0[item], a1[item])) {
continue;
}
return false;
}
return true;
};
export default Module1413;
export { TypeTag };
export function set(a0, a1, a2) {
const isValueEqual2 = isValueEqual(a0[a1], a2);
let r10 = a0;
if (!isValueEqual2) {
const r11 = {
...a0
};
r11[a1] = a2;
r10 = r11;
}
return r10;
}
export function merge(a0, a1) {
let r12;
let r4 = a0;
let r6 = null;
let r5 = null;
for (const key in a1) {
r12 = r6;
r5 = r12;
const r17 = a0[key];
const r14 = a1[key];
const r13 = r14 === void 0 || isValueEqual(r17, r14);
r6 = r12;
if (!r13) {
if (r12 == null) {
const r20 = {
...a0
};
r20[key] = r14;
r12 = r20;
} else {
r12[key] = r14;
}
r6 = r12;
}
}
r12 = r6;
r5 = r12;
if (r5 != null) {
r4 = r5;
}
return r4;
}
export function tryReuseExistingInPlacePlainRecord(a0, a1, a2) {
let r4 = a1;
Module38(a1 == null || a1[TypeTag] === a0, "Existing record type does not match the expected type");
if (!(a1 != null && isPlainRecordDataEqual(a1, a2))) {
a2[TypeTag] = a0;
r4 = a2;
}
return r4;
}
export function objectIsPlainRecordOfType(a0, a1) {
return (typeof a1 === "object" ? a1 != null : typeof a1 === "object") && (TypeTag in a1 && a1[TypeTag]) === a0;
}
export function constructInPlace(a0, a1) {
a1[TypeTag] = a0;
return a1;
}
export function copyConstruct(a0, a1) {
const r0 = {
...a1
};
r0[TypeTag] = a0;
return r0;
}
export { isValueEqual };
export { isPlainRecordDataEqual };