diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7b86dbf..90eccb8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,7 @@ name: Build on: push: - branches: [main] + branches: [rewrite] jobs: build: @@ -9,23 +9,23 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: https://github.com/actions/checkout@v4 + - uses: actions/checkout@v3 + - uses: actions/checkout@v3 with: - repository: "revenge-mod/builds" + repository: "vendetta-mod/builds" path: "builds" - token: ${{ secrets.ACTIONS_TOKEN }} - # TODO: replace with gh equivelants before opening a PR - # ssh-key: ${{ secrets.BUILDS_SSH_PRIVKEY }} - # ssh-known-hosts: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILzaDn52MW7i6krceJeGIv20XkzVz+VRYS8FWyh+pXhf' - - uses: oven-sh/setup-bun@v1 + token: ${{ secrets.BEEF_TOKEN }} + - uses: actions/setup-node@v3 + with: + node-version: 16 - name: Install dependencies run: | - bun i + npm i -g pnpm + pnpm i - name: Build - run: bun run build + run: pnpm build - name: Push builds run: | @@ -38,8 +38,7 @@ jobs: git commit -m "Build $GITHUB_SHA" || exit 0 git push - ### NOTE: temporarily commented out since we're not on github - # - name: Purge CDN cache - # run: | - # curl https://purge.jsdelivr.net/gh/vendetta-mod/builds + - name: Purge CDN cache + run: | + curl https://purge.jsdelivr.net/gh/vendetta-mod/builds diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..5011b09 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "printWidth": 240, + "tabWidth": 4, + "singleQuote": false, + "jsxSingleQuote": false, + "bracketSpacing": true, + "useTabs": false +} diff --git a/FUNDING.yml b/FUNDING.yml new file mode 100644 index 0000000..3bc679f --- /dev/null +++ b/FUNDING.yml @@ -0,0 +1 @@ +github: [maisymoe, wingio] diff --git a/LICENSE b/LICENSE index cefb043..9e9ef99 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,6 @@ BSD 3-Clause License Copyright (c) 2023, Team Vendetta -Copyright (c) 2024, Team Revenge Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 157d9a5..4ede955 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,50 @@ -# Revenge - -A modification for the Discord Android app. Continuation of [Vendetta](https://github.com/vendetta-mod). Get it? Vendetta is like, revenging..., yeah. - -## ⬇️ Installing - -> [!NOTE] -> While Revenge is platform-agnostic, there is no guarantee it will always work on iOS. I do not have a device to test the changes I've made, so feel free to report iOS-specific issues in the Issues tab if you encounter one. - - - -Installing is currently not possible yet. Please check back later. - -## 💖 Contributing - > [!IMPORTANT] -> This project now uses [Bun](https://bun.sh) instead of Node.js. -> It is **recommended** to use Bun over Node.js because Bun is faster and far better for development. -> -> If you're on Windows, we recommend checking out WSL. +> As of 06/02/24, Vendetta has been discontinued. -1. Install [Vendetta](https://github.com/vendetta-mod/Vendetta) +# Vendetta +A mod for Discord's mobile apps. -1. Go to Settings > General and enable Developer Settings. +## Installing +Vendetta's codebase is platform-agnostic, but you need a platform-specific loader. -2. Clone the repo: +### Android +* Root - [VendettaXposed](https://github.com/vendetta-mod/VendettaXposed/releases/latest) +* Non-root - [VendettaManager](https://github.com/vendetta-mod/VendettaManager/releases/latest) + - Manager not working? No problem! Pre-built APKs are provided [here](https://discord.k6.tf/). + - The minimum Android version required is 9. It will not work any lower. + +### iOS +* Jailbroken - [VendettaTweak](https://github.com/vendetta-mod/VendettaTweak) + - You can get prebuilt `.deb` files from GitHub Actions - we support rootful and rootless jailbreaks! +* Jailed - You can get IPAs from [the thread](https://discord.com/channels/1015931589865246730/1087295482667208766) in our [Discord server](https://discord.gg/n9QQ4XhhJP) or from our [host](https://discord.k6.tf/ios/). + - These IPAs do *not* work with AltStore! You should use [Sideloadly](https://sideloadly.io). + +## Contributing +1. Install a Vendetta loader with loader config support (any mentioned in the [Installing](#installing) section). + +2. Go to Settings > General and enable Developer Settings. + +3. Clone the repo: ``` - git clone https://github.com/revenge-mod/Revenge + git clone https://github.com/vendetta-mod/Vendetta ``` -3. Install dependencies: +4. Install dependencies: ``` - bun i + pnpm i ``` + `npm` or `yarn` should also work. -4. Build Revenge's code: +5. Build Vendetta's code: ``` - bun run build + pnpm build ``` + `npm` or `yarn` should also work. -5. In the newly created `dist` directory, run a HTTP server. We recommend [http-server](https://www.npmjs.com/package/http-server). +6. In the newly created `dist` directory, run a HTTP server. I recommend [http-server](https://www.npmjs.com/package/http-server). -6. Go to Settings > Developer enabled earlier). Enable `Load from custom url` and input the IP address and port of the server (e.g. e.g. `http://192.168.1.236:4040`) in the new input box labelled `VENDETTA URL`. +7. Go to Settings > Developer enabled earlier). Enable `Load from custom url` and input the IP address and port of the server (e.g. e.g. `http://192.168.1.236:4040`) in the new input box labelled `VENDETTA URL`. -7. Restart Discord. Upon reload, you should notice that your device will download Revenge's bundled code from your server, rather than GitHub. +8. Restart Discord. Upon reload, you should notice that your device will download Vendetta's bundled code from your server, rather than GitHub. -8. Make your changes, rebuild, reload, go wild! +9. Make your changes, rebuild, reload, go wild! diff --git a/biome.json b/biome.json deleted file mode 100644 index 0fe8a6c..0000000 --- a/biome.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", - "javascript": { - "formatter": { - "enabled": true, - "bracketSpacing": true, - "indentSize": 4, - "indentStyle": "space", - "jsxQuoteStyle": "double", - "lineWidth": 240, - "quoteStyle": "double" - } - } -} \ No newline at end of file diff --git a/build.mjs b/build.mjs index 9e123b6..320cdfe 100644 --- a/build.mjs +++ b/build.mjs @@ -14,7 +14,7 @@ const commit = (await exec("git rev-parse HEAD")).stdout.trim().substring(0, 7) try { await build({ entryPoints: ["./src/entry.ts"], - outfile: "./dist/revenge.js", + outfile: "./dist/vendetta.js", minify: true, bundle: true, format: "iife", @@ -44,10 +44,10 @@ try { alias(aliases), ], define: { - __revengeVersion: `"${commit}"`, + __vendettaVersion: `"${commit}"`, }, footer: { - js: "//# sourceURL=Revenge", + js: "//# sourceURL=Vendetta", }, legalComments: "none", }); diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index d6cc699..0000000 Binary files a/bun.lockb and /dev/null differ diff --git a/package.json b/package.json index febe5da..f155a94 100644 --- a/package.json +++ b/package.json @@ -1,41 +1,40 @@ { - "name": "revenge", - "version": "1.0.0", - "description": "A modification for the Discord Android app.", - "scripts": { - "build": "bun run build.mjs" - }, - "keywords": [ - "discord", - "android", - "ios", - "react native" - ], - "author": "maisymoe", - "license": "BSD-3-Clause", - "devDependencies": { - "@biomejs/biome": "^1.5.3", - "@react-native-clipboard/clipboard": "1.10.0", - "@swc/core": "1.3.50", - "@types/chroma-js": "^2.4.0", - "@types/lodash": "^4.14.194", - "@types/react": "18.0.35", - "@types/react-native": "0.70.6", - "esbuild": "^0.17.16", - "esbuild-plugin-alias": "^0.2.1", - "moment": "2.22.2", - "typescript": "^5.0.4" - }, - "dependencies": { - "@swc/helpers": "0.5.0", - "spitroast": "^1.4.3" - }, - "pnpm": { - "peerDependencyRules": { - "ignoreMissing": [ - "react", - "react-native" - ] + "name": "vendetta", + "version": "1.0.0", + "description": "A mod for Discord's mobile apps.", + "scripts": { + "build": "node build.mjs" + }, + "keywords": [ + "discord", + "android", + "ios", + "react native" + ], + "author": "Beef", + "license": "BSD-3-Clause", + "devDependencies": { + "@react-native-clipboard/clipboard": "1.10.0", + "@swc/core": "1.3.50", + "@types/chroma-js": "^2.4.0", + "@types/lodash": "^4.14.194", + "@types/react": "18.0.35", + "@types/react-native": "0.70.6", + "esbuild": "^0.17.16", + "esbuild-plugin-alias": "^0.2.1", + "moment": "2.22.2", + "typescript": "^5.0.4" + }, + "dependencies": { + "@swc/helpers": "0.5.0", + "spitroast": "^1.4.3" + }, + "pnpm": { + "peerDependencyRules": { + "ignoreMissing": [ + "react", + "react-native" + ] + } } - } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..115dc8a --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,461 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@swc/helpers': + specifier: 0.5.0 + version: 0.5.0 + spitroast: + specifier: ^1.4.3 + version: 1.4.3 + +devDependencies: + '@react-native-clipboard/clipboard': + specifier: 1.10.0 + version: 1.10.0 + '@swc/core': + specifier: 1.3.50 + version: 1.3.50(@swc/helpers@0.5.0) + '@types/chroma-js': + specifier: ^2.4.0 + version: 2.4.0 + '@types/lodash': + specifier: ^4.14.194 + version: 4.14.194 + '@types/react': + specifier: 18.0.35 + version: 18.0.35 + '@types/react-native': + specifier: 0.70.6 + version: 0.70.6 + esbuild: + specifier: ^0.17.16 + version: 0.17.16 + esbuild-plugin-alias: + specifier: ^0.2.1 + version: 0.2.1 + moment: + specifier: 2.22.2 + version: 2.22.2 + typescript: + specifier: ^5.0.4 + version: 5.2.2 + +packages: + + /@esbuild/android-arm64@0.17.16: + resolution: {integrity: sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.16: + resolution: {integrity: sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.16: + resolution: {integrity: sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.17.16: + resolution: {integrity: sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.17.16: + resolution: {integrity: sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.16: + resolution: {integrity: sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.16: + resolution: {integrity: sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.17.16: + resolution: {integrity: sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.17.16: + resolution: {integrity: sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.16: + resolution: {integrity: sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.17.16: + resolution: {integrity: sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.17.16: + resolution: {integrity: sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.17.16: + resolution: {integrity: sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.17.16: + resolution: {integrity: sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.17.16: + resolution: {integrity: sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.17.16: + resolution: {integrity: sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.17.16: + resolution: {integrity: sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.17.16: + resolution: {integrity: sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.17.16: + resolution: {integrity: sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.17.16: + resolution: {integrity: sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.17.16: + resolution: {integrity: sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.17.16: + resolution: {integrity: sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@react-native-clipboard/clipboard@1.10.0: + resolution: {integrity: sha512-1L+I0vmeUJgMi8MnNsqI00391/RFLkmmxj9qAuOS2madpvce/oNqJb8Pwk2Fc/uxIJSxOckTpq+dQwyPU6s+7w==} + peerDependencies: + react: '>=16.0' + react-native: '>=0.57.0' + peerDependenciesMeta: + react: + optional: true + react-native: + optional: true + dev: true + + /@swc/core-darwin-arm64@1.3.50: + resolution: {integrity: sha512-riJGLORCFOMeUccEV0hzua0iyJFks7kef+5GfcmC93SLno+LHFDnaJ4mKVXcCAmQ7GYhVTPJs9gSHIW2fO5anQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64@1.3.50: + resolution: {integrity: sha512-XaAhpeUoAK8tOUYSXH/v35yEjIoSP6ClGV/EaqBmDuCzAPue6uJMlIAW+nTmdtqVm5ZNZy2cKtP4ZHhVlfl7xw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf@1.3.50: + resolution: {integrity: sha512-8hDtXs0T5biMtA3I21JQG1uxL+Hb/D2t0NZENuajVK5Vky3GXmf+ICVeQzwGzSXiyftaDgyNAvBidbKPBlNEtw==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu@1.3.50: + resolution: {integrity: sha512-iS908P5cNTHWus4QefSg2jn4lDYcl15sN1Fvx8fQgqYQra2O9CsR8lXBJYkvllykkzoKvWfcOLRCTquz3vsnVQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.3.50: + resolution: {integrity: sha512-ysh8MeaWjGqVwIPCDUhUOr4oczIx5qb8vFBoegI+SOUfcpWik22/+hG25LWzZY6PwAtqUGkhsJt/+5dY4IMhEA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu@1.3.50: + resolution: {integrity: sha512-Ci4LQaGIPweWNVWgR2f47nrYEfq7002Pj6WWKGrnO6g+k5cwR3izxHMOnZhcKyAD3cWOS904i/GbfgXs2wBCDQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl@1.3.50: + resolution: {integrity: sha512-SEXOhGjmC4rdBeucCvNmtO2vflUEhkmWLfqvkalHYDbPMA/gwLSoYu3D85u5XqB8DatDi4TOCUx80IR1b/vDBQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc@1.3.50: + resolution: {integrity: sha512-DPsJ2r9mYU8VzF9vhK323psyE8modj5be9M9diOsqF58Fu9ARtOfuulY+eiS5e41ya2XM/H2N/qOfsA+h2KRcg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc@1.3.50: + resolution: {integrity: sha512-2iyzHLat0C93S3XLp7QJ6RTA9Md+EcPl2fq1S/m2EZqofcq7wu5SuywaXoF89xOibOJBnWe6KwOnOFWFaXrPjQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc@1.3.50: + resolution: {integrity: sha512-iFRU2Y5DVIEdjaWnlLij8QQBM5Q91UJotNNgzuevPSIOhOyhF6V2AQS1QC4mfkPCy3Bw0GrZDChu3GcuBj9Rzw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core@1.3.50(@swc/helpers@0.5.0): + resolution: {integrity: sha512-soTAHlwkI8zukR9KftWZ0gZ7HKU99B/C3CtBxzSI3N23QG+EfSSOgrYARfuZk5g4yLWpsU0rEkojd78vixqkwg==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/helpers': 0.5.0 + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.50 + '@swc/core-darwin-x64': 1.3.50 + '@swc/core-linux-arm-gnueabihf': 1.3.50 + '@swc/core-linux-arm64-gnu': 1.3.50 + '@swc/core-linux-arm64-musl': 1.3.50 + '@swc/core-linux-x64-gnu': 1.3.50 + '@swc/core-linux-x64-musl': 1.3.50 + '@swc/core-win32-arm64-msvc': 1.3.50 + '@swc/core-win32-ia32-msvc': 1.3.50 + '@swc/core-win32-x64-msvc': 1.3.50 + dev: true + + /@swc/helpers@0.5.0: + resolution: {integrity: sha512-SjY/p4MmECVVEWspzSRpQEM3sjR17sP8PbGxELWrT+YZMBfiUyt1MRUNjMV23zohwlG2HYtCQOsCwsTHguXkyg==} + dependencies: + tslib: 2.6.2 + + /@types/chroma-js@2.4.0: + resolution: {integrity: sha512-JklMxityrwjBTjGY2anH8JaTx3yjRU3/sEHSblLH1ba5lqcSh1LnImXJZO5peJfXyqKYWjHTGy4s5Wz++hARrw==} + dev: true + + /@types/lodash@4.14.194: + resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} + dev: true + + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + + /@types/react-native@0.70.6: + resolution: {integrity: sha512-ynQ2jj0km9d7dbnyKqVdQ6Nti7VQ8SLTA/KKkkS5+FnvGyvij2AOo1/xnkBR/jnSNXuzrvGVzw2n0VWfppmfKw==} + dependencies: + '@types/react': 18.0.35 + dev: true + + /@types/react@18.0.35: + resolution: {integrity: sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: true + + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + dev: true + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true + + /esbuild-plugin-alias@0.2.1: + resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} + dev: true + + /esbuild@0.17.16: + resolution: {integrity: sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.16 + '@esbuild/android-arm64': 0.17.16 + '@esbuild/android-x64': 0.17.16 + '@esbuild/darwin-arm64': 0.17.16 + '@esbuild/darwin-x64': 0.17.16 + '@esbuild/freebsd-arm64': 0.17.16 + '@esbuild/freebsd-x64': 0.17.16 + '@esbuild/linux-arm': 0.17.16 + '@esbuild/linux-arm64': 0.17.16 + '@esbuild/linux-ia32': 0.17.16 + '@esbuild/linux-loong64': 0.17.16 + '@esbuild/linux-mips64el': 0.17.16 + '@esbuild/linux-ppc64': 0.17.16 + '@esbuild/linux-riscv64': 0.17.16 + '@esbuild/linux-s390x': 0.17.16 + '@esbuild/linux-x64': 0.17.16 + '@esbuild/netbsd-x64': 0.17.16 + '@esbuild/openbsd-x64': 0.17.16 + '@esbuild/sunos-x64': 0.17.16 + '@esbuild/win32-arm64': 0.17.16 + '@esbuild/win32-ia32': 0.17.16 + '@esbuild/win32-x64': 0.17.16 + dev: true + + /moment@2.22.2: + resolution: {integrity: sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==} + dev: true + + /spitroast@1.4.3: + resolution: {integrity: sha512-JdkzAy2tT82ahx+eEtM5ohBeHICqFln/Yzo+vPGnE5sX1LYgPHCU2qcaSIJfR/xNrhI0q+ftwFz0H2aJysv3EA==} + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true diff --git a/src/def.d.ts b/src/def.d.ts index 12c6152..77bc58f 100644 --- a/src/def.d.ts +++ b/src/def.d.ts @@ -486,7 +486,7 @@ interface VendettaObject { }; storage: { createProxy: (target: T) => { proxy: T, emitter: Emitter }; - useProxy: (storage: T & { [key: symbol]: any }) => T; + useProxy: (storage: T) => T; createStorage: (backend: StorageBackend) => Promise>; wrapSync: >(store: T) => Awaited; awaitSyncWrapper: (store: any) => Promise; @@ -511,10 +511,10 @@ interface VendettaPluginObject { declare global { type React = typeof _React; - const __revengeVersion: string; + const __vendettaVersion: string; interface Window { - [key: Exclude]: any; + [key: PropertyKey]: any; modules: MetroModules; vendetta: VendettaObject; React: typeof _React; diff --git a/src/entry.ts b/src/entry.ts index c5ffe2b..dec955b 100644 --- a/src/entry.ts +++ b/src/entry.ts @@ -1,7 +1,7 @@ import { ClientInfoManager } from "@lib/native"; // This logs in the native logging implementation, e.g. logcat -console.log("Hello from Revenge!"); +console.log("Hello from Vendetta!"); // Make 'freeze' and 'seal' do nothing Object.freeze = Object; @@ -10,10 +10,9 @@ Object.seal = Object; import(".").then((m) => m.default()).catch((e) => { console.log(e?.stack ?? e.toString()); alert([ - "Failed to load Revenge!\n", + "Failed to load Vendetta!\n", `Build Number: ${ClientInfoManager.Build}`, - // TODO: Rename this - `Revenge: ${__revengeVersion}`, + `Vendetta: ${__vendettaVersion}`, e?.stack || e.toString(), ].join("\n")); }); diff --git a/src/index.ts b/src/index.ts index 3cdcfa7..d32c177 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,5 +30,5 @@ export default async () => { unloads.push(await initPlugins()); // We good :) - logger.log("Revenge is ready!"); + logger.log("Vendetta is ready!"); } diff --git a/src/lib/constants.ts b/src/lib/constants.ts index d5ff8a2..4f1b51d 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -1,9 +1,8 @@ -// TODO: Replace links and constants with actual values export const DISCORD_SERVER = "https://discord.gg/n9QQ4XhhJP"; export const DISCORD_SERVER_ID = "1015931589865246730"; export const PLUGINS_CHANNEL_ID = "1091880384561684561"; export const THEMES_CHANNEL_ID = "1091880434939482202"; -export const GITHUB = "https://github.com/revenge-mod"; +export const GITHUB = "https://github.com/vendetta-mod"; export const PROXY_PREFIX = "https://vd-plugins.github.io/proxy"; export const HTTP_REGEX = /^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/; export const HTTP_REGEX_MULTI = /https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g; \ No newline at end of file diff --git a/src/lib/debug.ts b/src/lib/debug.ts index 31e021c..1bb6521 100644 --- a/src/lib/debug.ts +++ b/src/lib/debug.ts @@ -59,7 +59,7 @@ export function patchLogHook() { } } -export const versionHash: string = __revengeVersion; +export const versionHash: string = __vendettaVersion; export function getDebugInfo() { // Hermes diff --git a/src/lib/logger.ts b/src/lib/logger.ts index d4bf2e3..1e107df 100644 --- a/src/lib/logger.ts +++ b/src/lib/logger.ts @@ -2,6 +2,6 @@ import { Logger } from "@types"; import { findByProps } from "@metro/filters"; export const logModule = findByProps("setLogFn").default; -const logger: Logger = new logModule("Revenge"); +const logger: Logger = new logModule("Vendetta"); export default logger; \ No newline at end of file diff --git a/src/lib/preinit.ts b/src/lib/preinit.ts index 4e26d8a..7f1af9c 100644 --- a/src/lib/preinit.ts +++ b/src/lib/preinit.ts @@ -40,6 +40,6 @@ if (window.__vendetta_loader?.features.themes) { try { initThemes(); } catch (e) { - console.error("[Revenge] Failed to initialize themes...", e); + console.error("[Vendetta] Failed to initialize themes...", e); } } \ No newline at end of file diff --git a/src/lib/storage/index.ts b/src/lib/storage/index.ts index ab161a8..07d4072 100644 --- a/src/lib/storage/index.ts +++ b/src/lib/storage/index.ts @@ -81,7 +81,7 @@ export function useProxy(storage: T & { [key: symbol]: any }): T { return storage; } -export async function createStorage(backend: StorageBackend): Promise> { +export async function createStorage(backend: StorageBackend): Promise> { const data = await backend.get(); const { proxy, emitter } = createProxy(data); diff --git a/src/lib/windowObject.ts b/src/lib/windowObject.ts index 3bccec3..38e01c3 100644 --- a/src/lib/windowObject.ts +++ b/src/lib/windowObject.ts @@ -43,7 +43,7 @@ export default async (unloads: any[]): Promise => ({ version: debug.versionHash, unload: () => { unloads.filter(i => typeof i === "function").forEach(p => p()); - // @ts-expect-error On unload, nothing would be using this + // @ts-expect-error explode delete window.vendetta; }, }); diff --git a/src/ui/components/Search.tsx b/src/ui/components/Search.tsx index 56daa6b..c88f6e9 100644 --- a/src/ui/components/Search.tsx +++ b/src/ui/components/Search.tsx @@ -9,6 +9,7 @@ const styles = stylesheet.createThemedStyleSheet({ margin: 0, padding: 0, borderBottomWidth: 0, + background: "none", backgroundColor: "none", } }); diff --git a/src/ui/settings/components/SettingsSection.tsx b/src/ui/settings/components/SettingsSection.tsx index a063238..5a7174f 100644 --- a/src/ui/settings/components/SettingsSection.tsx +++ b/src/ui/settings/components/SettingsSection.tsx @@ -15,7 +15,7 @@ export default function SettingsSection() { return ( - + {screens.map((s, i) => ( <> any) | null) = export const getScreens = (youKeys = false): Screen[] => [ { - key: formatKey("RevengeSettings", youKeys), + key: formatKey("VendettaSettings", youKeys), title: "General", icon: "settings", render: General, }, { - key: formatKey("RevengePlugins", youKeys), + key: formatKey("VendettaPlugins", youKeys), title: "Plugins", icon: "debug", options: { @@ -51,7 +51,7 @@ export const getScreens = (youKeys = false): Screen[] => [ if (!input.startsWith(PROXY_PREFIX) && !settings.developerSettings) setImmediate(() => showConfirmationAlert({ title: "Unproxied Plugin", - content: "The plugin you are trying to install has not been verified by Revenge staff. Are you sure you want to continue?", + content: "The plugin you are trying to install has not been proxied/verified by Vendetta staff. Are you sure you want to continue?", confirmText: "Install", onConfirm: () => installPlugin(input) @@ -67,7 +67,7 @@ export const getScreens = (youKeys = false): Screen[] => [ render: Plugins, }, { - key: formatKey("RevengeThemes", youKeys), + key: formatKey("VendettaThemes", youKeys), title: "Themes", icon: "ic_theme_24px", // TODO: bad @@ -78,7 +78,7 @@ export const getScreens = (youKeys = false): Screen[] => [ render: Themes, }, { - key: formatKey("RevengeDeveloper", youKeys), + key: formatKey("VendettaDeveloper", youKeys), title: "Developer", icon: "ic_progress_wrench_24px", shouldRender: () => settings.developerSettings ?? false, @@ -86,7 +86,7 @@ export const getScreens = (youKeys = false): Screen[] => [ }, { key: formatKey("VendettaCustomPage", youKeys), - title: "Revenge Page", + title: "Vendetta Page", shouldRender: () => false, render: ({ render: PageView, noErrorBoundary, ...options }: { render: React.ComponentType; noErrorBoundary: boolean } & Record) => { const navigation = NavigationNative.useNavigation(); @@ -110,8 +110,8 @@ export const getYouData = () => { return { getLayout: () => ({ - title: "Revenge", - label: "Revenge", + title: "Vendetta", + label: "Vendetta", // We can't use our keyMap function here since `settings` is an array not an object settings: getRenderableScreens(true).map(s => s.key) }), diff --git a/src/ui/settings/pages/Developer.tsx b/src/ui/settings/pages/Developer.tsx index f48fc0a..bcceb62 100644 --- a/src/ui/settings/pages/Developer.tsx +++ b/src/ui/settings/pages/Developer.tsx @@ -48,7 +48,7 @@ export default function Developer() { {window.__vendetta_loader?.features.loaderConfig && } value={loaderConfig.customLoadUrl.enabled} onValueChange={(v: boolean) => { @@ -60,8 +60,8 @@ export default function Developer() { loaderConfig.customLoadUrl.url = v} - placeholder="http://localhost:4040/revenge.js" - title="REVENGE URL" + placeholder="http://localhost:4040/vendetta.js" + title="VENDETTA URL" /> } @@ -100,7 +100,7 @@ export default function Developer() { options: [ // @ts-expect-error // Of course, to trigger an error, we need to do something incorrectly. The below will do! - { label: "Revenge", onPress: () => navigation.push("VendettaCustomPage", { render: () => }) }, + { label: "Vendetta", onPress: () => navigation.push("VendettaCustomPage", { render: () => }) }, { label: "Discord", isDestructive: true, onPress: () => navigation.push("VendettaCustomPage", { noErrorBoundary: true }) }, ], })} diff --git a/src/ui/settings/pages/General.tsx b/src/ui/settings/pages/General.tsx index 5c9bec3..1b94a30 100644 --- a/src/ui/settings/pages/General.tsx +++ b/src/ui/settings/pages/General.tsx @@ -16,7 +16,7 @@ export default function General() { const versions = [ { - label: "Revenge", + label: "Vendetta", version: debugInfo.vendetta.version, icon: "ic_progress_wrench_24px", }, diff --git a/src/ui/settings/patches/you.tsx b/src/ui/settings/patches/you.tsx index bc62c7b..62a4c44 100644 --- a/src/ui/settings/patches/you.tsx +++ b/src/ui/settings/patches/you.tsx @@ -44,7 +44,7 @@ function oldYouPatch(patches: Function[]) { ancestorRendererData: data.rendererConfigs[s.key], setting: s.key, title: data.titleConfig[s.key], - breadcrumbs: ["Revenge"], + breadcrumbs: ["Vendetta"], icon: data.rendererConfigs[s.key].icon, })), // .filter can be removed when dropping support for 189.3 and below (unless Discord changes things again) @@ -78,7 +78,7 @@ function newYouPatch(patches: Function[]) { patches.push(before("type", settingsListComponents.SearchableSettingsList, ([{ sections }]) => manipulateSections(sections, data.getLayout()))); patches.push(after("getSettingListSearchResultItems", gettersModule, (_, ret) => { - ret.forEach((s: any) => screens.some(b => b.key === s.setting) && (s.breadcrumbs = ["Revenge"])) + ret.forEach((s: any) => screens.some(b => b.key === s.setting) && (s.breadcrumbs = ["Vendetta"])) })); const oldRendererConfig = settingConstantsModule.SETTING_RENDERER_CONFIG; @@ -94,7 +94,7 @@ function newYouPatch(patches: Function[]) { const isLabel = (i: any, name: string) => i?.label === name || i?.title === name; function manipulateSections(sections: any[], layout: any) { - if (!Array.isArray(sections) || sections.find((i: any) => isLabel(i, "Revenge"))) return; + if (!Array.isArray(sections) || sections.find((i: any) => isLabel(i, "Vendetta"))) return; // Add our settings const accountSettingsIndex = sections.findIndex((i: any) => isLabel(i, i18n.Messages.ACCOUNT_SETTINGS)); diff --git a/tsconfig.json b/tsconfig.json index 7969e9b..9410367 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,6 @@ "strict": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, - "skipLibCheck": true, "paths": { "@/*": ["src/*"], "@types": ["src/def.d.ts"],