diff --git a/lib/plugins/src/apis/index.ts b/lib/plugins/src/apis/index.ts index 2a9cdf0..da73164 100644 --- a/lib/plugins/src/apis/index.ts +++ b/lib/plugins/src/apis/index.ts @@ -2,13 +2,13 @@ import * as patcher from '@revenge-mod/patcher' import * as storage from '@revenge-mod/storage' import { modules } from './modules' import { plugins } from './plugins' -import { utils } from './utils' import type { UnscopedInitPluginApi, UnscopedPluginApi, UnscopedPreInitPluginApi, } from '../types' +// @ts-expect-error: This will be modified by libraries later export const pUnscopedApi: | UnscopedPreInitPluginApi | UnscopedInitPluginApi @@ -17,5 +17,4 @@ export const pUnscopedApi: patcher, plugins, storage, - utils, } diff --git a/lib/plugins/src/init.ts b/lib/plugins/src/init.ts index b052e34..244a6d6 100644 --- a/lib/plugins/src/init.ts +++ b/lib/plugins/src/init.ts @@ -10,8 +10,6 @@ import type { UnscopedInitPluginApi } from './types' const uapi = pUnscopedApi as UnscopedInitPluginApi uapi.assets = AssetsLibrary uapi.react = react -uapi.utils.discord = require('@revenge-mod/utils/discord') -uapi.utils.react = require('@revenge-mod/utils/react') for (const plugin of pList.values()) if (plugin.flags & PluginFlags.Enabled) initPlugin(plugin) diff --git a/lib/plugins/src/types.ts b/lib/plugins/src/types.ts index 87677c5..3e16c4b 100644 --- a/lib/plugins/src/types.ts +++ b/lib/plugins/src/types.ts @@ -2,7 +2,6 @@ import type { FunctionComponent } from 'react' import type { PluginApiModules } from './apis/modules' import type { PluginApiPlugins } from './apis/plugins' import type { PluginApiReact } from './apis/react' -import type { PluginApiUtils, PreInitPluginApiUtils } from './apis/utils' import type { PluginFlags, PluginStatus } from './constants' // biome-ignore lint/suspicious/noEmptyInterface: To be extended by actual extensions @@ -20,7 +19,6 @@ export interface UnscopedPreInitPluginApi< patcher: typeof import('@revenge-mod/patcher') plugins: PluginApiPlugins storage: typeof import('@revenge-mod/storage') - utils: PreInitPluginApiUtils } /** @@ -32,7 +30,6 @@ export interface UnscopedInitPluginApi< > extends UnscopedPreInitPluginApi { assets: typeof import('@revenge-mod/assets') react: PluginApiReact - utils: PluginApiUtils } /** @@ -41,9 +38,7 @@ export interface UnscopedInitPluginApi< */ export interface UnscopedPluginApi< O extends PluginApiExtensionsOptions = PluginApiExtensionsOptions, -> extends UnscopedInitPluginApi { - components: typeof import('@revenge-mod/components') -} +> extends UnscopedInitPluginApi {} export type PluginCleanup = () => any export type PluginCleanupApi = (...fns: PluginCleanup[]) => void diff --git a/lib/utils/package.json b/lib/utils/package.json index 2369078..3d3ae14 100644 --- a/lib/utils/package.json +++ b/lib/utils/package.json @@ -35,6 +35,12 @@ }, "./types": { "types": "./src/types.ts" + }, + "./preinit": { + "default": "./src/preinit.ts" + }, + "./init": { + "default": "./src/init.ts" } } } \ No newline at end of file diff --git a/lib/utils/src/init.ts b/lib/utils/src/init.ts new file mode 100644 index 0000000..2b13a35 --- /dev/null +++ b/lib/utils/src/init.ts @@ -0,0 +1,7 @@ +import { pUnscopedApi } from '@revenge-mod/plugins/_' +import type { PluginApiUtils } from './preinit' + +const utils = pUnscopedApi.utils as PluginApiUtils + +utils.discord = require('@revenge-mod/utils/discord') +utils.react = require('@revenge-mod/utils/react') diff --git a/lib/plugins/src/apis/utils.ts b/lib/utils/src/preinit.ts similarity index 73% rename from lib/plugins/src/apis/utils.ts rename to lib/utils/src/preinit.ts index 6921b0c..9233831 100644 --- a/lib/plugins/src/apis/utils.ts +++ b/lib/utils/src/preinit.ts @@ -1,4 +1,6 @@ -export const utils: PreInitPluginApiUtils = { +import { pUnscopedApi } from '@revenge-mod/plugins/_' + +pUnscopedApi.utils = { callback: require('@revenge-mod/utils/callback'), error: require('@revenge-mod/utils/error'), object: require('@revenge-mod/utils/object'), @@ -20,3 +22,13 @@ export interface PluginApiUtils extends PreInitPluginApiUtils { react: typeof import('@revenge-mod/utils/react') discord: typeof import('@revenge-mod/utils/discord') } + +declare module '@revenge-mod/plugins/types' { + export interface UnscopedPreInitPluginApi { + utils: PreInitPluginApiUtils + } + + export interface UnscopedInitPluginApi { + utils: PluginApiUtils + } +} diff --git a/src/preinit.ts b/src/preinit.ts index 3e71924..e525c33 100644 --- a/src/preinit.ts +++ b/src/preinit.ts @@ -19,6 +19,7 @@ onModuleFirstRequired(IndexModuleId, function onIndexRequired() { nativeLoggingHook(`\u001b[31m--- PREINIT STAGE ---\u001b[0m`, 1) // Initialize preinit libraries + require('@revenge-mod/utils/preinit') require('@revenge-mod/react/preinit') require('@revenge-mod/assets/preinit') require('@revenge-mod/storage/preinit') @@ -37,6 +38,7 @@ onModuleFirstRequired(IndexModuleId, function onIndexRequired() { ) // Initialize init libraries + require('@revenge-mod/utils/init') require('@revenge-mod/storage/init') require('@revenge-mod/discord/init') require('@revenge-mod/components/init')