diff --git a/packages/vencord-types/.gitignore b/packages/vencord-types/.gitignore new file mode 100644 index 00000000..de4d1f00 --- /dev/null +++ b/packages/vencord-types/.gitignore @@ -0,0 +1,2 @@ +dist +node_modules diff --git a/packages/vencord-types/.npmignore b/packages/vencord-types/.npmignore new file mode 100644 index 00000000..ff179ca7 --- /dev/null +++ b/packages/vencord-types/.npmignore @@ -0,0 +1,2 @@ +node_modules +prepare.ts diff --git a/packages/vencord-types/README.md b/packages/vencord-types/README.md new file mode 100644 index 00000000..0513f870 --- /dev/null +++ b/packages/vencord-types/README.md @@ -0,0 +1,11 @@ +# Vencord Types + +Typings for Vencord's api, published to npm + +```sh +npm i @vencord/types + +yarn add @vencord/types + +pnpm add @vencord/types +``` diff --git a/packages/vencord-types/index.d.ts b/packages/vencord-types/index.d.ts new file mode 100644 index 00000000..dcb52546 --- /dev/null +++ b/packages/vencord-types/index.d.ts @@ -0,0 +1,5 @@ +/* eslint-disable */ + +/// +/// +/// diff --git a/packages/vencord-types/package.json b/packages/vencord-types/package.json new file mode 100644 index 00000000..547d5d31 --- /dev/null +++ b/packages/vencord-types/package.json @@ -0,0 +1,26 @@ +{ + "name": "@vencord/types", + "private": false, + "version": "0.1.0", + "description": "", + "types": "index.d.ts", + "scripts": { + "prepublishOnly": "tsx ./prepare.ts", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "Vencord", + "license": "GPL-3.0", + "devDependencies": { + "tsx": "^3.12.6" + }, + "dependencies": { + "@types/lodash": "^4.14.191", + "@types/node": "^18.11.18", + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "discord-types": "^1.3.26", + "standalone-electron-types": "^1.0.0", + "type-fest": "^3.5.3" + } +} diff --git a/packages/vencord-types/prepare.ts b/packages/vencord-types/prepare.ts new file mode 100644 index 00000000..f278204d --- /dev/null +++ b/packages/vencord-types/prepare.ts @@ -0,0 +1,31 @@ +/* + * Vencord, a modification for Discord's desktop app + * Copyright (c) 2023 Vendicated and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +import { cpSync, rmSync } from "fs"; +import { join } from "path"; + +for (const file of ["preload.d.ts", "userplugins", "main", "debug"]) { + rmSync(join(__dirname, "dist", file), { recursive: true, force: true }); +} + +for (const file of ["globals.d.ts", "modules.d.ts"]) { + cpSync( + join(__dirname, "..", "..", "src", file), + join(__dirname, "dist", file) + ); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73d29a53..148de6c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,102 +8,132 @@ patchedDependencies: hash: 7wc6icvgtg3uswirb5tpsbjnbe path: patches/eslint@8.28.0.patch -dependencies: - '@vap/core': - specifier: 0.0.12 - version: 0.0.12 - '@vap/shiki': - specifier: 0.10.3 - version: 0.10.3 - fflate: - specifier: ^0.7.4 - version: 0.7.4 - nanoid: - specifier: ^4.0.2 - version: 4.0.2 - virtual-merge: - specifier: ^1.0.1 - version: 1.0.1 +importers: -devDependencies: - '@types/diff': - specifier: ^5.0.2 - version: 5.0.2 - '@types/lodash': - specifier: ^4.14.191 - version: 4.14.191 - '@types/node': - specifier: ^18.11.18 - version: 18.11.18 - '@types/react': - specifier: ^18.0.27 - version: 18.0.27 - '@types/react-dom': - specifier: ^18.0.10 - version: 18.0.10 - '@types/yazl': - specifier: ^2.4.2 - version: 2.4.2 - '@typescript-eslint/eslint-plugin': - specifier: ^5.49.0 - version: 5.49.0(@typescript-eslint/parser@5.49.0)(eslint@8.28.0)(typescript@4.9.4) - '@typescript-eslint/parser': - specifier: ^5.49.0 - version: 5.49.0(eslint@8.28.0)(typescript@4.9.4) - diff: - specifier: ^5.1.0 - version: 5.1.0 - discord-types: - specifier: ^1.3.26 - version: 1.3.26 - esbuild: - specifier: ^0.15.18 - version: 0.15.18 - eslint: - specifier: ^8.28.0 - version: 8.28.0(patch_hash=7wc6icvgtg3uswirb5tpsbjnbe) - eslint-import-resolver-alias: - specifier: ^1.1.2 - version: 1.1.2 - eslint-plugin-header: - specifier: ^3.1.1 - version: 3.1.1(eslint@8.28.0) - eslint-plugin-path-alias: - specifier: ^1.0.0 - version: 1.0.0(patch_hash=m6sma4g6bh67km3q6igf6uxaja)(eslint@8.28.0) - eslint-plugin-simple-import-sort: - specifier: ^8.0.0 - version: 8.0.0(eslint@8.28.0) - eslint-plugin-unused-imports: - specifier: ^2.0.0 - version: 2.0.0(@typescript-eslint/eslint-plugin@5.49.0)(eslint@8.28.0) - highlight.js: - specifier: 10.6.0 - version: 10.6.0 - moment: - specifier: ^2.29.4 - version: 2.29.4 - puppeteer-core: - specifier: ^19.6.0 - version: 19.6.0 - standalone-electron-types: - specifier: ^1.0.0 - version: 1.0.0 - stylelint: - specifier: ^14.16.1 - version: 14.16.1 - stylelint-config-standard: - specifier: ^29.0.0 - version: 29.0.0(stylelint@14.16.1) - tsx: - specifier: ^3.12.6 - version: 3.12.6 - type-fest: - specifier: ^3.5.3 - version: 3.5.3 - typescript: - specifier: ^4.9.4 - version: 4.9.4 + .: + dependencies: + '@vap/core': + specifier: 0.0.12 + version: 0.0.12 + '@vap/shiki': + specifier: 0.10.3 + version: 0.10.3 + fflate: + specifier: ^0.7.4 + version: 0.7.4 + nanoid: + specifier: ^4.0.2 + version: 4.0.2 + virtual-merge: + specifier: ^1.0.1 + version: 1.0.1 + devDependencies: + '@types/diff': + specifier: ^5.0.2 + version: 5.0.2 + '@types/lodash': + specifier: ^4.14.191 + version: 4.14.191 + '@types/node': + specifier: ^18.11.18 + version: 18.11.18 + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + '@types/yazl': + specifier: ^2.4.2 + version: 2.4.2 + '@typescript-eslint/eslint-plugin': + specifier: ^5.49.0 + version: 5.49.0(@typescript-eslint/parser@5.49.0)(eslint@8.28.0)(typescript@4.9.4) + '@typescript-eslint/parser': + specifier: ^5.49.0 + version: 5.49.0(eslint@8.28.0)(typescript@4.9.4) + diff: + specifier: ^5.1.0 + version: 5.1.0 + discord-types: + specifier: ^1.3.26 + version: 1.3.26 + esbuild: + specifier: ^0.15.18 + version: 0.15.18 + eslint: + specifier: ^8.28.0 + version: 8.28.0(patch_hash=7wc6icvgtg3uswirb5tpsbjnbe) + eslint-import-resolver-alias: + specifier: ^1.1.2 + version: 1.1.2 + eslint-plugin-header: + specifier: ^3.1.1 + version: 3.1.1(eslint@8.28.0) + eslint-plugin-path-alias: + specifier: ^1.0.0 + version: 1.0.0(patch_hash=m6sma4g6bh67km3q6igf6uxaja)(eslint@8.28.0) + eslint-plugin-simple-import-sort: + specifier: ^8.0.0 + version: 8.0.0(eslint@8.28.0) + eslint-plugin-unused-imports: + specifier: ^2.0.0 + version: 2.0.0(@typescript-eslint/eslint-plugin@5.49.0)(eslint@8.28.0) + highlight.js: + specifier: 10.6.0 + version: 10.6.0 + moment: + specifier: ^2.29.4 + version: 2.29.4 + puppeteer-core: + specifier: ^19.6.0 + version: 19.6.0 + standalone-electron-types: + specifier: ^1.0.0 + version: 1.0.0 + stylelint: + specifier: ^14.16.1 + version: 14.16.1 + stylelint-config-standard: + specifier: ^29.0.0 + version: 29.0.0(stylelint@14.16.1) + tsx: + specifier: ^3.12.6 + version: 3.12.6 + type-fest: + specifier: ^3.5.3 + version: 3.5.3 + typescript: + specifier: ^4.9.4 + version: 4.9.4 + + packages/vencord-types: + dependencies: + '@types/lodash': + specifier: ^4.14.191 + version: 4.14.191 + '@types/node': + specifier: ^18.11.18 + version: 18.11.18 + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + discord-types: + specifier: ^1.3.26 + version: 1.3.26 + standalone-electron-types: + specifier: ^1.0.0 + version: 1.0.0 + type-fest: + specifier: ^3.5.3 + version: 3.5.3 + devDependencies: + tsx: + specifier: ^3.12.6 + version: 3.12.6 packages: @@ -444,7 +474,6 @@ packages: /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} - dev: true /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} @@ -452,7 +481,6 @@ packages: /@types/node@18.11.18: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} - dev: true /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -464,20 +492,17 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - dev: true /@types/react-dom@18.0.10: resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} dependencies: '@types/react': 18.0.27 - dev: true /@types/react@17.0.2: resolution: {integrity: sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==} dependencies: '@types/prop-types': 15.7.5 csstype: 3.1.0 - dev: true /@types/react@18.0.27: resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} @@ -485,11 +510,9 @@ packages: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 csstype: 3.1.0 - dev: true /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - dev: true /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} @@ -980,7 +1003,6 @@ packages: /csstype@3.1.0: resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} - dev: true /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -1070,7 +1092,6 @@ packages: dependencies: '@types/react': 17.0.2 moment: 2.29.4 - dev: true /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} @@ -2262,7 +2283,6 @@ packages: /moment@2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} - dev: true /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -2828,7 +2848,6 @@ packages: resolution: {integrity: sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==} dependencies: '@types/node': 18.11.18 - dev: true /static-extend@0.1.2: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} @@ -3098,7 +3117,6 @@ packages: /type-fest@3.5.3: resolution: {integrity: sha512-V2+og4j/rWReWvaFrse3s9g2xvUv/K9Azm/xo6CjIuq7oeGqsoimC7+9/A3tfvNcbQf8RPSVj/HV81fB4DJrjA==} engines: {node: '>=14.16'} - dev: true /typescript@4.9.4: resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..9bec5ba5 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - packages/* diff --git a/src/modules.d.ts b/src/modules.d.ts index d75a84f7..dee20cbe 100644 --- a/src/modules.d.ts +++ b/src/modules.d.ts @@ -20,7 +20,7 @@ /// declare module "~plugins" { - const plugins: Record; + const plugins: Record; export default plugins; } diff --git a/src/plugins/highResAvatars.ts b/src/plugins/highResAvatars.ts new file mode 100644 index 00000000..5687466e --- /dev/null +++ b/src/plugins/highResAvatars.ts @@ -0,0 +1,37 @@ +/* + * Vencord, a modification for Discord's desktop app + * Copyright (c) 2023 Vendicated and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +import { Devs } from "@utils/constants"; +import definePlugin from "@utils/types"; + +export default definePlugin({ + name: "HighResImages", + description: "Makes Discord use higher resolution versions of images (pfps, emotes, etc)", + authors: [Devs.Ven], + + patches: [ + { + find: 'command:"tenor"', + replacement: { + // resolution list. Simply removes everything smaller than 512 + match: /=\[16,20,22.+?,(512,.+?3072,4096)\]/, + replace: "=[$1]" + } + } + ] +});