diff --git a/scripts/build.ts b/scripts/build.ts index e5a1124..5fc6bac 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -4,7 +4,7 @@ import { $, main } from 'bun' import chalk from 'chalk' import { exists, mkdir, readdir, rm, writeFile } from 'fs/promises' import { type OutputChunk, type RolldownPlugin, rolldown } from 'rolldown' -import { aliasPlugin } from 'rolldown/experimental' +import { aliasPlugin, importGlobPlugin } from 'rolldown/experimental' import pkg from '../package.json' @@ -50,7 +50,6 @@ export default async function build(dev = false, log = true) { __BUILD_FLAG_LOG_PROMISE_REJECTIONS__: String(dev), }, plugins: [ - swcPlugin(), aliasPlugin({ entries: [ { @@ -59,6 +58,8 @@ export default async function build(dev = false, log = true) { }, ], }), + importGlobPlugin(), + swcPlugin(), hermesCPlugin({ flags: [ dev ? '-Og' : '-O', diff --git a/src/index.ts b/src/index.ts index 333bcd1..21c3cec 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,7 +22,7 @@ onModuleFirstRequired(IndexModuleId, function onIndexRequired() { require('@revenge-mod/discord/preinit') // Run all preinit plugins - require('~/plugins/_preinit') + require('~/plugins/preinit') require('@revenge-mod/plugins/preinit') onModuleInitialized(IndexModuleId, function onIndexInitialized() { @@ -30,7 +30,7 @@ onModuleFirstRequired(IndexModuleId, function onIndexRequired() { // Initialize init libraries // Run all init plugins - require('~/plugins/_all') + require('~/plugins/init') require('@revenge-mod/plugins/init') }) }) diff --git a/src/plugins/_all.ts b/src/plugins/_all.ts deleted file mode 100644 index 4007c77..0000000 --- a/src/plugins/_all.ts +++ /dev/null @@ -1,3 +0,0 @@ -import './staff-settings' -import './settings' -import './developer-settings' diff --git a/src/plugins/_preinit.ts b/src/plugins/_preinit.ts deleted file mode 100644 index da73cd2..0000000 --- a/src/plugins/_preinit.ts +++ /dev/null @@ -1,2 +0,0 @@ -import './logging' -import './no-track' diff --git a/src/plugins/init.ts b/src/plugins/init.ts new file mode 100644 index 0000000..799b5e7 --- /dev/null +++ b/src/plugins/init.ts @@ -0,0 +1,3 @@ +import.meta.glob('./init/*/index.ts', { + eager: true, +}) diff --git a/src/plugins/developer-settings/constants.ts b/src/plugins/init/developer-settings/constants.ts similarity index 100% rename from src/plugins/developer-settings/constants.ts rename to src/plugins/init/developer-settings/constants.ts diff --git a/src/plugins/developer-settings/definitions/AssetBrowserSetting.tsx b/src/plugins/init/developer-settings/definitions/AssetBrowserSetting.tsx similarity index 100% rename from src/plugins/developer-settings/definitions/AssetBrowserSetting.tsx rename to src/plugins/init/developer-settings/definitions/AssetBrowserSetting.tsx diff --git a/src/plugins/developer-settings/definitions/EvaluateJavaScriptSetting.tsx b/src/plugins/init/developer-settings/definitions/EvaluateJavaScriptSetting.tsx similarity index 100% rename from src/plugins/developer-settings/definitions/EvaluateJavaScriptSetting.tsx rename to src/plugins/init/developer-settings/definitions/EvaluateJavaScriptSetting.tsx diff --git a/src/plugins/developer-settings/definitions/ReactDevToolsConnectSetting.tsx b/src/plugins/init/developer-settings/definitions/ReactDevToolsConnectSetting.tsx similarity index 100% rename from src/plugins/developer-settings/definitions/ReactDevToolsConnectSetting.tsx rename to src/plugins/init/developer-settings/definitions/ReactDevToolsConnectSetting.tsx diff --git a/src/plugins/developer-settings/definitions/ReactDevToolsDisconnectSetting.tsx b/src/plugins/init/developer-settings/definitions/ReactDevToolsDisconnectSetting.tsx similarity index 100% rename from src/plugins/developer-settings/definitions/ReactDevToolsDisconnectSetting.tsx rename to src/plugins/init/developer-settings/definitions/ReactDevToolsDisconnectSetting.tsx diff --git a/src/plugins/developer-settings/definitions/ReactDevToolsVersionSetting.tsx b/src/plugins/init/developer-settings/definitions/ReactDevToolsVersionSetting.tsx similarity index 100% rename from src/plugins/developer-settings/definitions/ReactDevToolsVersionSetting.tsx rename to src/plugins/init/developer-settings/definitions/ReactDevToolsVersionSetting.tsx diff --git a/src/plugins/developer-settings/definitions/RevengeDeveloperSetting.tsx b/src/plugins/init/developer-settings/definitions/RevengeDeveloperSetting.tsx similarity index 100% rename from src/plugins/developer-settings/definitions/RevengeDeveloperSetting.tsx rename to src/plugins/init/developer-settings/definitions/RevengeDeveloperSetting.tsx diff --git a/src/plugins/developer-settings/devtools.ts b/src/plugins/init/developer-settings/devtools.ts similarity index 100% rename from src/plugins/developer-settings/devtools.ts rename to src/plugins/init/developer-settings/devtools.ts diff --git a/src/plugins/developer-settings/index.ts b/src/plugins/init/developer-settings/index.ts similarity index 100% rename from src/plugins/developer-settings/index.ts rename to src/plugins/init/developer-settings/index.ts diff --git a/src/plugins/developer-settings/register.ts b/src/plugins/init/developer-settings/register.ts similarity index 100% rename from src/plugins/developer-settings/register.ts rename to src/plugins/init/developer-settings/register.ts diff --git a/src/plugins/developer-settings/screens/AssetBrowserSettingScreen.tsx b/src/plugins/init/developer-settings/screens/AssetBrowserSettingScreen.tsx similarity index 100% rename from src/plugins/developer-settings/screens/AssetBrowserSettingScreen.tsx rename to src/plugins/init/developer-settings/screens/AssetBrowserSettingScreen.tsx diff --git a/src/plugins/developer-settings/screens/RevengeDeveloperSettingScreen.tsx b/src/plugins/init/developer-settings/screens/RevengeDeveloperSettingScreen.tsx similarity index 100% rename from src/plugins/developer-settings/screens/RevengeDeveloperSettingScreen.tsx rename to src/plugins/init/developer-settings/screens/RevengeDeveloperSettingScreen.tsx diff --git a/src/plugins/settings/constants.ts b/src/plugins/init/settings/constants.ts similarity index 100% rename from src/plugins/settings/constants.ts rename to src/plugins/init/settings/constants.ts diff --git a/src/plugins/settings/definitions/HermesVersionSetting.tsx b/src/plugins/init/settings/definitions/HermesVersionSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/HermesVersionSetting.tsx rename to src/plugins/init/settings/definitions/HermesVersionSetting.tsx diff --git a/src/plugins/settings/definitions/ReactNativeVersionSetting.tsx b/src/plugins/init/settings/definitions/ReactNativeVersionSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/ReactNativeVersionSetting.tsx rename to src/plugins/init/settings/definitions/ReactNativeVersionSetting.tsx diff --git a/src/plugins/settings/definitions/ReactVersionSetting.tsx b/src/plugins/init/settings/definitions/ReactVersionSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/ReactVersionSetting.tsx rename to src/plugins/init/settings/definitions/ReactVersionSetting.tsx diff --git a/src/plugins/settings/definitions/ReloadAppSetting.tsx b/src/plugins/init/settings/definitions/ReloadAppSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/ReloadAppSetting.tsx rename to src/plugins/init/settings/definitions/ReloadAppSetting.tsx diff --git a/src/plugins/settings/definitions/RevengeCustomPageSetting.tsx b/src/plugins/init/settings/definitions/RevengeCustomPageSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengeCustomPageSetting.tsx rename to src/plugins/init/settings/definitions/RevengeCustomPageSetting.tsx diff --git a/src/plugins/settings/definitions/RevengeDiscordServerSetting.tsx b/src/plugins/init/settings/definitions/RevengeDiscordServerSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengeDiscordServerSetting.tsx rename to src/plugins/init/settings/definitions/RevengeDiscordServerSetting.tsx diff --git a/src/plugins/settings/definitions/RevengeFontsSetting.tsx b/src/plugins/init/settings/definitions/RevengeFontsSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengeFontsSetting.tsx rename to src/plugins/init/settings/definitions/RevengeFontsSetting.tsx diff --git a/src/plugins/settings/definitions/RevengeGitHubOrganizationSetting.tsx b/src/plugins/init/settings/definitions/RevengeGitHubOrganizationSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengeGitHubOrganizationSetting.tsx rename to src/plugins/init/settings/definitions/RevengeGitHubOrganizationSetting.tsx diff --git a/src/plugins/settings/definitions/RevengeNotImplementedSetting.tsx b/src/plugins/init/settings/definitions/RevengeNotImplementedSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengeNotImplementedSetting.tsx rename to src/plugins/init/settings/definitions/RevengeNotImplementedSetting.tsx diff --git a/src/plugins/settings/definitions/RevengePluginsSetting.tsx b/src/plugins/init/settings/definitions/RevengePluginsSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengePluginsSetting.tsx rename to src/plugins/init/settings/definitions/RevengePluginsSetting.tsx diff --git a/src/plugins/settings/definitions/RevengeSetting.tsx b/src/plugins/init/settings/definitions/RevengeSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengeSetting.tsx rename to src/plugins/init/settings/definitions/RevengeSetting.tsx diff --git a/src/plugins/settings/definitions/RevengeThemesSetting.tsx b/src/plugins/init/settings/definitions/RevengeThemesSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengeThemesSetting.tsx rename to src/plugins/init/settings/definitions/RevengeThemesSetting.tsx diff --git a/src/plugins/settings/definitions/RevengeVersionSetting.tsx b/src/plugins/init/settings/definitions/RevengeVersionSetting.tsx similarity index 100% rename from src/plugins/settings/definitions/RevengeVersionSetting.tsx rename to src/plugins/init/settings/definitions/RevengeVersionSetting.tsx diff --git a/src/plugins/settings/index.ts b/src/plugins/init/settings/index.ts similarity index 100% rename from src/plugins/settings/index.ts rename to src/plugins/init/settings/index.ts diff --git a/src/plugins/settings/register.ts b/src/plugins/init/settings/register.ts similarity index 100% rename from src/plugins/settings/register.ts rename to src/plugins/init/settings/register.ts diff --git a/src/plugins/settings/screens/RevengeCustomPageScreen.tsx b/src/plugins/init/settings/screens/RevengeCustomPageScreen.tsx similarity index 100% rename from src/plugins/settings/screens/RevengeCustomPageScreen.tsx rename to src/plugins/init/settings/screens/RevengeCustomPageScreen.tsx diff --git a/src/plugins/settings/screens/RevengeFontsSettingScreen.tsx b/src/plugins/init/settings/screens/RevengeFontsSettingScreen.tsx similarity index 100% rename from src/plugins/settings/screens/RevengeFontsSettingScreen.tsx rename to src/plugins/init/settings/screens/RevengeFontsSettingScreen.tsx diff --git a/src/plugins/settings/screens/RevengePluginsSettingScreen.tsx b/src/plugins/init/settings/screens/RevengePluginsSettingScreen.tsx similarity index 100% rename from src/plugins/settings/screens/RevengePluginsSettingScreen.tsx rename to src/plugins/init/settings/screens/RevengePluginsSettingScreen.tsx diff --git a/src/plugins/settings/screens/RevengeSettingScreen.tsx b/src/plugins/init/settings/screens/RevengeSettingScreen.tsx similarity index 100% rename from src/plugins/settings/screens/RevengeSettingScreen.tsx rename to src/plugins/init/settings/screens/RevengeSettingScreen.tsx diff --git a/src/plugins/settings/screens/RevengeThemesSettingScreen.tsx b/src/plugins/init/settings/screens/RevengeThemesSettingScreen.tsx similarity index 100% rename from src/plugins/settings/screens/RevengeThemesSettingScreen.tsx rename to src/plugins/init/settings/screens/RevengeThemesSettingScreen.tsx diff --git a/src/plugins/settings/types.ts b/src/plugins/init/settings/types.ts similarity index 100% rename from src/plugins/settings/types.ts rename to src/plugins/init/settings/types.ts diff --git a/src/plugins/staff-settings/index.tsx b/src/plugins/init/staff-settings/index.tsx similarity index 100% rename from src/plugins/staff-settings/index.tsx rename to src/plugins/init/staff-settings/index.tsx diff --git a/src/plugins/preinit.ts b/src/plugins/preinit.ts new file mode 100644 index 0000000..e3e2d61 --- /dev/null +++ b/src/plugins/preinit.ts @@ -0,0 +1,3 @@ +import.meta.glob('./preinit/*/index.ts', { + eager: true, +}) diff --git a/src/plugins/logging/index.ts b/src/plugins/preinit/logging/index.ts similarity index 100% rename from src/plugins/logging/index.ts rename to src/plugins/preinit/logging/index.ts diff --git a/src/plugins/no-track/index.ts b/src/plugins/preinit/no-track/index.ts similarity index 100% rename from src/plugins/no-track/index.ts rename to src/plugins/preinit/no-track/index.ts diff --git a/types.d.ts b/types.d.ts index 43d980d..c4a3208 100644 --- a/types.d.ts +++ b/types.d.ts @@ -7,6 +7,22 @@ declare global { const __BUILD_VERSION__: string const __BUILD_FLAG_LOG_PROMISE_REJECTIONS__: boolean + + export interface ImportMeta { + glob(pattern: ImportMetaGlobPattern, options?: ImportMetaGlobOptions): Record Promise> + glob( + pattern: ImportMetaGlobPattern, + options: Extract, + ): Record + } } +interface ImportMetaGlobOptions { + eager?: boolean + import?: string + query?: string | Record +} + +type ImportMetaGlobPattern = string | string[] + export {}