fix(lib/discord/common)!: split to own submodules + don't restrict everything to init+
This commit is contained in:
parent
217617a663
commit
c49f3eb471
21 changed files with 147 additions and 102 deletions
|
|
@ -9,9 +9,24 @@
|
|||
"./common": {
|
||||
"default": "./src/common/index.ts"
|
||||
},
|
||||
"./common/app-start-performance": {
|
||||
"default": "./src/common/app-start-performance.ts"
|
||||
},
|
||||
"./common/constants": {
|
||||
"default": "./src/common/constants.ts"
|
||||
},
|
||||
"./common/flux": {
|
||||
"default": "./src/common/flux.ts"
|
||||
},
|
||||
"./common/import-tracker": {
|
||||
"default": "./src/common/import-tracker.ts"
|
||||
},
|
||||
"./common/logger": {
|
||||
"default": "./src/common/logger.ts"
|
||||
},
|
||||
"./common/tokens": {
|
||||
"default": "./src/common/tokens.ts"
|
||||
},
|
||||
"./common/utils": {
|
||||
"default": "./src/common/utils.ts"
|
||||
},
|
||||
|
|
@ -52,4 +67,4 @@
|
|||
"default": "./src/modules/settings/_internal.ts"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,8 +10,8 @@ import {
|
|||
ReactNativeModuleId,
|
||||
} from '@revenge-mod/react'
|
||||
import { proxify } from '@revenge-mod/utils/proxy'
|
||||
import { ImportTrackerModuleId } from './common'
|
||||
import { DispatcherModuleId } from './common/flux'
|
||||
import { ImportTrackerModuleId } from './common/import-tracker'
|
||||
import type { DiscordModules } from './types'
|
||||
|
||||
const { relative, loose } = withDependencies
|
||||
|
|
|
|||
1
lib/discord/src/common/app-start-performance.ts
Normal file
1
lib/discord/src/common/app-start-performance.ts
Normal file
|
|
@ -0,0 +1 @@
|
|||
export { AppStartPerformance } from '../preinit'
|
||||
21
lib/discord/src/common/constants.ts
Normal file
21
lib/discord/src/common/constants.ts
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
import { lookupModule } from '@revenge-mod/modules/finders'
|
||||
import {
|
||||
withDependencies,
|
||||
withProps,
|
||||
} from '@revenge-mod/modules/finders/filters'
|
||||
import type { DiscordModules } from '@revenge-mod/discord/types'
|
||||
|
||||
const { loose, relative } = withDependencies
|
||||
|
||||
export const [Constants, ConstantsModuleId] = lookupModule(
|
||||
withProps<DiscordModules.Constants>('ME')
|
||||
.and(
|
||||
withDependencies(
|
||||
loose([
|
||||
null,
|
||||
relative.withDependencies(loose([relative(2, true)]), 1),
|
||||
]),
|
||||
),
|
||||
)
|
||||
.keyAs('revenge.discord.common.Constants'),
|
||||
)
|
||||
1
lib/discord/src/common/import-tracker.ts
Normal file
1
lib/discord/src/common/import-tracker.ts
Normal file
|
|
@ -0,0 +1 @@
|
|||
export { ImportTrackerModuleId } from '../patches/import-tracker'
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
import { lookupModule } from '@revenge-mod/modules/finders'
|
||||
import {
|
||||
withDependencies,
|
||||
withName,
|
||||
withProps,
|
||||
} from '@revenge-mod/modules/finders/filters'
|
||||
import { proxify } from '@revenge-mod/utils/proxy'
|
||||
import type { Metro } from '@revenge-mod/modules/types'
|
||||
import type { DiscordModules } from '../types'
|
||||
|
||||
export { AppStartPerformance } from '../preinit'
|
||||
export * as flux from './flux'
|
||||
export * as utils from './utils'
|
||||
|
||||
const { loose, relative } = withDependencies
|
||||
|
||||
// ../discord_common/js/packages/logger/Logger.tsx
|
||||
export const [Logger, LoggerModuleId] = lookupModule(
|
||||
withName<typeof DiscordModules.Logger>('Logger'),
|
||||
) as [typeof DiscordModules.Logger, Metro.ModuleID]
|
||||
|
||||
// ../discord_common/js/packages/tokens/native.tsx
|
||||
export const [Tokens, TokensModuleId] = lookupModule(withProps('RawColor')) as [
|
||||
any,
|
||||
Metro.ModuleID,
|
||||
]
|
||||
|
||||
/**
|
||||
* If you need to use this ID, unproxify {@link Constants} first.
|
||||
*
|
||||
* ```js
|
||||
* preinit() {
|
||||
* unproxify(Constants)
|
||||
* // Module ID will now be set!
|
||||
* ConstantsModuleId // ...
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
export let ConstantsModuleId: Metro.ModuleID | undefined
|
||||
export let Constants: DiscordModules.Constants = proxify(
|
||||
() => {
|
||||
const [module, id] = lookupModule(
|
||||
withProps<DiscordModules.Constants>('ME')
|
||||
.and(
|
||||
withDependencies(
|
||||
loose([
|
||||
null,
|
||||
relative.withDependencies(
|
||||
loose([relative(2, true)]),
|
||||
1,
|
||||
),
|
||||
]),
|
||||
),
|
||||
)
|
||||
.keyAs('revenge.discord.common.Constants'),
|
||||
)
|
||||
|
||||
if (module) {
|
||||
ConstantsModuleId = id
|
||||
return (Constants = module)
|
||||
}
|
||||
},
|
||||
{ hint: {} },
|
||||
)!
|
||||
|
||||
export { ImportTrackerModuleId } from '../patches/import-tracker'
|
||||
9
lib/discord/src/common/logger.ts
Normal file
9
lib/discord/src/common/logger.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import { lookupModule } from '@revenge-mod/modules/finders'
|
||||
import { withName } from '@revenge-mod/modules/finders/filters'
|
||||
import type { DiscordModules } from '@revenge-mod/discord/types'
|
||||
import type { Metro } from '@revenge-mod/modules/types'
|
||||
|
||||
// ../discord_common/js/packages/logger/Logger.tsx
|
||||
export const [Logger, LoggerModuleId] = lookupModule(
|
||||
withName<typeof DiscordModules.Logger>('Logger'),
|
||||
) as [typeof DiscordModules.Logger, Metro.ModuleID]
|
||||
9
lib/discord/src/common/tokens.ts
Normal file
9
lib/discord/src/common/tokens.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import { lookupModule } from '@revenge-mod/modules/finders'
|
||||
import { withProps } from '@revenge-mod/modules/finders/filters'
|
||||
import type { Metro } from '@revenge-mod/modules/types'
|
||||
|
||||
// ../discord_common/js/packages/tokens/native.tsx
|
||||
export const [Tokens, TokensModuleId] = lookupModule(withProps('RawColor')) as [
|
||||
any,
|
||||
Metro.ModuleID,
|
||||
]
|
||||
|
|
@ -10,7 +10,7 @@ import {
|
|||
ReactNativeModuleId,
|
||||
} from '@revenge-mod/react'
|
||||
import { proxify } from '@revenge-mod/utils/proxy'
|
||||
import { ImportTrackerModuleId } from './common'
|
||||
import { ImportTrackerModuleId } from './common/import-tracker'
|
||||
import type { DiscordModules } from './types'
|
||||
|
||||
const { loose } = withDependencies
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import {
|
|||
withProps,
|
||||
} from '@revenge-mod/modules/finders/filters'
|
||||
import { proxify } from '@revenge-mod/utils/proxy'
|
||||
import { ImportTrackerModuleId } from '../common'
|
||||
import { ImportTrackerModuleId } from '../common/import-tracker'
|
||||
import type { NavigationContainerRef } from '@react-navigation/core'
|
||||
|
||||
const { loose, relative } = withDependencies
|
||||
|
|
|
|||
2
lib/externals/src/shopify.ts
vendored
2
lib/externals/src/shopify.ts
vendored
|
|
@ -1,4 +1,4 @@
|
|||
import { ImportTrackerModuleId } from '@revenge-mod/discord/common'
|
||||
import { ImportTrackerModuleId } from '@revenge-mod/discord/common/import-tracker'
|
||||
import { lookupModule } from '@revenge-mod/modules/finders'
|
||||
import {
|
||||
withDependencies,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
import defer * as DiscordActions from '@revenge-mod/discord/actions'
|
||||
import defer * as DiscordCommon from '@revenge-mod/discord/common'
|
||||
import defer * as DiscordCommonConstants from '@revenge-mod/discord/common/constants'
|
||||
import defer * as DiscordCommonFlux from '@revenge-mod/discord/common/flux'
|
||||
import defer * as DiscordCommonLogger from '@revenge-mod/discord/common/logger'
|
||||
import defer * as DiscordCommonTokens from '@revenge-mod/discord/common/tokens'
|
||||
import defer * as DiscordDesign from '@revenge-mod/discord/design'
|
||||
import defer * as DiscordFlux from '@revenge-mod/discord/flux'
|
||||
import defer * as DiscordModulesMainTabsV2 from '@revenge-mod/discord/modules/main_tabs_v2'
|
||||
|
|
@ -10,23 +13,47 @@ import { defineLazyProperties } from '@revenge-mod/utils/object'
|
|||
import { guardIndexInitialized } from '.'
|
||||
|
||||
export interface PreInitPluginApiDiscord {
|
||||
actions: PreInitPluginApiDiscord.Actions
|
||||
/** This API is not available in the `preInit` phase. */
|
||||
common: unknown
|
||||
design: PreInitPluginApiDiscord.Design
|
||||
flux: PreInitPluginApiDiscord.Flux
|
||||
modules: PreInitPluginApiDiscord.Modules
|
||||
native: PreInitPluginApiDiscord.Native
|
||||
utils: PreInitPluginApiDiscord.Utils
|
||||
actions: PluginApiDiscord.Actions
|
||||
common: PreInitPluginApiDiscordCommon
|
||||
design: PluginApiDiscord.Design
|
||||
flux: PluginApiDiscord.Flux
|
||||
modules: PluginApiDiscord.Modules
|
||||
native: PluginApiDiscord.Native
|
||||
utils: PluginApiDiscord.Utils
|
||||
}
|
||||
|
||||
export interface InitPluginApiDiscord extends PreInitPluginApiDiscord {
|
||||
common: PreInitPluginApiDiscord.Common
|
||||
common: InitPluginApiDiscordCommon
|
||||
}
|
||||
|
||||
export namespace PreInitPluginApiDiscord {
|
||||
interface PreInitPluginApiDiscordCommon {
|
||||
appStartPerformance: typeof import('@revenge-mod/discord/common/app-start-performance')
|
||||
importTracker: typeof import('@revenge-mod/discord/common/import-tracker')
|
||||
utils: typeof import('@revenge-mod/discord/common/utils')
|
||||
/** This API is available in and after the `init` phase. */
|
||||
constants: unknown
|
||||
/** This API is available in and after the `init` phase. */
|
||||
flux: unknown
|
||||
/** This API is available in and after the `init` phase. */
|
||||
logger: unknown
|
||||
/** This API is available in and after the `init` phase. */
|
||||
tokens: unknown
|
||||
}
|
||||
|
||||
interface InitPluginApiDiscordCommon extends PreInitPluginApiDiscordCommon {
|
||||
constants: typeof import('@revenge-mod/discord/common/constants')
|
||||
flux: typeof import('@revenge-mod/discord/common/flux')
|
||||
logger: typeof import('@revenge-mod/discord/common/logger')
|
||||
tokens: typeof import('@revenge-mod/discord/common/tokens')
|
||||
}
|
||||
|
||||
export type PluginApiDiscord = PreInitPluginApiDiscord | InitPluginApiDiscord
|
||||
|
||||
export namespace PluginApiDiscord {
|
||||
export type Actions = typeof import('@revenge-mod/discord/actions')
|
||||
export type Common = typeof import('@revenge-mod/discord/common')
|
||||
export type Common =
|
||||
| PreInitPluginApiDiscordCommon
|
||||
| InitPluginApiDiscordCommon
|
||||
export type Design = typeof import('@revenge-mod/discord/design')
|
||||
export type Flux = typeof import('@revenge-mod/discord/flux')
|
||||
export type Native = typeof import('@revenge-mod/discord/native')
|
||||
|
|
@ -40,23 +67,49 @@ export namespace PreInitPluginApiDiscord {
|
|||
|
||||
export interface Modules {
|
||||
mainTabsV2: typeof import('@revenge-mod/discord/modules/main_tabs_v2')
|
||||
settings: typeof import('@revenge-mod/discord/modules/settings') &
|
||||
typeof import('@revenge-mod/discord/modules/settings/renderer')
|
||||
settings: typeof import('@revenge-mod/discord/modules/settings') & {
|
||||
renderer: typeof import('@revenge-mod/discord/modules/settings/renderer')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const discord = defineLazyProperties(
|
||||
{
|
||||
modules: defineLazyProperties({} as PreInitPluginApiDiscord.Modules, {
|
||||
common: defineLazyProperties(
|
||||
{
|
||||
appStartPerformance: require('@revenge-mod/discord/common/app-start-performance'),
|
||||
importTracker: require('@revenge-mod/discord/common/import-tracker'),
|
||||
utils: require('@revenge-mod/discord/common/utils'),
|
||||
} as InitPluginApiDiscordCommon,
|
||||
{
|
||||
constants: () => {
|
||||
guardIndexInitialized('Discord.common.constants')
|
||||
return DiscordCommonConstants
|
||||
},
|
||||
flux: () => {
|
||||
guardIndexInitialized('Discord.common.flux')
|
||||
return DiscordCommonFlux
|
||||
},
|
||||
logger: () => {
|
||||
guardIndexInitialized('Discord.common.logger')
|
||||
return DiscordCommonLogger
|
||||
},
|
||||
tokens: () => {
|
||||
guardIndexInitialized('Discord.common.tokens')
|
||||
return DiscordCommonTokens
|
||||
},
|
||||
},
|
||||
),
|
||||
modules: defineLazyProperties({} as PluginApiDiscord.Modules, {
|
||||
mainTabsV2: () => {
|
||||
return DiscordModulesMainTabsV2
|
||||
},
|
||||
settings: () => ({
|
||||
...require('@revenge-mod/discord/modules/settings'),
|
||||
...require('@revenge-mod/discord/modules/settings/renderer'),
|
||||
renderer: require('@revenge-mod/discord/modules/settings/renderer'),
|
||||
}),
|
||||
}),
|
||||
utils: defineLazyProperties({} as PreInitPluginApiDiscord.Utils, {
|
||||
utils: defineLazyProperties({} as PluginApiDiscord.Utils, {
|
||||
finders: () => {
|
||||
return DiscordUtilsFinders
|
||||
},
|
||||
|
|
@ -64,15 +117,11 @@ export const discord = defineLazyProperties(
|
|||
subscriptions: DiscordUtilsMetroSubscriptions,
|
||||
}),
|
||||
}),
|
||||
} as PreInitPluginApiDiscord,
|
||||
} as PluginApiDiscord,
|
||||
{
|
||||
actions: () => {
|
||||
return DiscordActions
|
||||
},
|
||||
common: () => {
|
||||
guardIndexInitialized('Discord.common')
|
||||
return DiscordCommon
|
||||
},
|
||||
flux: () => {
|
||||
return DiscordFlux
|
||||
},
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ defineLazyProperties(pUnscopedApi, {
|
|||
export function guardIndexInitialized(name: string) {
|
||||
if (!isModuleInitialized(0))
|
||||
throw new Error(
|
||||
`Cannot access ${name} API before index module (ID 0) is initialized`,
|
||||
`Cannot access ${name} API before the init phase: Index module (ID 0) must be initialized first.`,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ export interface UnscopedPreInitPluginApi<
|
|||
react: PluginApiReact
|
||||
assets: typeof import('@revenge-mod/assets')
|
||||
externals: PluginApiExternals
|
||||
/** This API is not available in the `preInit` phase. */
|
||||
/** This API is available in and after the `init` phase. */
|
||||
components: unknown
|
||||
discord: PreInitPluginApiDiscord
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { getAssetByName } from '@revenge-mod/assets'
|
||||
import { TokensModuleId } from '@revenge-mod/discord/common'
|
||||
import { TokensModuleId } from '@revenge-mod/discord/common/tokens'
|
||||
import { lookupModule } from '@revenge-mod/modules/finders'
|
||||
import {
|
||||
createFilterGenerator,
|
||||
|
|
|
|||
|
|
@ -246,8 +246,12 @@ function getLibraries() {
|
|||
]),
|
||||
library(discord, [
|
||||
'actions',
|
||||
'common',
|
||||
'common/app-start-performance',
|
||||
'common/constants',
|
||||
'common/flux',
|
||||
'common/import-tracker',
|
||||
'common/logger',
|
||||
'common/tokens',
|
||||
'common/utils',
|
||||
'design',
|
||||
'flux',
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ registerInternalPlugin(
|
|||
decorate,
|
||||
unscoped: {
|
||||
discord: {
|
||||
common: { Logger },
|
||||
common: {
|
||||
logger: { Logger },
|
||||
},
|
||||
},
|
||||
},
|
||||
}) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { styles } from '@revenge-mod/components/_'
|
||||
import { Tokens } from '@revenge-mod/discord/common'
|
||||
import { Tokens } from '@revenge-mod/discord/common/tokens'
|
||||
import { Design } from '@revenge-mod/discord/design'
|
||||
import { ClientInfoModule } from '@revenge-mod/discord/native'
|
||||
import { Clipboard } from '@revenge-mod/externals/react-native-clipboard'
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { getAssetIdByName } from '@revenge-mod/assets'
|
||||
import { Tokens } from '@revenge-mod/discord/common'
|
||||
import { Tokens } from '@revenge-mod/discord/common/tokens'
|
||||
import { Design } from '@revenge-mod/discord/design'
|
||||
import { Image } from 'react-native'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { getAssetIdByName } from '@revenge-mod/assets'
|
||||
import { Tokens } from '@revenge-mod/discord/common'
|
||||
import { Tokens } from '@revenge-mod/discord/common/tokens'
|
||||
import { Design } from '@revenge-mod/discord/design'
|
||||
import { Image } from 'react-native'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Tokens } from '@revenge-mod/discord/common'
|
||||
import { Tokens } from '@revenge-mod/discord/common/tokens'
|
||||
import { Design } from '@revenge-mod/discord/design'
|
||||
import { StyleSheet } from 'react-native'
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue