From 81f529c607beed13f55e92e3a0a75c97c0f88354 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Sat, 10 May 2025 02:06:23 +0700 Subject: [PATCH] feat(lib/externals): export `react-native-clipboard` --- bun.lock | 3 ++ lib/externals/package.json | 3 ++ lib/externals/src/react-native-clipboard.ts | 43 +++++++++++++++++++++ lib/plugins/src/apis/externals.ts | 4 ++ package.json | 1 + 5 files changed, 54 insertions(+) create mode 100644 lib/externals/src/react-native-clipboard.ts diff --git a/bun.lock b/bun.lock index 20d8c2c..75b8755 100644 --- a/bun.lock +++ b/bun.lock @@ -6,6 +6,7 @@ "devDependencies": { "@biomejs/biome": "^1.9.4", "@parcel/watcher": "^2.5.1", + "@react-native-clipboard/clipboard": "^1.16.2", "@swc/core": "^1.11.21", "@types/bun": "latest", "@types/node": "^22.15.3", @@ -396,6 +397,8 @@ "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.1", "", { "os": "win32", "cpu": "x64" }, "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA=="], + "@react-native-clipboard/clipboard": ["@react-native-clipboard/clipboard@1.16.2", "", { "peerDependencies": { "react": ">= 16.9.0", "react-native": ">= 0.61.5", "react-native-macos": ">= 0.61.0", "react-native-windows": ">= 0.61.0" }, "optionalPeers": ["react-native-macos", "react-native-windows"] }, "sha512-VqUYwVxo7DyHMz7v2LxLMaAOSu3pKFvzpqR4jQezdH0VyaudILTTcUf7dR4TroARU/lLkTU8nZA11UniTvGVXg=="], + "@react-native/assets-registry": ["@react-native/assets-registry@0.76.6", "", {}, "sha512-YI8HoReYiIwdFQs+k9Q9qpFTnsyYikZxgs/UVtVbhKixXDQF6F9LLvj2naOx4cfV+RGybNKxwmDl1vUok/dRFQ=="], "@react-native/babel-plugin-codegen": ["@react-native/babel-plugin-codegen@0.76.6", "", { "dependencies": { "@react-native/codegen": "0.76.6" } }, "sha512-yFC9I/aDBOBz3ZMlqKn2NY/mDUtCksUNZ7AQmBiTAeVTUP0ujEjE0hTOx5Qd+kok7A7hwZEX87HdSgjiJZfr5g=="], diff --git a/lib/externals/package.json b/lib/externals/package.json index 64aaf9f..3733694 100644 --- a/lib/externals/package.json +++ b/lib/externals/package.json @@ -6,6 +6,9 @@ "./browserify": { "default": "./src/browserify.ts" }, + "./react-native-clipboard": { + "default": "./src/react-native-clipboard.ts" + }, "./react-navigation": { "default": "./src/react-navigation.ts" }, diff --git a/lib/externals/src/react-native-clipboard.ts b/lib/externals/src/react-native-clipboard.ts new file mode 100644 index 0000000..b041868 --- /dev/null +++ b/lib/externals/src/react-native-clipboard.ts @@ -0,0 +1,43 @@ +import { byDependencies, byProps, every, preferExports, relativeDep } from '@revenge-mod/modules/finders/filters' +import { lookupModule } from '@revenge-mod/modules/finders/lookup' +import { ReactModuleId, ReactNativeModuleId } from '@revenge-mod/react' +import { destructure, proxify } from '@revenge-mod/utils/proxy' + +let ClipboardModule: typeof import('@react-native-clipboard/clipboard') = proxify( + () => { + // ID: 4790 + + // r6 = 4790; + // r5 = [4791, 4792]; + + // r6 = 4791; + // r5 = [175, 4792]; + + // r6 = 4792; + // r5 = [27, 4793]; + + const module = lookupModule( + preferExports( + byProps('useClipboard'), + every( + byDependencies([relativeDep(1), relativeDep(2)]), + byDependencies([ + [ReactModuleId, relativeDep(2, true)], + [ReactNativeModuleId, relativeDep(3, true)], + ]), + ), + ), + { + includeUninitialized: true, + }, + ) + + if (module) return (ClipboardModule = module) + }, + { + hint: 'object', + }, +)! + +export const { useClipboard } = destructure(ClipboardModule, { hint: 'function' }) +export const { default: Clipboard } = destructure(ClipboardModule, { hint: 'object' }) diff --git a/lib/plugins/src/apis/externals.ts b/lib/plugins/src/apis/externals.ts index 6468f1a..41a8f6e 100644 --- a/lib/plugins/src/apis/externals.ts +++ b/lib/plugins/src/apis/externals.ts @@ -1,5 +1,6 @@ export interface PluginApiExternals { Browserify: typeof import('@revenge-mod/externals/browserify') + ReactNativeClipboard: typeof import('@revenge-mod/externals/react-native-clipboard') ReactNavigation: typeof import('@revenge-mod/externals/react-navigation') Shopify: typeof import('@revenge-mod/externals/shopify') } @@ -8,6 +9,9 @@ export const externals: PluginApiExternals = { get Browserify() { return (this.Browserify = require('@revenge-mod/externals/browserify')) }, + get ReactNativeClipboard() { + return (this.ReactNativeClipboard = require('@revenge-mod/externals/react-native-clipboard')) + }, get ReactNavigation() { return (this.ReactNavigation = require('@revenge-mod/externals/react-navigation')) }, diff --git a/package.json b/package.json index b047b12..3e3a5c8 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "devDependencies": { "@biomejs/biome": "^1.9.4", "@parcel/watcher": "^2.5.1", + "@react-native-clipboard/clipboard": "^1.16.2", "@swc/core": "^1.11.21", "@types/bun": "latest", "@types/node": "^22.15.3",