From 97534c9d04baba21a46348cbd38f8f958be82040 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Tue, 19 Aug 2025 22:13:13 +0700 Subject: [PATCH] feat(lib/modules/native): add `fs` --- lib/modules/package.json | 3 +++ lib/modules/src/native/fs.ts | 45 +++++++++++++++++++++++++++++++++ lib/plugins/src/apis/modules.ts | 9 +++++-- 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 lib/modules/src/native/fs.ts diff --git a/lib/modules/package.json b/lib/modules/package.json index 204575c..5a74d85 100644 --- a/lib/modules/package.json +++ b/lib/modules/package.json @@ -21,6 +21,9 @@ "./native": { "default": "./src/native/index.ts" }, + "./native/fs": { + "default": "./src/native/fs.ts" + }, "./types": { "types": "./src/types.ts" } diff --git a/lib/modules/src/native/fs.ts b/lib/modules/src/native/fs.ts new file mode 100644 index 0000000..f6c5c19 --- /dev/null +++ b/lib/modules/src/native/fs.ts @@ -0,0 +1,45 @@ +import { + callBridgeMethod, + callBridgeMethodSync, +} from '@revenge-mod/modules/native' + +export function readFile(path: string) { + return callBridgeMethod('revenge.fs.read', [path]) +} + +export function writeFile(path: string, data: string) { + return callBridgeMethod('revenge.fs.write', [path, data]) +} + +export function exists(path: string) { + return callBridgeMethod('revenge.fs.exists', [path]) +} + +export function deleteFile(path: string) { + return callBridgeMethod('revenge.fs.delete', [path]) +} + +export function readFileSync(path: string) { + return callBridgeMethodSync('revenge.fs.read', [path]) +} + +export function writeFileSync(path: string, data: string) { + return callBridgeMethodSync('revenge.fs.write', [path, data]) +} + +export function existsSync(path: string) { + return callBridgeMethodSync('revenge.fs.exists', [path]) +} + +export function deleteFileSync(path: string) { + return callBridgeMethodSync('revenge.fs.delete', [path]) +} + +declare module '@revenge-mod/modules/native' { + export interface Methods { + 'revenge.fs.read': [[path: string], string] + 'revenge.fs.write': [[path: string, data: string], void] + 'revenge.fs.exists': [[path: string], boolean] + 'revenge.fs.delete': [[path: string], boolean] + } +} diff --git a/lib/plugins/src/apis/modules.ts b/lib/plugins/src/apis/modules.ts index 5a64ee2..9d9763c 100644 --- a/lib/plugins/src/apis/modules.ts +++ b/lib/plugins/src/apis/modules.ts @@ -3,6 +3,7 @@ import * as PluginApiModulesFindersFilters from '@revenge-mod/modules/finders/fi import * as PluginApiModulesMetroSubscriptions from '@revenge-mod/modules/metro/subscriptions' import * as PluginApiModulesMetroUtils from '@revenge-mod/modules/metro/utils' import * as PluginApiModulesNative_ from '@revenge-mod/modules/native' +import * as PluginApiModulesNativeFileSystem from '@revenge-mod/modules/native/fs' import { spreadDescriptors } from '.' export interface PluginApiModules { @@ -11,7 +12,9 @@ export interface PluginApiModules { native: PluginApiModulesNative } -export type PluginApiModulesNative = typeof PluginApiModulesNative_ +export type PluginApiModulesNative = typeof PluginApiModulesNative_ & { + fs: typeof PluginApiModulesNativeFileSystem +} export type PluginApiModulesMetro = // biome-ignore format: Don't @@ -30,5 +33,7 @@ export const modules: PluginApiModules = { PluginApiModulesMetroUtils, spreadDescriptors(PluginApiModulesMetroSubscriptions, {}), ), - native: PluginApiModulesNative_, + native: spreadDescriptors(PluginApiModulesNative_, { + fs: PluginApiModulesNativeFileSystem, + }), }