Files
discord-decomp/sources/by-id/module-06391-RenderStackManager.js
2026-07-28 01:06:53 +03:00

905 lines
49 KiB
JavaScript

/* Metro module 6391; source: unknown; dependencies: [6365, 6374, 6375] */
import Module06365 from './module-06365.js'; /* Metro dependency 6365 */
import ClassCallCheck from './module-06374-ClassCallCheck.js'; /* Metro dependency 6374 */
import CreateClass from './module-06375-CreateClass.js'; /* Metro dependency 6375 */
function _fun50086(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#50086, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6569:6, offset: 0x01210b50, size: 109 bytes, params: 8, frame: 18
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
exports.RenderStackManager = _fun50087();
function _fun50087() { // fn#50087, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6569:132, offset: 0x01210bbd, size: 291 bytes, params: 1, frame: 15
return CreateClass(RenderStackManager, [{key: 'sync', value: value_50089}, {key: 'hasOptimizedKey', value: function(a0) {
return this.stableIdMap.has(a0);
}}, {key: 'cleanup', value: value_50092}, {key: 'recycleKey', value: function(a0) {
var value;
if (!this.disableRecycling) {
value = this.keyMap.get(a0);
if (value) {
value = this.getRecyclePoolForType(value.itemType);
value.add(a0);
}
}
}}, {key: 'getRenderStack', value: function() {
return this.keyMap;
}}, {key: 'syncItem', value: value_50095}, {key: 'clearRecyclePool', value: function() {
var error;
var property = this.recycleKeyPools;
var iterator = property.values()[Symbol.iterator]();
var iterator2 = iterator.next;
var r2 = iterator;
var item2 = Reflect.apply(iterator2, r2, []);
var item = item2.value;
item2 = item2.done ? undefined : r2;
reducibleJoin2: while (true) {
if (item2 === undefined) {
return undefined;
}
break reducibleJoin2;
}
reducibleLoop2: while (true) {
try {
property = item.clear;
} catch (error) {
try {
item2.return();
} catch {
}
throw error;
}
try {
Reflect.apply(property, item, []);
} catch (error) {
try {
item2.return();
} catch {
}
throw error;
}
r2 = item2;
item2 = Reflect.apply(iterator2, r2, []);
item = item2.value;
item2 = item2.done ? undefined : r2;
if (item2 === undefined) {
break reducibleLoop2;
}
continue reducibleLoop2;
}
}}, {key: 'generateKey', value: function() {
var keyCounter = this.keyCounter;
var value = typeof keyCounter === 'bigint' ? keyCounter : +keyCounter;
this.keyCounter = typeof value === 'bigint' ? value + 1n : +value + 1;
return value.toString();
}}, {key: 'deleteKeyFromRecyclePool', value: function(a0, a1) {
var value = this.recycleKeyPools.get(a0);
if (value != null) {
value.delete(a1);
}
}}, {key: 'getRecyclePoolForType', value: function(a0) {
var r0;
var value2;
var property = this.recycleKeyPools;
var value = property.get(a0);
if (value) {
r0 = value;
} else {
property = global.Set;
value2 = new property();
property = this.recycleKeyPools;
property.set(a0, value2);
r0 = value2;
}
return r0;
}}, {key: 'getKeyFromRecyclePool', value: function(a0) {
var value3;
var value = this.getRecyclePoolForType(a0);
if (value.size > 0) {
value3 = value.values().next().value;
value.delete(value3);
return value3;
}
}}]);
function RenderStackManager() { // fn#50088, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6569:153, offset: 0x01210ce0, size: 216 bytes, params: 1, frame: 15
const r1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : global.Number.MAX_SAFE_INTEGER;
const value = environment.__proto__;
env1_1(this, RenderStackManager);
this.disableRecycling = false;
this.maxItemsInRecyclePool = r1;
let Map = global.Map;
this.recycleKeyPools = new Map();
Map = global.Map;
this.keyMap = new Map();
Map = global.Map;
this.stableIdMap = new Map();
this.keyCounter = 0;
const Set = global.Set;
this.unProcessedIndices = new Set();
}
function value_50089(a0, a1, a2, a3) { // fn#50089, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6569:494, offset: 0x01210db8, size: 584 bytes, params: 5, frame: 29
var r9;
var r12;
var r7;
var clearRecyclePool;
var unProcessedIndices;
var clear;
var keyMap;
var forEach;
var iterator;
var iterator2;
var item;
var item2;
var hasOptimizedKey;
var value;
var syncItem;
var value2;
var error;
var iterator3;
var item3;
var value3;
var items2;
var values;
var iterator4;
var item4;
var index;
var includes;
var push;
var iterator5;
var item5;
var value4;
var iterator6;
var item6;
var value5;
var cleanup;
exceptionSkip76: while (true) {
exceptionLanding76: while (true) {
exceptionSkip61: while (true) {
exceptionLanding61: while (true) {
exceptionSkip46: while (true) {
exceptionLanding46: while (true) {
exceptionSkip29: while (true) {
exceptionLanding29: while (true) {
exceptionSkip14: while (true) {
exceptionLanding14: while (true) {
var env0_0 = a0;
var env0_1 = a1;
var env0_2 = a2;
var env0_3 = a3;
var env0_4 = this;
clearRecyclePool = this.clearRecyclePool;
Reflect.apply(clearRecyclePool, this, []);
unProcessedIndices = this.unProcessedIndices;
clear = unProcessedIndices.clear;
Reflect.apply(clear, unProcessedIndices, []);
keyMap = this.keyMap;
forEach = keyMap.forEach;
Reflect.apply(forEach, keyMap, [_fun50090]);
iterator = a2[Symbol.iterator]();
iterator2 = iterator.next;
r9 = iterator;
while (true) {
item2 = Reflect.apply(iterator2, r9, []);
item = item2.value;
item2 = item2.done ? undefined : r9;
if (item2 === undefined) {
break;
}
try {
hasOptimizedKey = this.hasOptimizedKey;
} catch (error) {
break exceptionLanding14;
}
try {
value = a0(item);
} catch (error) {
break exceptionLanding14;
}
try {
value = Reflect.apply(hasOptimizedKey, this, [value]);
} catch (error) {
break exceptionLanding14;
}
if (!value) {
r9 = item2;
continue;
}
try {
syncItem = this.syncItem;
} catch (error) {
break exceptionLanding14;
}
try {
value = a1(item);
} catch (error) {
break exceptionLanding14;
}
try {
value2 = a0(item);
} catch (error) {
break exceptionLanding14;
}
try {
Reflect.apply(syncItem, this, [item, value, value2]);
} catch (error) {
break exceptionLanding14;
}
r9 = item2;
}
iterator = a2[Symbol.iterator]();
iterator3 = iterator.next;
r9 = iterator;
while (true) {
item3 = Reflect.apply(iterator3, r9, []);
item = item3.value;
item3 = item3.done ? undefined : r9;
if (item3 === undefined) {
break;
}
try {
hasOptimizedKey = this.hasOptimizedKey;
} catch (error) {
break exceptionLanding29;
}
try {
value = a0(item);
} catch (error) {
break exceptionLanding29;
}
try {
value = Reflect.apply(hasOptimizedKey, this, [value]);
} catch (error) {
break exceptionLanding29;
}
if (value) {
r9 = item3;
continue;
}
try {
syncItem = this.syncItem;
} catch (error) {
break exceptionLanding29;
}
try {
value = a1(item);
} catch (error) {
break exceptionLanding29;
}
try {
value3 = a0(item);
} catch (error) {
break exceptionLanding29;
}
try {
Reflect.apply(syncItem, this, [item, value, value3]);
} catch (error) {
break exceptionLanding29;
}
r9 = item3;
}
items2 = [];
keyMap = this.keyMap;
values = keyMap.values;
iterator = Reflect.apply(values, keyMap, [])[Symbol.iterator]();
iterator4 = iterator.next;
r9 = iterator;
while (true) {
item4 = Reflect.apply(iterator4, r9, []);
item = item4.value;
item4 = item4.done ? undefined : r9;
if (item4 === undefined) {
break;
}
try {
index = item.index;
} catch (error) {
break exceptionLanding46;
}
try {
value = index < a3;
} catch (error) {
break exceptionLanding46;
}
if (!value) {
r12 = value;
continue;
}
try {
includes = a2.includes;
} catch (error) {
break exceptionLanding46;
}
try {
value = Reflect.apply(includes, a2, [index]);
} catch (error) {
break exceptionLanding46;
}
value = !value;
r12 = value;
if (!r12) {
r9 = item4;
continue;
}
try {
push = items2.push;
} catch (error) {
break exceptionLanding46;
}
try {
Reflect.apply(push, items2, [index]);
} catch (error) {
break exceptionLanding46;
}
r9 = item4;
}
iterator = items2[Symbol.iterator]();
iterator5 = iterator.next;
r9 = iterator;
while (true) {
item5 = Reflect.apply(iterator5, r9, []);
item = item5.value;
item5 = item5.done ? undefined : r9;
if (item5 === undefined) {
break;
}
try {
hasOptimizedKey = this.hasOptimizedKey;
} catch (error) {
break exceptionLanding61;
}
try {
value = a0(item);
} catch (error) {
break exceptionLanding61;
}
try {
value = Reflect.apply(hasOptimizedKey, this, [value]);
} catch (error) {
break exceptionLanding61;
}
if (!value) {
r9 = item5;
continue;
}
try {
syncItem = this.syncItem;
} catch (error) {
break exceptionLanding61;
}
try {
value = a1(item);
} catch (error) {
break exceptionLanding61;
}
try {
value4 = a0(item);
} catch (error) {
break exceptionLanding61;
}
try {
Reflect.apply(syncItem, this, [item, value, value4]);
} catch (error) {
break exceptionLanding61;
}
r9 = item5;
}
iterator = items2[Symbol.iterator]();
iterator6 = iterator.next;
r7 = iterator;
while (true) {
item6 = Reflect.apply(iterator6, r7, []);
item = item6.value;
item6 = item6.done ? undefined : r7;
if (item6 === undefined) {
break;
}
try {
hasOptimizedKey = this.hasOptimizedKey;
} catch (error) {
break exceptionLanding76;
}
try {
value = a0(item);
} catch (error) {
break exceptionLanding76;
}
try {
value = Reflect.apply(hasOptimizedKey, this, [value]);
} catch (error) {
break exceptionLanding76;
}
if (value) {
r7 = item6;
continue;
}
try {
syncItem = this.syncItem;
} catch (error) {
break exceptionLanding76;
}
try {
value = a1(item);
} catch (error) {
break exceptionLanding76;
}
try {
value5 = a0(item);
} catch (error) {
break exceptionLanding76;
}
try {
Reflect.apply(syncItem, this, [item, value, value5]);
} catch (error) {
break exceptionLanding76;
}
r7 = item6;
}
cleanup = this.cleanup;
Reflect.apply(cleanup, this, [a0, a1, a2, a3]);
return undefined;
break exceptionSkip14;
}
try {
item2.return();
} catch {
}
throw error;
break exceptionSkip14;
}
break exceptionSkip29;
}
try {
item3.return();
} catch {
}
throw error;
break exceptionSkip29;
}
break exceptionSkip46;
}
try {
item4.return();
} catch {
}
throw error;
break exceptionSkip46;
}
break exceptionSkip61;
}
try {
item5.return();
} catch {
}
throw error;
break exceptionSkip61;
}
break exceptionSkip76;
}
try {
item6.return();
} catch {
}
throw error;
break exceptionSkip76;
}
function _fun50090({index, stableId, itemType}, a1) { // fn#50090, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6569:618, offset: 0x01211000, size: 171 bytes, params: 3, frame: 16
if (index >= importAll) {
env0_4.recycleKey(a1);
} else {
if (!env0_4.disableRecycling) {
env0_4.unProcessedIndices.add(index);
}
if (importDefault.includes(index)) {
if (!(stableId === env0_0(index) && itemType === require(index))) {
env0_4.recycleKey(a1);
}
} else {
env0_4.recycleKey(a1);
}
}
}
}
function value_50092(a0, a1, a2, a3) { // fn#50092, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6569:1331, offset: 0x012110c3, size: 639 bytes, params: 5, frame: 40
var r4;
var r26;
var r23;
var r3;
var r1;
var r2;
var r11;
var Array;
var prototype;
var value;
var array;
var keyMap;
var entries;
var iterator;
var iterator2;
var value2;
var value3;
var item;
var item2;
var binding;
var value4;
var property;
var property2;
var index;
var itemType;
var stableId;
var value5;
var value6;
var value7;
var value8;
var unProcessedIndices;
var values;
var value9;
var next;
var value10;
var value11;
var value12;
var value13;
var value14;
var value15;
var value16;
var syncItem;
var value17;
var deleteKeyFromRecyclePool;
var stableIdMap;
var property3;
var push;
var error;
var iterator3;
var item3;
var size;
var length;
var maxItemsInRecyclePool;
var from;
var value18;
var reverse;
var value19;
var value20;
var property4;
var includes;
var value21;
var value22;
exceptionSkip53: while (true) {
exceptionLanding53: while (true) {
exceptionSkip47: while (true) {
exceptionLanding47: while (true) {
Array = global.Array;
prototype = Array.prototype;
value = Object.create(prototype, {constructor: {value: Array}});
array = new Array();
value = array instanceof Object ? array : value;
keyMap = this.keyMap;
entries = keyMap.entries;
iterator = Reflect.apply(entries, keyMap, [])[Symbol.iterator]();
iterator2 = iterator.next;
value2 = environment.__proto__;
value3 = 0;
r4 = iterator;
reducibleLoop1: while (true) {
item2 = Reflect.apply(iterator2, r4, []);
item = item2.value;
item2 = item2.done ? undefined : r4;
if (item2 === undefined) {
break reducibleLoop1;
}
try {
binding = env1_0;
} catch (error) {
break exceptionLanding47;
}
try {
value4 = binding(item, 2);
} catch (error) {
break exceptionLanding47;
}
try {
property = value4[value3];
} catch (error) {
break exceptionLanding47;
}
try {
property2 = value4[1];
} catch (error) {
break exceptionLanding47;
}
try {
index = property2.index;
} catch (error) {
break exceptionLanding47;
}
try {
itemType = property2.itemType;
} catch (error) {
break exceptionLanding47;
}
try {
stableId = property2.stableId;
} catch (error) {
break exceptionLanding47;
}
try {
value5 = index >= a3;
} catch (error) {
break exceptionLanding47;
}
value6 = !value5;
reducibleJoin16: while (true) {
if (value5) {
r26 = value6;
break reducibleJoin16;
}
try {
value7 = a0(index);
} catch (error) {
break exceptionLanding47;
}
value8 = value7 !== stableId;
r26 = value8;
break reducibleJoin16;
}
if (!value5) {
reducibleJoin18: while (true) {
if (r26) {
break reducibleJoin18;
}
r4 = item2;
continue reducibleLoop1;
}
}
try {
unProcessedIndices = this.unProcessedIndices;
} catch (error) {
break exceptionLanding47;
}
try {
values = unProcessedIndices.values;
} catch (error) {
break exceptionLanding47;
}
try {
value9 = Reflect.apply(values, unProcessedIndices, []);
} catch (error) {
break exceptionLanding47;
}
try {
next = value9.next;
} catch (error) {
break exceptionLanding47;
}
try {
value10 = Reflect.apply(next, value9, []);
} catch (error) {
break exceptionLanding47;
}
try {
value11 = value10.value;
} catch (error) {
break exceptionLanding47;
}
value12 = true;
try {
value13 = value11 === undefined;
} catch (error) {
break exceptionLanding47;
}
reducibleJoin36: while (true) {
if (value13) {
r23 = value12;
break reducibleJoin36;
}
try {
value14 = a1(value11);
} catch (error) {
break exceptionLanding47;
}
try {
value15 = a0(value11);
} catch (error) {
break exceptionLanding47;
}
try {
value16 = itemType !== value14;
} catch (error) {
break exceptionLanding47;
}
if (value16) {
r23 = value12;
break reducibleJoin36;
}
try {
syncItem = this.syncItem;
} catch (error) {
break exceptionLanding47;
}
try {
Reflect.apply(syncItem, this, [value11, value14, value15]);
} catch (error) {
break exceptionLanding47;
}
value17 = false;
r23 = value17;
break reducibleJoin36;
}
if (r23) {
try {
deleteKeyFromRecyclePool = this.deleteKeyFromRecyclePool;
} catch (error) {
break exceptionLanding47;
}
try {
Reflect.apply(deleteKeyFromRecyclePool, this, [itemType, property]);
} catch (error) {
break exceptionLanding47;
}
try {
stableIdMap = this.stableIdMap;
} catch (error) {
break exceptionLanding47;
}
try {
property3 = stableIdMap.delete;
} catch (error) {
break exceptionLanding47;
}
try {
Reflect.apply(property3, stableIdMap, [stableId]);
} catch (error) {
break exceptionLanding47;
}
try {
push = value.push;
} catch (error) {
break exceptionLanding47;
}
try {
Reflect.apply(push, value, [property]);
} catch (error) {
break exceptionLanding47;
}
r4 = item2;
continue reducibleLoop1;
}
r4 = item2;
continue reducibleLoop1;
}
iterator = value[Symbol.iterator]();
iterator3 = iterator.next;
r3 = iterator;
reducibleLoop49: while (true) {
item3 = Reflect.apply(iterator3, r3, []);
item = item3.value;
item3 = item3.done ? undefined : r3;
if (item3 === undefined) {
break reducibleLoop49;
}
try {
keyMap = this.keyMap;
} catch (error) {
break exceptionLanding53;
}
try {
property = keyMap.delete;
} catch (error) {
break exceptionLanding53;
}
try {
Reflect.apply(property, keyMap, [item]);
} catch (error) {
break exceptionLanding53;
}
r3 = item3;
continue reducibleLoop49;
}
keyMap = this.keyMap;
size = keyMap.size;
length = a2.length;
value = size - length;
maxItemsInRecyclePool = this.maxItemsInRecyclePool;
reducibleJoin61: while (true) {
if (!(value > maxItemsInRecyclePool)) {
break reducibleJoin61;
}
maxItemsInRecyclePool = this.maxItemsInRecyclePool;
value -= maxItemsInRecyclePool;
Array = global.Array;
from = Array.from;
keyMap = this.keyMap;
entries = keyMap.entries;
value18 = Reflect.apply(from, Array, [Reflect.apply(entries, keyMap, [])]);
reverse = value18.reverse;
value19 = Reflect.apply(reverse, value18, []);
length = value19.length;
if (!(value3 < length)) {
break reducibleJoin61;
}
if (!(value3 < value)) {
break reducibleJoin61;
}
r1 = value3;
r2 = value3;
reducibleLoop57: while (true) {
binding = env1_0;
value20 = binding(value19[r1], 2);
property = value20[value3];
property4 = value20[1];
index = property4.index;
itemType = property4.itemType;
stableId = property4.stableId;
includes = a2.includes;
reducibleJoin59: while (true) {
if (Reflect.apply(includes, a2, [index])) {
r11 = r2;
break reducibleJoin59;
}
deleteKeyFromRecyclePool = this.deleteKeyFromRecyclePool;
Reflect.apply(deleteKeyFromRecyclePool, this, [itemType, property]);
stableIdMap = this.stableIdMap;
stableIdMap.delete(stableId);
keyMap = this.keyMap;
keyMap.delete(property);
value21 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1;
r11 = value21;
break reducibleJoin59;
}
value22 = typeof r1 === 'bigint' ? r1 + 1n : +r1 + 1;
length = value19.length;
if (value22 < length) {
if (r11 < value) {
r1 = value22;
r2 = r11;
continue reducibleLoop57;
}
break reducibleJoin61;
}
break reducibleJoin61;
}
}
return undefined;
break exceptionSkip47;
}
try {
item2.return();
} catch {
}
throw error;
break exceptionSkip47;
}
break exceptionSkip53;
}
try {
item3.return();
} catch {
}
throw error;
break exceptionSkip53;
}
}
}
}
function value_50095(a0, a1, a2) { // fn#50095, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6569:2355, offset: 0x0121138e, size: 218 bytes, params: 4, frame: 19
let r0 = this.stableIdMap.get(a2) || this.getKeyFromRecyclePool(a1);
r0 = !r0 ? this.generateKey() : r0;
this.unProcessedIndices.delete(a0);
value = this.keyMap.get(r0);
if (value) {
this.deleteKeyFromRecyclePool(a1, r0);
this.deleteKeyFromRecyclePool(value.itemType, r0);
this.stableIdMap.delete(value.stableId);
value.index = a0;
value.itemType = a1;
value.stableId = a2;
} else {
this.keyMap.set(r0, {itemType: a1, index: a0, stableId: a2});
}
this.stableIdMap.set(a2, r0);
return r0;
}
global.__d(_fun50086, 6391, [6365, 6374, 6375]) /* metro module 6391, dependencies: [6365, 6374, 6375] */;