Files
discord-decomp/sources/modules/gateway/GatewaySocketAnalytics.tsx
T
2026-07-28 01:06:53 +03:00

564 lines
24 KiB
TypeScript

/* Metro module 12502; source: modules/gateway/GatewaySocketAnalytics.tsx; dependencies: [29, 1878, 661, 20, 14, 683, 2] */
import TTITracker from '../tti_analytics/TTITracker.tsx'; /* Metro dependency 14 */
import ObjectWithoutProperties from '../../by-id/module-00029-ObjectWithoutProperties.js'; /* Metro dependency 29 */
import UserStore from '../../stores/UserStore.tsx'; /* Metro dependency 1878 */
import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ConstantsModule from '../../Constants.tsx'; /* Metro dependency 661 */
function _fun95253(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#95253, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:6, offset: 0x02136c26, size: 304 bytes, params: 8, frame: 19
const env0_2 = ['guilds', 'merged_presences', 'merged_members', 'read_state', 'private_channels',
'user_guild_settings', 'user_settings', 'user_settings_proto', 'experiments', 'guild_experiments',
'relationships', 'users'];
const env0_3 = ['features'];
const env0_4 = ['threads', 'guild_scheduled_events'];
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
(FileImportTrackerModule).fileFinishedImporting('modules/gateway/GatewaySocketAnalytics.tsx');
exports.reportDevtoolsEvent = function() {
};
exports.logReadyPayloadReceived = logReadyPayloadReceived;
exports.getConnectionPath = getConnectionPath;
exports.getReadyPayloadByteSizeAnalytics = getReadyPayloadByteSizeAnalytics;
exports.createResumeAnalytics = function(a0) {
var value = a0;
var object = {'connectTime': null, 'numEvents': 0, 'largestWaitTime': 0, 'dispatchTime': 0, 'totalWaitTime': 0,
'initialWaitTime': 0};
object.connectTime = value ?? 0;
object.startTime = global.performance.now();
object.lastUpdateTime = global.performance.now();
return object;
};
exports.logResumeAnalytics = logResumeAnalytics;
function prettyPrintTrace_(a0, a1) { // fn#95254, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:424, offset: 0x02136d56, size: 173 bytes, params: 3, frame: 29
var r2;
var r12;
var r0;
var property;
var micros;
var value4;
var HermesInternal;
var concat;
var value5;
var prettyPrintTrace_Binding;
var calls;
var value6;
if (a0 == null) {
return '';
}
let length = a0.length;
let value = 0;
const value2 = '';
if (value < length) {
r2 = value2;
r12 = value;
reducibleLoop2: while (true) {
property = a0[r12];
value = r12 + 1;
micros = a0[value].micros;
value4 = micros / 1000;
HermesInternal = global.HermesInternal;
concat = HermesInternal.concat;
value5 = r2 + ('\n' + a1 + property + ': ' + value4);
prettyPrintTrace_Binding = prettyPrintTrace_;
calls = a0[value].calls;
value = value5 + prettyPrintTrace_Binding(calls, a1 + '| ');
value6 = r12 + 2;
length = a0.length;
if (value6 < length) {
r2 = value;
r12 = value6;
continue reducibleLoop2;
}
r0 = value;
break reducibleLoop2;
}
} else {
r0 = value2;
}
return r0;
}
function eachTraceCall(a0, a1) { // fn#95255, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:602, offset: 0x02136e03, size: 105 bytes, params: 3, frame: 19
var r5;
var length;
var value;
var value2;
var property;
var property2;
var micros;
var eachTraceCallBinding;
var calls;
reducibleJoin4: while (true) {
if (a0 == null) {
break reducibleJoin4;
}
length = a0.length;
value = 0;
if (!(length > value)) {
break reducibleJoin4;
}
length = a0.length;
value2 = environment;
if (!(value < length)) {
break reducibleJoin4;
}
r5 = value;
reducibleLoop3: while (true) {
property = a0[r5];
property2 = a0[r5 + 1];
micros = property2.micros;
a1(property, micros);
eachTraceCallBinding = eachTraceCall;
calls = property2.calls;
eachTraceCallBinding(calls, a1);
value = r5 + 2;
length = a0.length;
if (value < length) {
r5 = value;
continue reducibleLoop3;
}
break reducibleJoin4;
}
}
}
function getReadyPayloadSizeAnalytics({guilds}) { // fn#95256, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:742, offset: 0x02136e6c, size: 72 bytes, params: 2, frame: 12
guilds.forEach(function(a0) {
var r2;
if (!a0.unavailable) {
r2 = a0.data_mode === 'partial' ? a0.partial_updates.channels : a0.channels;
if (r2 != null && r2.forEach != null) {
r2.forEach(_fun95258);
}
}
});
return {num_guilds: guilds.length, num_guild_channels: 0, num_guild_category_channels: 0};
function _fun95257(a0) { // fn#95257, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:822, offset: 0x02136eb4, size: 90 bytes, params: 2, frame: 12
var channels;
if (!a0.unavailable) {
channels = a0.data_mode === 'partial' ? a0.partial_updates.channels : a0.channels;
if (channels != null && channels.forEach != null) {
channels.forEach(_fun95258);
}
}
function _fun95258({type}) { // fn#95258, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:950, offset: 0x02136f0e, size: 54 bytes, params: 2, frame: 3
let binding = env1_1;
env1_1 = typeof binding === 'bigint' ? binding + 1n : +binding + 1;
const GUILD_CATEGORY = ChannelTypes.GUILD_CATEGORY;
if (type === GUILD_CATEGORY) {
binding = env1_0;
env1_0 = typeof binding === 'bigint' ? binding + 1n : +binding + 1;
}
}
}
}
function logReadyPayloadReceived(a0, a1, a2, a3, a4) { // fn#95260, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:1228, offset: 0x02136f44, size: 503 bytes, params: 6, frame: 23
var defaultImport;
var addDetail;
var Math;
let value = getReadyPayloadTraceAnalytics(a1);
if (a3 != null) {
defaultImport = importDefault(20) /* metro dependency 20: AppStartPerformance */;
addDetail = defaultImport.addDetail;
Math = global.Math;
Reflect.apply(addDetail, defaultImport, ['payload_size(kb)', Math.round(a3.uncompressed_byte_size / 1024)]);
}
const defaultImport2 = importDefault(20) /* metro dependency 20: AppStartPerformance */;
defaultImport2.addDetail('server_time(ms)', value.identify_total_server_duration_ms ?? 0);
const object = {};
copyDataProperties(object, a3, undefined);
copyDataProperties(object, value, undefined);
copyDataProperties(object, getReadyPayloadSizeAnalytics(a1), undefined);
copyDataProperties(object, a4, undefined);
object['duration_ms_since_identify_start'] = a2 - a0.identifyStartTime;
object['duration_ms_since_connection_start'] = a2 - a0.connectionStartTime;
const Date = global.Date;
object['duration_ms_since_emit_start'] = Date.now() - a2;
object['is_reconnect'] = a0.hasConnectedOnce;
object['is_fast_connect'] = a0.isFastConnect;
object['did_force_clear_guild_hashes'] = a0.didForceClearGuildHashes;
object['identify_uncompressed_byte_size'] = a0.identifyUncompressedByteSize;
object['identify_compressed_byte_size'] = a0.identifyCompressedByteSize;
const hadCacheAtStartup = a0.analytics.hadCacheAtStartup;
object['had_cache_at_startup'] = hadCacheAtStartup != null && hadCacheAtStartup;
const usedCacheAtStartup = a0.analytics.usedCacheAtStartup;
object['used_cache_at_startup'] = usedCacheAtStartup != null && usedCacheAtStartup;
(TTITracker).attachReadyPayloadProperties(object);
value = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
const track = value.track;
const READY_PAYLOAD_RECEIVED = AnalyticEvents.READY_PAYLOAD_RECEIVED;
Reflect.apply(track, value, [READY_PAYLOAD_RECEIVED, object, {logEventProperties: true}]);
function getReadyPayloadTraceAnalytics({_trace}) { // fn#95261, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:1284, owner: logReadyPayloadReceived.getReadyPayloadTraceAnalytics, offset: 0x0213713b, size: 254 bytes, params: 2, frame: 20
var environment;
var r7;
var r5;
var r3;
var JSON;
var value;
var value2;
var property;
var value3;
var value4;
var value5;
var value6;
var value7;
var value8;
var Math;
var floor;
var micros;
var value9;
var value10;
var value11;
var eachTraceCallBinding;
var closure;
var error;
const object = {};
try {
JSON = global.JSON;
value = JSON.parse(_trace);
value2 = 0;
property = value[value2];
value3 = property != null;
if (value3) {
property = value[value2];
value4 = property !== '';
r7 = value4;
} else {
r7 = value3;
}
if (r7) {
property = value[value2];
value5 = typeof property === 'string';
r5 = value5;
} else {
r5 = r7;
}
if (r5) {
property = value[value2];
value6 = property.startsWith('gateway-');
r3 = value6;
} else {
r3 = r5;
}
if (r3) {
property = value[1];
value7 = typeof property !== 'object';
if (value7) {
r3 = value2;
} else {
property = value[1];
value8 = 'micros' in property;
if (value8) {
Math = global.Math;
floor = Math.floor;
property = value[1];
micros = property.micros;
value9 = micros / 1000;
value10 = Reflect.apply(floor, Math, [value9]);
r3 = value10;
} else {
r3 = value2;
}
}
object.identify_total_server_duration_ms = r3;
}
value11 = environment.__proto__;
eachTraceCallBinding = eachTraceCall;
closure = _fun95262;
eachTraceCallBinding(value, closure);
} catch (error) {
}
return object;
function _fun95262(a0, a1) { // fn#95262, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:1567, offset: 0x02137239, size: 116 bytes, params: 3, frame: 13
if (a0 === 'start_session') {
env0_0.identify_api_duration_ms = global.Math.floor(a1 / 1000);
} else if (a0 === 'guilds_connect') {
env0_0.identify_guilds_duration_ms = global.Math.floor(a1 / 1000);
}
}
}
}
function getConnectionPath(a0) { // fn#95263, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:2632, offset: 0x021372ad, size: 147 bytes, params: 2, frame: 18
var r8;
var r2;
var r0;
var _trace;
var value3;
var property;
var value4;
var value5;
var prettyPrintTrace_Binding;
var JSON;
var parse;
var value6;
var error;
var join;
let value = undefined;
reducibleJoin3: while (true) {
reduciblePort22: while (true) {
exceptionLanding21: while (true) {
try {
_trace = a0._trace;
} catch (error) {
break exceptionLanding21;
}
break reducibleJoin3;
}
break reduciblePort22;
}
_trace = a0._trace;
value = '???';
reducibleJoin24: while (true) {
if (_trace != null) {
_trace = a0._trace;
join = _trace.join;
value = Reflect.apply(join, _trace, [' -> ']);
r0 = value;
break reducibleJoin24;
}
r0 = value;
break reducibleJoin24;
}
return r0;
}
const value2 = null;
try {
value3 = value2 == _trace;
} catch (error) {
break exceptionLanding21;
}
reducibleJoin8: while (true) {
if (value3) {
r8 = value;
break reducibleJoin8;
}
try {
property = _trace[0];
} catch (error) {
break exceptionLanding21;
}
r8 = property;
break reducibleJoin8;
}
try {
value4 = value2 == r8;
} catch (error) {
break exceptionLanding21;
}
reducibleJoin18: while (true) {
if (value4) {
r2 = value2;
break reducibleJoin18;
}
value5 = environment;
try {
prettyPrintTrace_Binding = prettyPrintTrace_;
} catch (error) {
break exceptionLanding21;
}
try {
JSON = global.JSON;
} catch (error) {
break exceptionLanding21;
}
try {
parse = JSON.parse;
} catch (error) {
break exceptionLanding21;
}
try {
value6 = Reflect.apply(parse, JSON, [r8]);
} catch (error) {
break exceptionLanding21;
}
try {
value = prettyPrintTrace_Binding(value6, '');
} catch (error) {
break exceptionLanding21;
}
r2 = value;
break reducibleJoin18;
}
try {
value = value2 != r2;
} catch (error) {
break exceptionLanding21;
}
if (value) {
return r2;
}
_trace = a0._trace;
value = '???';
reducibleJoin24: while (true) {
if (_trace != null) {
_trace = a0._trace;
join = _trace.join;
value = Reflect.apply(join, _trace, [' -> ']);
r0 = value;
break reducibleJoin24;
}
r0 = value;
break reducibleJoin24;
}
return r0;
}
function getReadyPayloadByteSizeAnalytics(a0) { // fn#95264, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:2909, offset: 0x02137340, size: 914 bytes, params: 2, frame: 38
const Math = global.Math;
if (Math.random() > 0.01) {
return undefined;
}
let Date = global.Date;
value = Date.now();
const guilds = a0.guilds;
const merged_presences = a0.merged_presences;
const merged_members = a0.merged_members;
const read_state = a0.read_state;
const private_channels = a0.private_channels;
const user_guild_settings = a0.user_guild_settings;
const user_settings = a0.user_settings;
const user_settings_proto = a0.user_settings_proto;
const experiments = a0.experiments;
const guild_experiments = a0.guild_experiments;
const relationships = a0.relationships;
const users = a0.users;
const value3 = undefined;
const value4 = ObjectWithoutProperties(a0, env0_2);
guilds.forEach(_fun95265);
const object = {};
let JSON = global.JSON;
let stringify = JSON.stringify;
let length = Reflect.apply(stringify, JSON,
[(merged_presences == null ? value3 : merged_presences.friends) ?? []]).length;
object.presences_size = length;
JSON = global.JSON;
object.users_size = JSON.stringify(users).length;
JSON = global.JSON;
object.read_states_size = JSON.stringify(read_state).length;
JSON = global.JSON;
object.private_channels_size = JSON.stringify(private_channels).length;
JSON = global.JSON;
stringify = JSON.stringify;
const value5 = '';
object.user_settings_size = Reflect.apply(stringify, JSON,
[user_settings ?? value5]).length + (user_settings_proto ?? value5).length;
JSON = global.JSON;
length = JSON.stringify(experiments ?? []).length;
JSON = global.JSON;
object.experiments_size = length + JSON.stringify(guild_experiments ?? []).length;
JSON = global.JSON;
object.user_guild_settings_size = JSON.stringify(user_guild_settings).length;
JSON = global.JSON;
object.relationships_size = JSON.stringify(relationships).length;
JSON = global.JSON;
object.remaining_data_size = JSON.stringify(value4 ?? ({})).length;
JSON = global.JSON;
object.guild_channels_size = JSON.stringify([]).length;
JSON = global.JSON;
object.guild_members_size = JSON.stringify(merged_members ?? []).length;
JSON = global.JSON;
object.guild_presences_size = JSON.stringify((merged_presences == null ? value3 : merged_presences.guilds) ?? []).length;
JSON = global.JSON;
object.guild_roles_size = JSON.stringify([]).length;
JSON = global.JSON;
object.guild_emojis_size = JSON.stringify([]).length;
JSON = global.JSON;
object.guild_threads_size = JSON.stringify([]).length;
JSON = global.JSON;
object.guild_stickers_size = JSON.stringify([]).length;
JSON = global.JSON;
object.guild_events_size = JSON.stringify([]).length;
JSON = global.JSON;
object.guild_features_size = JSON.stringify([]).length;
JSON = global.JSON;
object.guild_remaining_data_size = JSON.stringify([]).length;
Date = global.Date;
object.size_metrics_duration_ms = Date.now() - value;
return object;
function _fun95265(a0) { // fn#95265, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:3290, offset: 0x021376d2, size: 320 bytes, params: 2, frame: 21
var r4;
var features;
var value;
var binding;
var value2;
var threads;
var guild_scheduled_events;
var push;
var data_mode;
if (!a0.unavailable) {
r4 = a0.properties ?? ({});
features = r4.features;
value = environment.__proto__;
binding = env1_5;
value2 = binding(r4, env1_3);
threads = a0.threads;
guild_scheduled_events = a0.guild_scheduled_events;
value = binding(a0, env1_4);
binding = env0_0;
push = binding.push;
data_mode = a0.data_mode;
Reflect.apply(push, binding, [data_mode === 'partial' ? a0.partial_updates.channels : a0.channels]);
binding = env0_1;
push = binding.push;
data_mode = a0.data_mode;
Reflect.apply(push, binding, [data_mode === 'partial' ? a0.partial_updates.roles : a0.roles]);
binding = env0_2;
push = binding.push;
data_mode = a0.data_mode;
Reflect.apply(push, binding, [data_mode === 'partial' ? a0.partial_updates.emojis : a0.emojis]);
binding = env0_3;
binding.push(threads);
binding = env0_4;
push = binding.push;
data_mode = a0.data_mode;
Reflect.apply(push, binding, [data_mode === 'partial' ? a0.partial_updates.stickers : a0.stickers]);
binding = ObjectWithoutProperties;
binding.push(features);
binding = env0_6;
binding.push(guild_scheduled_events);
binding = ConstantsModule.AnalyticEvents;
binding.push(value, value2);
}
}
}
function logResumeAnalytics(a0) { // fn#95267, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:12692:5050, offset: 0x02137863, size: 338 bytes, params: 2, frame: 20
var Math;
var defaultImport;
var track;
var CONNECTION_RESUMED;
var object;
const currentUser = UserStore.getCurrentUser();
if (!((currentUser == null || !currentUser.isStaff()) && global.Math.random() < 0.5)) {
defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
track = defaultImport.track;
CONNECTION_RESUMED = AnalyticEvents.CONNECTION_RESUMED;
object = {};
object.connect_time_ms = a0.connectTime;
Math = global.Math;
object.resume_time_ms = Math.floor(global.performance.now() - a0.startTime);
object.num_events = a0.numEvents;
Math = global.Math;
object.largest_wait_time_ms = Math.floor(a0.largestWaitTime);
Math = global.Math;
object.initial_wait_time_ms = Math.floor(a0.initialWaitTime);
Math = global.Math;
object.total_wait_time_ms = Math.floor(a0.totalWaitTime);
Math = global.Math;
object.total_dispatch_time_ms = Math.floor(a0.dispatchTime);
Reflect.apply(track, defaultImport, [CONNECTION_RESUMED, object, {logEventProperties: true}]);
}
}
}
global.__d(_fun95253, 12502, [29, 1878, 661, 20, 14, 683,
2]) /* metro module 12502, dependencies: [29, 1878, 661, 20, 14, 683, 2] */;