feat(lib/modules/metro): use Map for storing module dependencies for quicker access, rename file

This commit is contained in:
PalmDevs 2025-07-17 16:55:08 +07:00
parent 7359567b3e
commit 79ce47c2bc
No known key found for this signature in database
GPG key ID: 6FAE8F8677ACA8BA
10 changed files with 20 additions and 18 deletions

View file

@ -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'

View file

@ -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"
}
}
}

View file

@ -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'

View file

@ -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'

View file

@ -6,7 +6,7 @@ import {
mInitialized,
mList,
mUninitialized,
} from '../metro/_internal'
} from '../metro/patches'
import {
getInitializedModuleExports,
isModuleInitialized,

View file

@ -1,4 +1,4 @@
import { mInitialized } from '../metro/_internal'
import { mInitialized } from '../metro/patches'
import {
onAnyModuleInitialized,
onModuleFinishedImporting,

View file

@ -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

View file

@ -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<Metro.ModuleID>()
/** Known initialized IDs (not blacklisted) */
/** Initialized IDs (not blacklisted) */
export const mInitialized = new Set<Metro.ModuleID>()
export const mImportedPaths = new Map<string, Metro.ModuleID>()
export const mDeps: Metro.DependencyMap[] = []
export const mDeps = new Map<Metro.ModuleID, Metro.DependencyMap>()
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

View file

@ -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)
}
/**

View file

@ -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')
},