diff --git a/bun.lock b/bun.lock index 2f32ff7..2e48825 100644 --- a/bun.lock +++ b/bun.lock @@ -27,6 +27,9 @@ "lib/assets": { "name": "@revenge-mod/assets", }, + "lib/discord": { + "name": "@revenge-mod/discord", + }, "lib/init": { "name": "@revenge-mod/init", }, @@ -36,6 +39,12 @@ "lib/patcher": { "name": "@revenge-mod/patcher", }, + "lib/plugins": { + "name": "@revenge-mod/plugins", + }, + "lib/react": { + "name": "@revenge-mod/react", + }, "lib/types": { "name": "@revenge-mod/types", }, @@ -419,6 +428,8 @@ "@revenge-mod/assets": ["@revenge-mod/assets@workspace:lib/assets"], + "@revenge-mod/discord": ["@revenge-mod/discord@workspace:lib/discord"], + "@revenge-mod/init": ["@revenge-mod/init@workspace:lib/init"], "@revenge-mod/modules": ["@revenge-mod/modules@workspace:lib/modules"], diff --git a/lib/assets/src/index.ts b/lib/assets/src/index.ts index 1d5a95e..37dea46 100644 --- a/lib/assets/src/index.ts +++ b/lib/assets/src/index.ts @@ -1,4 +1,4 @@ -import { ReactNative } from '@revenge-mod/modules/common/react' +import { ReactNative } from '@revenge-mod/react' import { _assets } from './_internal' import { AssetRegistry } from './patches' diff --git a/lib/discord/package.json b/lib/discord/package.json new file mode 100644 index 0000000..6d561d9 --- /dev/null +++ b/lib/discord/package.json @@ -0,0 +1,10 @@ +{ + "name": "@revenge-mod/discord", + "private": true, + "type": "module", + "exports": { + ".": { + "default": "./src/index.ts" + } + } +} diff --git a/lib/modules/src/common/discord/flux.ts b/lib/discord/src/flux.ts similarity index 62% rename from lib/modules/src/common/discord/flux.ts rename to lib/discord/src/flux.ts index d341e6a..c1f775c 100644 --- a/lib/modules/src/common/discord/flux.ts +++ b/lib/discord/src/flux.ts @@ -1,7 +1,7 @@ -import { waitForModules } from '../../finders' -import { byProps } from '../../finders/filters' +import { waitForModules } from '@revenge-mod/modules/finders' +import { byProps } from '@revenge-mod/modules/finders/filters' -import type { DiscordModules } from '../../../types' +import type { DiscordModules } from '@revenge-mod/modules/types/discord' waitForModules(byProps('_dispatchToken'), (_, store) => { const name = store.getName() diff --git a/lib/modules/src/common/discord/index.ts b/lib/discord/src/index.ts similarity index 56% rename from lib/modules/src/common/discord/index.ts rename to lib/discord/src/index.ts index b68861b..ff3200d 100644 --- a/lib/modules/src/common/discord/index.ts +++ b/lib/discord/src/index.ts @@ -1,7 +1,7 @@ -import { lookupModule } from '../../finders' -import { byName, byProps } from '../../finders/filters' +import { lookupModule } from '@revenge-mod/modules/finders' +import { byName, byProps } from '@revenge-mod/modules/finders/filters' -import type { DiscordModules } from '../../../types/discord' +import type { DiscordModules } from '@revenge-mod/modules/types/discord' export * as flux from './flux' diff --git a/lib/init/src/index.ts b/lib/init/src/index.ts index 781fc2c..d2ce72c 100644 --- a/lib/init/src/index.ts +++ b/lib/init/src/index.ts @@ -8,31 +8,49 @@ import { getErrorStack } from '@revenge-mod/utils/errors' import { logger } from './shared' -onModuleFirstRequired(0, function onceIndexRequired() { - if (!__BUILD_FLAG_INIT_DISABLE_PATCH_LOG_PROMISE_REJECTIONS__) require('./patches/log-promise-rejections') +onModuleFirstRequired( + 0, + runCatching(function onceIndexRequired() { + if (!__BUILD_FLAG_INIT_DISABLE_PATCH_LOG_PROMISE_REJECTIONS__) require('./patches/log-promise-rejections') - // Initialize preinit libraries - require('@revenge-mod/modules/preinit') -}) + // Initialize preinit libraries + require('@revenge-mod/modules/preinit') -onModuleInitialized(0, function onceIndexInitialized() { - try { - // Initialize init libraries - require('@revenge-mod/assets/init') + onModuleInitialized( + 0, + runCatching(function onceIndexInitialized() { + // Initialize init libraries + require('@revenge-mod/assets/init') - logger.log('Revenge loaded!') - } catch (e) { - const { ClientInfoModule, DeviceModule } = require('@revenge-mod/modules/native/discord') as - // biome-ignore format: Don't format this please - typeof import('@revenge-mod/modules/native/discord') + logger.log('Revenge loaded!') - // TODO(init): Move to use native module - alert( - // biome-ignore lint/style/useTemplate: I want this to be readable, thank you - 'Failed to load Revenge!\n' + - `Discord: ${ClientInfoModule.Version} (${ClientInfoModule.Build})\n` + - `Device: ${DeviceModule.deviceManufacturer} ${DeviceModule.deviceModel}\n\n` + - getErrorStack(e), + setImmediate(() => { + // Call garbage collector to clean up memory + gc() + gc() + }) + }), ) + }), +) + +function runCatching any>(fn: F) { + return (...args: Parameters) => { + try { + fn(...args) + } catch (e) { + const { ClientInfoModule, DeviceModule } = require('@revenge-mod/modules/native/discord') as + // biome-ignore format: Don't format this please + typeof import('@revenge-mod/modules/native/discord') + + // TODO(init): Move to use native module + alert( + // biome-ignore lint/style/useTemplate: I want this to be readable, thank you + 'Failed to load Revenge!\n' + + `Discord: ${ClientInfoModule.Version} (${ClientInfoModule.Build})\n` + + `Device: ${DeviceModule.deviceManufacturer} ${DeviceModule.deviceModel}\n\n` + + getErrorStack(e), + ) + } } -}) +} diff --git a/lib/modules/package.json b/lib/modules/package.json index c31ab71..95b5e3a 100644 --- a/lib/modules/package.json +++ b/lib/modules/package.json @@ -6,15 +6,6 @@ ".": { "default": "./src/index.ts" }, - "./common": { - "default": "./src/common/index.ts" - }, - "./common/discord": { - "default": "./src/common/discord/index.ts" - }, - "./common/react": { - "default": "./src/common/react.ts" - }, "./finders": { "default": "./src/finders/index.ts" }, @@ -36,6 +27,9 @@ "./preinit": { "default": "./src/preinit.ts" }, + "./types": { + "default": "./types/index.ts" + }, "./types/*": { "default": "./types/*.ts", "types": "./types/*.ts" diff --git a/lib/modules/src/common/index.ts b/lib/modules/src/common/index.ts deleted file mode 100644 index 7ba81e5..0000000 --- a/lib/modules/src/common/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * as discord from './discord' -export * as react from './react' diff --git a/lib/modules/src/index.ts b/lib/modules/src/index.ts index 52d936e..4dbff8f 100644 --- a/lib/modules/src/index.ts +++ b/lib/modules/src/index.ts @@ -1,4 +1,3 @@ -export * as common from './common' export * as finders from './finders' export * as filters from './finders/filters' export * as metro from './metro' diff --git a/lib/react/package.json b/lib/react/package.json new file mode 100644 index 0000000..6e6efb9 --- /dev/null +++ b/lib/react/package.json @@ -0,0 +1,16 @@ +{ + "name": "@revenge-mod/react", + "private": true, + "type": "module", + "exports": { + ".": { + "default": "./src/index.ts" + }, + "./jsx-runtime": { + "default": "./src/jsx-runtime/index.ts" + }, + "./preinit": { + "default": "./src/preinit.ts" + } + } +} diff --git a/lib/modules/src/common/react.ts b/lib/react/src/index.ts similarity index 77% rename from lib/modules/src/common/react.ts rename to lib/react/src/index.ts index 0662400..c670f2a 100644 --- a/lib/modules/src/common/react.ts +++ b/lib/react/src/index.ts @@ -1,7 +1,8 @@ import { yielded } from '@revenge-mod/utils/generators' +import { lookupModuleId, lookupModuleIds } from '@revenge-mod/modules/finders' +import { byProps } from '@revenge-mod/modules/finders/filters' -import { lookupModuleId, lookupModuleIds } from '../finders' -import { byProps } from '../finders/filters' +export * as jsxRuntime from './jsx-runtime' export const ReactModuleId = yielded(lookupModuleIds(byProps('useState')), 1)! export const ReactNativeModuleId = lookupModuleId(byProps('AppRegistry'))! diff --git a/lib/react/src/jsx-runtime/index.ts b/lib/react/src/jsx-runtime/index.ts new file mode 100644 index 0000000..171cf50 --- /dev/null +++ b/lib/react/src/jsx-runtime/index.ts @@ -0,0 +1,2 @@ +// TODO(react/jsx-runtime): add lib +export {} diff --git a/lib/react/src/jsx-runtime/preinit.ts b/lib/react/src/jsx-runtime/preinit.ts new file mode 100644 index 0000000..e69de29 diff --git a/lib/react/src/preinit.ts b/lib/react/src/preinit.ts new file mode 100644 index 0000000..93c488c --- /dev/null +++ b/lib/react/src/preinit.ts @@ -0,0 +1 @@ +import './jsx-runtime/preinit'