From 79ce47c2bce3e312386bede545db282c6a31f304 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Thu, 17 Jul 2025 16:55:08 +0700 Subject: [PATCH] feat(lib/modules/metro): use Map for storing module dependencies for quicker access, rename file --- lib/assets/src/preinit.ts | 5 ++++- lib/modules/package.json | 6 +++--- lib/modules/src/finders/_internal.ts | 2 +- lib/modules/src/finders/filters.ts | 2 +- lib/modules/src/finders/lookup.ts | 2 +- lib/modules/src/finders/wait.ts | 2 +- lib/modules/src/metro/custom.ts | 2 +- lib/modules/src/metro/{_internal.ts => patches.ts} | 11 +++++------ lib/modules/src/metro/utils.ts | 4 ++-- src/index.ts | 2 +- 10 files changed, 20 insertions(+), 18 deletions(-) rename lib/modules/src/metro/{_internal.ts => patches.ts} (95%) diff --git a/lib/assets/src/preinit.ts b/lib/assets/src/preinit.ts index 960e002..d18e35c 100644 --- a/lib/assets/src/preinit.ts +++ b/lib/assets/src/preinit.ts @@ -1,4 +1,3 @@ -import { mInitializingId, mUninitialized } from '@revenge-mod/modules/_/metro' import { byDependencies, byName, @@ -9,6 +8,10 @@ import { lookupModules, } from '@revenge-mod/modules/finders/lookup' import { waitForModules } from '@revenge-mod/modules/finders/wait' +import { + mInitializingId, + mUninitialized, +} from '@revenge-mod/modules/metro/patches' import { getModuleDependencies } from '@revenge-mod/modules/metro/utils' import { proxify } from '@revenge-mod/utils/proxy' import { aOverrides } from './_internal' diff --git a/lib/modules/package.json b/lib/modules/package.json index 44c19dd..39a3f2d 100644 --- a/lib/modules/package.json +++ b/lib/modules/package.json @@ -18,6 +18,9 @@ "./metro/subscriptions": { "default": "./src/metro/subscriptions/index.ts" }, + "./metro/patches": { + "default": "./src/metro/patches.ts" + }, "./metro/utils": { "default": "./src/metro/utils.ts" }, @@ -26,9 +29,6 @@ }, "./types": { "types": "./src/types.ts" - }, - "./_/metro": { - "default": "./src/metro/_internal.ts" } } } diff --git a/lib/modules/src/finders/_internal.ts b/lib/modules/src/finders/_internal.ts index 4924e1b..cf45752 100644 --- a/lib/modules/src/finders/_internal.ts +++ b/lib/modules/src/finders/_internal.ts @@ -1,6 +1,6 @@ import { getCurrentStack } from '@revenge-mod/utils/error' import { cacheFilterResultForId } from '../caches' -import { mInitialized } from '../metro/_internal' +import { mInitialized } from '../metro/patches' import { isModuleExportBad } from '../metro/utils' import type { If } from '@revenge-mod/utils/types' import type { Metro } from '../types' diff --git a/lib/modules/src/finders/filters.ts b/lib/modules/src/finders/filters.ts index 327d3e0..b9518ba 100644 --- a/lib/modules/src/finders/filters.ts +++ b/lib/modules/src/finders/filters.ts @@ -1,4 +1,4 @@ -import { mInitialized } from '../metro/_internal' +import { mInitialized } from '../metro/patches' import { getModuleDependencies, isModuleInitialized } from '../metro/utils' import type { If, LogicalOr } from '@revenge-mod/utils/types' import type { Metro } from '../types' diff --git a/lib/modules/src/finders/lookup.ts b/lib/modules/src/finders/lookup.ts index d3c64c6..6c4e6d3 100644 --- a/lib/modules/src/finders/lookup.ts +++ b/lib/modules/src/finders/lookup.ts @@ -6,7 +6,7 @@ import { mInitialized, mList, mUninitialized, -} from '../metro/_internal' +} from '../metro/patches' import { getInitializedModuleExports, isModuleInitialized, diff --git a/lib/modules/src/finders/wait.ts b/lib/modules/src/finders/wait.ts index d4c03af..7fa204f 100644 --- a/lib/modules/src/finders/wait.ts +++ b/lib/modules/src/finders/wait.ts @@ -1,4 +1,4 @@ -import { mInitialized } from '../metro/_internal' +import { mInitialized } from '../metro/patches' import { onAnyModuleInitialized, onModuleFinishedImporting, diff --git a/lib/modules/src/metro/custom.ts b/lib/modules/src/metro/custom.ts index a388248..35f0b4f 100644 --- a/lib/modules/src/metro/custom.ts +++ b/lib/modules/src/metro/custom.ts @@ -3,7 +3,7 @@ * Making initialization faster and use less resources. */ -import { mList } from './_internal' +import { mList } from './patches' import type { Metro } from '../types' export const Initialized = 1 << 0 diff --git a/lib/modules/src/metro/_internal.ts b/lib/modules/src/metro/patches.ts similarity index 95% rename from lib/modules/src/metro/_internal.ts rename to lib/modules/src/metro/patches.ts index c46a2fe..ab72261 100644 --- a/lib/modules/src/metro/_internal.ts +++ b/lib/modules/src/metro/patches.ts @@ -17,15 +17,14 @@ import { } from './subscriptions/_internal' import type { Metro, RevengeMetro } from '../types' -/** Initializing ID */ export let mInitializingId: Metro.ModuleID | null = null -/** Known uninitialized IDs */ +/** Uninitialized IDs (not blacklisted) */ export const mUninitialized = new Set() -/** Known initialized IDs (not blacklisted) */ +/** Initialized IDs (not blacklisted) */ export const mInitialized = new Set() export const mImportedPaths = new Map() -export const mDeps: Metro.DependencyMap[] = [] +export const mDeps = new Map() export const mList: RevengeMetro.ModuleList = new Map() @@ -34,7 +33,7 @@ const metroDefine = ( id: Metro.ModuleID, dependencyMap: Metro.DependencyMap, ) => { - mDeps[id] = dependencyMap! + mDeps.set(id, dependencyMap!) mUninitialized.add(id) const moduleObject = { exports: {} } @@ -107,7 +106,7 @@ function handleFactoryCall( metroImportAll, moduleObject, moduleObject.exports, - mDeps[mInitializingId], + mDeps.get(mInitializingId)!, ) const { exports } = moduleObject diff --git a/lib/modules/src/metro/utils.ts b/lib/modules/src/metro/utils.ts index ac17d00..0d01bb8 100644 --- a/lib/modules/src/metro/utils.ts +++ b/lib/modules/src/metro/utils.ts @@ -1,6 +1,6 @@ import { isProxy } from '@revenge-mod/utils/proxy' -import { mDeps, mList } from './_internal' import { FlagKey, Initialized, ModuleObjectKey } from './custom' +import { mDeps, mList } from './patches' import type { Metro } from '../types' /** @@ -11,7 +11,7 @@ import type { Metro } from '../types' export function getModuleDependencies( id: Metro.ModuleID, ): Metro.DependencyMap | undefined { - return mDeps[id] + return mDeps.get(id) } /** diff --git a/src/index.ts b/src/index.ts index 350bb75..8d50297 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,7 +9,7 @@ Object.defineProperty(globalThis, '__c', { globalThis.__c = clear // Patch Metro's core functions - require('@revenge-mod/modules/_/metro') + require('@revenge-mod/modules/metro/patches') require('./preinit') },