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"],