diff --git a/.env.example b/.env.example index defb473..63dd87d 100644 --- a/.env.example +++ b/.env.example @@ -5,4 +5,4 @@ # https://github.com/settings/personal-access-tokens/new GITHUB_TOKEN= -ELECTRON_LAUNCH_FLAGS="--ozone-platform-hint=auto --enable-webrtc-pipewire-capturer --enable-features=WaylandWindowDecorations" \ No newline at end of file +ELECTRON_LAUNCH_FLAGS="--enable-source-maps --ozone-platform-hint=auto" \ No newline at end of file diff --git a/package.json b/package.json index c66b8c1..a146243 100644 --- a/package.json +++ b/package.json @@ -35,14 +35,14 @@ "devDependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", "@stylistic/eslint-plugin": "^4.2.0", - "@types/node": "^22.15.17", + "@types/node": "^22.15.18", "@types/react": "18.3.1", "@vencord/types": "^1.11.5", "dotenv": "^16.5.0", - "electron": "^36.2.0", + "electron": "^36.2.1", "electron-builder": "^26.0.12", "esbuild": "^0.25.4", - "eslint": "^9.26.0", + "eslint": "^9.27.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-path-alias": "^2.1.0", "eslint-plugin-prettier": "^5.4.0", @@ -121,7 +121,8 @@ "Type": "Application", "Categories": "Network;InstantMessaging;Chat;", "Keywords": "discord;vencord;nexulien;electron;chat;", - "MimeType": "x-scheme-handler/discord" + "MimeType": "x-scheme-handler/discord", + "StartupWMClass": "nexop" } } }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a387b5..44880d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,10 +25,10 @@ importers: version: 2.1.2 '@stylistic/eslint-plugin': specifier: ^4.2.0 - version: 4.2.0(eslint@9.26.0)(typescript@5.8.3) + version: 4.2.0(eslint@9.27.0)(typescript@5.8.3) '@types/node': - specifier: ^22.15.17 - version: 22.15.17 + specifier: ^22.15.18 + version: 22.15.18 '@types/react': specifier: 18.3.1 version: 18.3.1 @@ -39,8 +39,8 @@ importers: specifier: ^16.5.0 version: 16.5.0 electron: - specifier: ^36.2.0 - version: 36.2.0 + specifier: ^36.2.1 + version: 36.2.1 electron-builder: specifier: ^26.0.12 version: 26.0.12(electron-builder-squirrel-windows@25.1.8) @@ -48,26 +48,26 @@ importers: specifier: ^0.25.4 version: 0.25.4 eslint: - specifier: ^9.26.0 - version: 9.26.0 + specifier: ^9.27.0 + version: 9.27.0 eslint-import-resolver-alias: specifier: ^1.1.2 - version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)) + version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)) eslint-plugin-path-alias: specifier: ^2.1.0 - version: 2.1.0(eslint@9.26.0) + version: 2.1.0(eslint@9.27.0) eslint-plugin-prettier: specifier: ^5.4.0 - version: 5.4.0(eslint@9.26.0)(prettier@3.5.3) + version: 5.4.0(eslint@9.27.0)(prettier@3.5.3) eslint-plugin-simple-header: specifier: ^1.2.2 - version: 1.2.2(eslint@9.26.0) + version: 1.2.2(eslint@9.27.0) eslint-plugin-simple-import-sort: specifier: ^12.1.1 - version: 12.1.1(eslint@9.26.0) + version: 12.1.1(eslint@9.27.0) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -85,7 +85,7 @@ importers: version: 5.8.3 typescript-eslint: specifier: ^8.32.1 - version: 8.32.1(eslint@9.26.0)(typescript@5.8.3) + version: 8.32.1(eslint@9.27.0)(typescript@5.8.3) xml-formatter: specifier: ^3.6.6 version: 3.6.6 @@ -319,24 +319,24 @@ packages: resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.13.0': - resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.26.0': - resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} + '@eslint/js@9.27.0': + resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.8': - resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + '@eslint/plugin-kit@0.3.1': + resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fal-works/esbuild-plugin-global-externals@2.1.2': @@ -377,10 +377,6 @@ packages: resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} engines: {node: '>= 10.0.0'} - '@modelcontextprotocol/sdk@1.11.2': - resolution: {integrity: sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ==} - engines: {node: '>=18'} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -461,8 +457,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.15.17': - resolution: {integrity: sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==} + '@types/node@22.15.18': + resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} @@ -575,10 +571,6 @@ packages: abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -774,10 +766,6 @@ packages: bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - body-parser@2.2.0: - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} - engines: {node: '>=18'} - boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -815,10 +803,6 @@ packages: builder-util@26.0.11: resolution: {integrity: sha512-xNjXfsldUEe153h1DraD0XvDOpqGR0L5eKFkdReB7eFW5HqysDZFfly4rckda6y9dF39N3pkPlOblcfHKGw+uA==} - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - cacache@16.1.3: resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -945,22 +929,6 @@ packages: console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - content-disposition@1.0.0: - resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} - engines: {node: '>= 0.6'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} - - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} @@ -971,10 +939,6 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} @@ -1089,10 +1053,6 @@ packages: delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} @@ -1138,9 +1098,6 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} @@ -1163,8 +1120,8 @@ packages: electron-updater@6.6.2: resolution: {integrity: sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==} - electron@36.2.0: - resolution: {integrity: sha512-5yldoRjBKxPQfI0QMX+qq750o3Nl8N1SZnJqOPMq0gZ6rIJ+7y4ZLp808GrFwjfTm05TYgq3GSD8FGuKQZqwEw==} + electron@36.2.1: + resolution: {integrity: sha512-mm1Y+Ms46xcOTA69h8hpqfX392HfV4lga9aEkYkd/Syx1JBStvcACOIouCgGrnZpxNZPVS1jM8NTcMkNjuK6BQ==} engines: {node: '>= 12.20.55'} hasBin: true @@ -1174,10 +1131,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} @@ -1231,9 +1184,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1328,8 +1278,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.26.0: - resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} + eslint@9.27.0: + resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1358,18 +1308,6 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - eventsource-parser@3.0.1: - resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} - engines: {node: '>=18.0.0'} - - eventsource@3.0.7: - resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} - engines: {node: '>=18.0.0'} - expand-tilde@2.0.2: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} @@ -1377,16 +1315,6 @@ packages: exponential-backoff@3.1.2: resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} - express-rate-limit@7.5.0: - resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} - engines: {node: '>= 16'} - peerDependencies: - express: ^4.11 || 5 || ^5.0.0-beta.1 - - express@5.1.0: - resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} - engines: {node: '>= 18'} - extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -1437,10 +1365,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@2.1.0: - resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} - engines: {node: '>= 0.8'} - find-file-up@2.0.1: resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==} engines: {node: '>=8'} @@ -1485,18 +1409,10 @@ packages: resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} engines: {node: '>= 6'} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - fragment-cache@0.2.1: resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} engines: {node: '>=0.10.0'} - fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} - engines: {node: '>= 0.8'} - fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -1682,10 +1598,6 @@ packages: http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -1762,10 +1674,6 @@ packages: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - is-accessor-descriptor@1.0.1: resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} engines: {node: '>= 0.10'} @@ -1876,9 +1784,6 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} - is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -2087,17 +1992,9 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} - memory-stream@1.0.0: resolution: {integrity: sha512-Wm13VcsPIMdG96dzILfij09PvuS3APtcKNh7M28FsCA/w6+1mjR7hhPmfFNoilX9xU7wTdhsH5lJAm6XNzdtww==} - merge-descriptors@2.0.0: - resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} - engines: {node: '>=18'} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2110,18 +2007,10 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime-types@3.0.1: - resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} - engines: {node: '>= 0.6'} - mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} @@ -2222,10 +2111,6 @@ packages: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} - node-abi@3.74.0: resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} engines: {node: '>=10'} @@ -2270,10 +2155,6 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This package is no longer supported. - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - object-copy@0.1.0: resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} engines: {node: '>=0.10.0'} @@ -2310,10 +2191,6 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2360,10 +2237,6 @@ packages: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} engines: {node: '>=0.10.0'} @@ -2387,10 +2260,6 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@8.2.0: - resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} - engines: {node: '>=16'} - pe-library@0.4.1: resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} engines: {node: '>=12', npm: '>=6'} @@ -2406,10 +2275,6 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - pkce-challenge@5.0.0: - resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} - engines: {node: '>=16.20.0'} - pkg-prebuilds@0.2.1: resolution: {integrity: sha512-FdOlDiRqRL7i9aYzQflhGWCoiJf/8u6Qgzq48gKsRDYejtfjvGb1U5QGSzllcqpNg2a8Swx/9fMgtuVefwU+zw==} engines: {node: '>= 14.15.0'} @@ -2459,10 +2324,6 @@ packages: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -2473,10 +2334,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} - engines: {node: '>=0.6'} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2484,14 +2341,6 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@3.0.0: - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} - engines: {node: '>= 0.8'} - rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -2581,10 +2430,6 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} - router@2.2.0: - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} - engines: {node: '>= 18'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -2639,18 +2484,10 @@ packages: engines: {node: '>=10'} hasBin: true - send@1.2.0: - resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} - engines: {node: '>= 18'} - serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} - serve-static@2.2.0: - resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} - engines: {node: '>= 18'} - set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -2670,9 +2507,6 @@ packages: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2769,10 +2603,6 @@ packages: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} engines: {node: '>=0.10.0'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2871,10 +2701,6 @@ packages: resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} engines: {node: '>=0.10.0'} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} @@ -2907,10 +2733,6 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-is@2.0.1: - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} - engines: {node: '>= 0.6'} - typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -2966,10 +2788,6 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - unset-value@1.0.0: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} @@ -2994,10 +2812,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - verror@1.10.1: resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} engines: {node: '>=0.6.0'} @@ -3098,14 +2912,6 @@ packages: resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} engines: {node: '>= 10'} - zod-to-json-schema@3.24.5: - resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} - peerDependencies: - zod: ^3.24.1 - - zod@3.24.4: - resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} - snapshots: 7zip-bin@5.2.0: {} @@ -3150,7 +2956,7 @@ snapshots: make-fetch-happen: 10.2.1 nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.2 + semver: 7.7.1 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -3303,14 +3109,14 @@ snapshots: '@esbuild/win32-x64@0.25.4': optional: true - '@eslint-community/eslint-utils@4.6.1(eslint@9.26.0)': + '@eslint-community/eslint-utils@4.6.1(eslint@9.27.0)': dependencies: - eslint: 9.26.0 + eslint: 9.27.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0)': dependencies: - eslint: 9.26.0 + eslint: 9.27.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -3325,7 +3131,7 @@ snapshots: '@eslint/config-helpers@0.2.2': {} - '@eslint/core@0.13.0': + '@eslint/core@0.14.0': dependencies: '@types/json-schema': 7.0.15 @@ -3343,13 +3149,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.26.0': {} + '@eslint/js@9.27.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.8': + '@eslint/plugin-kit@0.3.1': dependencies: - '@eslint/core': 0.13.0 + '@eslint/core': 0.14.0 levn: 0.4.1 '@fal-works/esbuild-plugin-global-externals@2.1.2': {} @@ -3391,21 +3197,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@modelcontextprotocol/sdk@1.11.2': - dependencies: - content-type: 1.0.5 - cors: 2.8.5 - cross-spawn: 7.0.6 - eventsource: 3.0.7 - express: 5.1.0 - express-rate-limit: 7.5.0(express@5.1.0) - pkce-challenge: 5.0.0 - raw-body: 3.0.0 - zod: 3.24.4 - zod-to-json-schema: 3.24.5(zod@3.24.4) - transitivePeerDependencies: - - supports-color - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3421,7 +3212,7 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.2 + semver: 7.7.1 '@npmcli/move-file@2.0.1': dependencies: @@ -3437,10 +3228,10 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@stylistic/eslint-plugin@4.2.0(eslint@9.26.0)(typescript@5.8.3)': + '@stylistic/eslint-plugin@4.2.0(eslint@9.27.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.29.0(eslint@9.26.0)(typescript@5.8.3) - eslint: 9.26.0 + '@typescript-eslint/utils': 8.29.0(eslint@9.27.0)(typescript@5.8.3) + eslint: 9.27.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 estraverse: 5.3.0 @@ -3459,7 +3250,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@types/responselike': 1.0.3 '@types/debug@4.1.12': @@ -3470,7 +3261,7 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@types/http-cache-semantics@4.0.4': {} @@ -3480,19 +3271,19 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@types/lodash@4.17.15': {} '@types/ms@2.1.0': {} - '@types/node@22.15.17': + '@types/node@22.15.18': dependencies: undici-types: 6.21.0 '@types/plist@3.0.5': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 xmlbuilder: 15.1.1 optional: true @@ -3514,25 +3305,25 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@types/verror@1.10.11': optional: true '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 optional: true - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@9.26.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.26.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0)(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.26.0 + eslint: 9.27.0 graphemer: 1.4.0 ignore: 7.0.4 natural-compare: 1.4.0 @@ -3541,14 +3332,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 debug: 4.4.1 - eslint: 9.26.0 + eslint: 9.27.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -3563,12 +3354,12 @@ snapshots: '@typescript-eslint/types': 8.32.1 '@typescript-eslint/visitor-keys': 8.32.1 - '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) debug: 4.4.1 - eslint: 9.26.0 + eslint: 9.27.0 ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -3606,24 +3397,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.29.0(eslint@9.27.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.26.0) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.27.0) '@typescript-eslint/scope-manager': 8.29.0 '@typescript-eslint/types': 8.29.0 '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) - eslint: 9.26.0 + eslint: 9.27.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.32.1(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.27.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 9.26.0 + eslint: 9.27.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -3641,7 +3432,7 @@ snapshots: '@vencord/types@1.11.5': dependencies: '@types/lodash': 4.17.15 - '@types/node': 22.15.17 + '@types/node': 22.15.18 '@types/react': 18.3.1 '@types/react-dom': 18.3.1 discord-types: 1.3.26 @@ -3661,11 +3452,6 @@ snapshots: abbrev@1.1.1: {} - accepts@2.0.0: - dependencies: - mime-types: 3.0.1 - negotiator: 1.0.0 - acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -3674,7 +3460,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -3960,20 +3746,6 @@ snapshots: bluebird@3.7.2: {} - body-parser@2.2.0: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 4.4.1 - http-errors: 2.0.0 - iconv-lite: 0.6.3 - on-finished: 2.4.1 - qs: 6.14.0 - raw-body: 3.0.0 - type-is: 2.0.1 - transitivePeerDependencies: - - supports-color - boolean@3.2.0: optional: true @@ -4056,8 +3828,6 @@ snapshots: transitivePeerDependencies: - supports-color - bytes@3.1.2: {} - cacache@16.1.3: dependencies: '@npmcli/fs': 2.1.2 @@ -4226,16 +3996,6 @@ snapshots: console-control-strings@1.1.0: {} - content-disposition@1.0.0: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - - cookie-signature@1.2.2: {} - - cookie@0.7.2: {} - copy-descriptor@0.1.1: {} core-util-is@1.0.2: @@ -4243,11 +4003,6 @@ snapshots: core-util-is@1.0.3: {} - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - crc-32@1.2.2: {} crc32-stream@4.0.3: @@ -4348,8 +4103,6 @@ snapshots: delegates@1.0.0: {} - depd@2.0.0: {} - detect-libc@2.0.3: {} detect-libc@2.0.4: {} @@ -4412,8 +4165,6 @@ snapshots: eastasianwidth@0.2.0: {} - ee-first@1.1.1: {} - ejs@3.1.10: dependencies: jake: 10.9.2 @@ -4484,10 +4235,10 @@ snapshots: transitivePeerDependencies: - supports-color - electron@36.2.0: + electron@36.2.1: dependencies: '@electron/get': 2.0.3 - '@types/node': 22.15.17 + '@types/node': 22.15.18 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -4496,8 +4247,6 @@ snapshots: emoji-regex@9.2.2: {} - encodeurl@2.0.0: {} - encoding@0.1.13: dependencies: iconv-lite: 0.6.3 @@ -4623,13 +4372,11 @@ snapshots: escalade@3.2.0: {} - escape-html@1.0.3: {} - escape-string-regexp@4.0.0: {} - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)): dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -4639,17 +4386,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.26.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.27.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.32.1(eslint@9.26.0)(typescript@5.8.3) - eslint: 9.26.0 + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + eslint: 9.27.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -4658,9 +4405,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.26.0 + eslint: 9.27.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.26.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.27.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -4672,41 +4419,41 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.32.1(eslint@9.26.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-path-alias@2.1.0(eslint@9.26.0): + eslint-plugin-path-alias@2.1.0(eslint@9.27.0): dependencies: - eslint: 9.26.0 + eslint: 9.27.0 find-pkg: 2.0.0 get-tsconfig: 4.10.0 nanomatch: 1.2.13 transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.4.0(eslint@9.26.0)(prettier@3.5.3): + eslint-plugin-prettier@5.4.0(eslint@9.27.0)(prettier@3.5.3): dependencies: - eslint: 9.26.0 + eslint: 9.27.0 prettier: 3.5.3 prettier-linter-helpers: 1.0.0 synckit: 0.11.4 - eslint-plugin-simple-header@1.2.2(eslint@9.26.0): + eslint-plugin-simple-header@1.2.2(eslint@9.27.0): dependencies: - eslint: 9.26.0 + eslint: 9.27.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.26.0): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.27.0): dependencies: - eslint: 9.26.0 + eslint: 9.27.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0): dependencies: - eslint: 9.26.0 + eslint: 9.27.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) eslint-scope@8.3.0: dependencies: @@ -4717,20 +4464,19 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.26.0: + eslint@9.27.0: dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.2 - '@eslint/core': 0.13.0 + '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.26.0 - '@eslint/plugin-kit': 0.2.8 + '@eslint/js': 9.27.0 + '@eslint/plugin-kit': 0.3.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@modelcontextprotocol/sdk': 1.11.2 '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -4755,7 +4501,6 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - zod: 3.24.4 transitivePeerDependencies: - supports-color @@ -4777,56 +4522,12 @@ snapshots: esutils@2.0.3: {} - etag@1.8.1: {} - - eventsource-parser@3.0.1: {} - - eventsource@3.0.7: - dependencies: - eventsource-parser: 3.0.1 - expand-tilde@2.0.2: dependencies: homedir-polyfill: 1.0.3 exponential-backoff@3.1.2: {} - express-rate-limit@7.5.0(express@5.1.0): - dependencies: - express: 5.1.0 - - express@5.1.0: - dependencies: - accepts: 2.0.0 - body-parser: 2.2.0 - content-disposition: 1.0.0 - content-type: 1.0.5 - cookie: 0.7.2 - cookie-signature: 1.2.2 - debug: 4.4.1 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 2.1.0 - fresh: 2.0.0 - http-errors: 2.0.0 - merge-descriptors: 2.0.0 - mime-types: 3.0.1 - on-finished: 2.4.1 - once: 1.4.0 - parseurl: 1.3.3 - proxy-addr: 2.0.7 - qs: 6.14.0 - range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.0 - serve-static: 2.2.0 - statuses: 2.0.1 - type-is: 2.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -4885,17 +4586,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@2.1.0: - dependencies: - debug: 4.4.1 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - find-file-up@2.0.1: dependencies: resolve-dir: 1.0.1 @@ -4939,14 +4629,10 @@ snapshots: es-set-tostringtag: 2.1.0 mime-types: 2.1.35 - forwarded@0.2.0: {} - fragment-cache@0.2.1: dependencies: map-cache: 0.2.2 - fresh@2.0.0: {} - fs-constants@1.0.0: {} fs-extra@10.1.0: @@ -5181,19 +4867,11 @@ snapshots: http-cache-semantics@4.2.0: {} - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -5212,7 +4890,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -5274,8 +4952,6 @@ snapshots: jsbn: 1.1.0 sprintf-js: 1.1.3 - ipaddr.js@1.9.1: {} - is-accessor-descriptor@1.0.1: dependencies: hasown: 2.0.2 @@ -5386,8 +5062,6 @@ snapshots: dependencies: isobject: 3.0.1 - is-promise@4.0.0: {} - is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -5588,15 +5262,11 @@ snapshots: math-intrinsics@1.1.0: {} - media-typer@1.1.0: {} - memory-stream@1.0.0: dependencies: readable-stream: 3.6.2 optional: true - merge-descriptors@2.0.0: {} - merge2@1.4.1: {} micromatch@4.0.8: @@ -5606,16 +5276,10 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.54.0: {} - mime-types@2.1.35: dependencies: mime-db: 1.52.0 - mime-types@3.0.1: - dependencies: - mime-db: 1.54.0 - mime@2.6.0: {} mimic-fn@2.1.0: {} @@ -5712,8 +5376,6 @@ snapshots: negotiator@0.6.4: {} - negotiator@1.0.0: {} - node-abi@3.74.0: dependencies: semver: 7.7.1 @@ -5767,8 +5429,6 @@ snapshots: gauge: 4.0.4 set-blocking: 2.0.0 - object-assign@4.1.1: {} - object-copy@0.1.0: dependencies: copy-descriptor: 0.1.1 @@ -5816,10 +5476,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -5877,8 +5533,6 @@ snapshots: parse-passwd@1.0.0: {} - parseurl@1.3.3: {} - pascalcase@0.1.1: {} path-exists@4.0.0: {} @@ -5894,8 +5548,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@8.2.0: {} - pe-library@0.4.1: {} pend@1.2.0: {} @@ -5904,8 +5556,6 @@ snapshots: picomatch@4.0.2: {} - pkce-challenge@5.0.0: {} - pkg-prebuilds@0.2.1: dependencies: yargs: 17.7.2 @@ -5940,11 +5590,6 @@ snapshots: err-code: 2.0.3 retry: 0.12.0 - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - proxy-from-env@1.1.0: optional: true @@ -5955,23 +5600,10 @@ snapshots: punycode@2.3.1: {} - qs@6.14.0: - dependencies: - side-channel: 1.1.0 - queue-microtask@1.2.3: {} quick-lru@5.1.1: {} - range-parser@1.2.1: {} - - raw-body@3.0.0: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.6.3 - unpipe: 1.0.0 - rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -6085,16 +5717,6 @@ snapshots: sprintf-js: 1.1.3 optional: true - router@2.2.0: - dependencies: - debug: 4.4.1 - depd: 2.0.0 - is-promise: 4.0.0 - parseurl: 1.3.3 - path-to-regexp: 8.2.0 - transitivePeerDependencies: - - supports-color - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -6145,36 +5767,11 @@ snapshots: semver@7.7.2: {} - send@1.2.0: - dependencies: - debug: 4.4.1 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 2.0.0 - http-errors: 2.0.0 - mime-types: 3.0.1 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - serialize-error@7.0.1: dependencies: type-fest: 0.13.1 optional: true - serve-static@2.2.0: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 1.2.0 - transitivePeerDependencies: - - supports-color - set-blocking@2.0.0: {} set-function-length@1.2.2: @@ -6206,8 +5803,6 @@ snapshots: is-plain-object: 2.0.4 split-string: 3.1.0 - setprototypeof@1.2.0: {} - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -6275,7 +5870,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.0 socks: 2.8.4 transitivePeerDependencies: - supports-color @@ -6316,7 +5911,7 @@ snapshots: standalone-electron-types@34.2.0: dependencies: - '@types/node': 22.15.17 + '@types/node': 22.15.18 stat-mode@1.0.0: {} @@ -6325,8 +5920,6 @@ snapshots: define-property: 0.2.5 object-copy: 0.1.0 - statuses@2.0.1: {} - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -6451,8 +6044,6 @@ snapshots: regex-not: 1.0.2 safe-regex: 1.1.0 - toidentifier@1.0.1: {} - truncate-utf8-bytes@1.0.2: dependencies: utf8-byte-length: 1.0.5 @@ -6486,12 +6077,6 @@ snapshots: type-fest@4.41.0: {} - type-is@2.0.1: - dependencies: - content-type: 1.0.5 - media-typer: 1.1.0 - mime-types: 3.0.1 - typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -6525,12 +6110,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.32.1(eslint@9.26.0)(typescript@5.8.3): + typescript-eslint@8.32.1(eslint@9.27.0)(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.32.1(eslint@9.26.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0)(typescript@5.8.3) - eslint: 9.26.0 + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0)(typescript@5.8.3))(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0)(typescript@5.8.3) + eslint: 9.27.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -6565,8 +6150,6 @@ snapshots: universalify@2.0.1: {} - unpipe@1.0.0: {} - unset-value@1.0.0: dependencies: has-value: 0.3.1 @@ -6587,8 +6170,6 @@ snapshots: util-deprecate@1.0.2: {} - vary@1.1.2: {} - verror@1.10.1: dependencies: assert-plus: 1.0.0 @@ -6707,9 +6288,3 @@ snapshots: archiver-utils: 3.0.4 compress-commons: 4.1.2 readable-stream: 3.6.2 - - zod-to-json-schema@3.24.5(zod@3.24.4): - dependencies: - zod: 3.24.4 - - zod@3.24.4: {} diff --git a/scripts/build/build.mts b/scripts/build/build.mts index 636dea0..2aa98fc 100644 --- a/scripts/build/build.mts +++ b/scripts/build/build.mts @@ -8,6 +8,7 @@ import { BuildContext, BuildOptions, context } from "esbuild"; import { copyFile } from "fs/promises"; import vencordDep from "./vencordDep.mjs"; +import { includeDirPlugin } from "./includeDirPlugin.mts"; const isDev = process.argv.includes("--dev"); @@ -78,7 +79,7 @@ await Promise.all([ jsxFactory: "VencordCreateElement", jsxFragment: "VencordFragment", external: ["@vencord/types/*"], - plugins: [vencordDep], + plugins: [vencordDep, includeDirPlugin("patches", "src/renderer/patches")], footer: { js: "//# sourceURL=VCDRenderer" } }) ]); diff --git a/scripts/build/includeDirPlugin.mts b/scripts/build/includeDirPlugin.mts new file mode 100644 index 0000000..83bea4c --- /dev/null +++ b/scripts/build/includeDirPlugin.mts @@ -0,0 +1,25 @@ +import { Plugin } from "esbuild"; +import { readdir } from "fs/promises"; + +const makeImportAllCode = (files: string[]) => + files.map(f => `require("./${f.replace(/\.[cm]?[tj]sx?$/, "")}")`).join("\n"); + +const makeImportDirRecursiveCode = (dir: string) => readdir(dir).then(files => makeImportAllCode(files)); + +export function includeDirPlugin(namespace: string, path: string): Plugin { + return { + name: `include-dir-plugin:${namespace}`, + setup(build) { + const filter = new RegExp(`^__${namespace}__$`); + + build.onResolve({ filter }, args => ({ path: args.path, namespace })); + + build.onLoad({ filter, namespace }, async args => { + return { + contents: await makeImportDirRecursiveCode(path), + resolveDir: path + }; + }); + } + }; +} diff --git a/src/main/autoStart.ts b/src/main/autoStart.ts index 958dbb9..6569473 100644 --- a/src/main/autoStart.ts +++ b/src/main/autoStart.ts @@ -7,6 +7,7 @@ import { app } from "electron"; import { existsSync, mkdirSync, renameSync, rmSync, writeFileSync } from "fs"; import { join } from "path"; +import { stripIndent } from "shared/utils/text"; interface AutoStart { isEnabled(): boolean; @@ -31,15 +32,15 @@ function makeAutoStartLinux(): AutoStart { return { isEnabled: () => existsSync(file), enable() { - const desktopFile = ` -[Desktop Entry] -Type=Application -Name=Vesktop -Comment=Vesktop autostart script -Exec=${commandLine} -StartupNotify=false -Terminal=false -`.trim(); + const desktopFile = stripIndent` + [Desktop Entry] + Type=Application + Name=Vesktop + Comment=Vesktop autostart script + Exec=${commandLine} + StartupNotify=false + Terminal=false + `; mkdirSync(dir, { recursive: true }); writeFileSync(file, desktopFile); diff --git a/src/main/constants.ts b/src/main/constants.ts index 01bdd80..dcfc8fc 100644 --- a/src/main/constants.ts +++ b/src/main/constants.ts @@ -5,7 +5,7 @@ */ import { app } from "electron"; -import { existsSync, mkdirSync, readdirSync, renameSync, rmdirSync } from "fs"; +import { existsSync, mkdirSync } from "fs"; import { dirname, join } from "path"; const vesktopDir = dirname(process.execPath); @@ -15,28 +15,11 @@ export const PORTABLE = !process.execPath.toLowerCase().endsWith("electron.exe") && !existsSync(join(vesktopDir, "Uninstall Vesktop.exe")); -const LEGACY_DATA_DIR = join(app.getPath("appData"), "VencordDesktop", "VencordDesktop"); export const DATA_DIR = process.env.VENCORD_USER_DATA_DIR || (PORTABLE ? join(vesktopDir, "Data") : join(app.getPath("userData"))); mkdirSync(DATA_DIR, { recursive: true }); -// TODO: remove eventually -if (existsSync(LEGACY_DATA_DIR)) { - try { - console.warn("Detected legacy settings dir", LEGACY_DATA_DIR + ".", "migrating to", DATA_DIR); - for (const file of readdirSync(LEGACY_DATA_DIR)) { - renameSync(join(LEGACY_DATA_DIR, file), join(DATA_DIR, file)); - } - rmdirSync(LEGACY_DATA_DIR); - renameSync( - join(app.getPath("appData"), "VencordDesktop", "IndexedDB"), - join(DATA_DIR, "sessionData", "IndexedDB") - ); - } catch (e) { - console.error("Migration failed", e); - } -} const SESSION_DATA_DIR = join(DATA_DIR, "sessionData"); app.setPath("sessionData", SESSION_DATA_DIR); diff --git a/src/main/index.ts b/src/main/index.ts index 78499bb..5a55f40 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -17,9 +17,7 @@ import { registerScreenShareHandler } from "./screenShare"; import { Settings, State } from "./settings"; import { isDeckGameMode } from "./utils/steamOS"; -if (IS_DEV) { - require("source-map-support").install(); -} else { +if (!IS_DEV) { autoUpdater.checkForUpdatesAndNotify(); } @@ -68,9 +66,7 @@ function init() { app.commandLine.appendSwitch("autoplay-policy", "no-user-gesture-required"); // WinRetrieveSuggestionsOnlyOnDemand: Work around electron 13 bug w/ async spellchecking on Windows. - // HardwareMediaKeyHandling,MediaSessionService: Prevent Discord from registering as a media service. - // - // WidgetLayering (Vencord Added): Fix DevTools context menus https://github.com/electron/electron/issues/38790 + // HardwareMediaKeyHandling, MediaSessionService: Prevent Discord from registering as a media service. disabledFeatures.add("WinRetrieveSuggestionsOnlyOnDemand"); disabledFeatures.add("HardwareMediaKeyHandling"); disabledFeatures.add("MediaSessionService"); diff --git a/src/main/screenShare.ts b/src/main/screenShare.ts index 5ba93a8..a96b1ce 100644 --- a/src/main/screenShare.ts +++ b/src/main/screenShare.ts @@ -6,8 +6,9 @@ import { desktopCapturer, session, Streams } from "electron"; import type { StreamPick } from "renderer/components/ScreenSharePicker"; -import { IpcEvents } from "shared/IpcEvents"; +import { IpcCommands, IpcEvents } from "shared/IpcEvents"; +import { sendRendererCommand } from "./ipcCommands"; import { handle } from "./utils/ipcWrappers"; const isWayland = @@ -49,11 +50,11 @@ export function registerScreenShareHandler() { if (isWayland) { const video = data[0]; if (video) { - const stream = await request - .frame!.executeJavaScript( - `Vesktop.Components.ScreenShare.openScreenSharePicker(${JSON.stringify([video])},true)` - ) - .catch(() => null); + const stream = await sendRendererCommand(IpcCommands.SCREEN_SHARE_PICKER, { + screens: [video], + skipPicker: true + }).catch(() => null); + if (stream === null) return callback({}); } @@ -61,13 +62,13 @@ export function registerScreenShareHandler() { return; } - const choice = await request - .frame!.executeJavaScript(`Vesktop.Components.ScreenShare.openScreenSharePicker(${JSON.stringify(data)})`) - .then(e => e as StreamPick) - .catch(e => { - console.error("Error during screenshare picker", e); - return null; - }); + const choice = await sendRendererCommand(IpcCommands.SCREEN_SHARE_PICKER, { + screens: data, + skipPicker: false + }).catch(e => { + console.error("Error during screenshare picker", e); + return null; + }); if (!choice) return callback({}); diff --git a/src/main/settings.ts b/src/main/settings.ts index 128ea54..ce559fb 100644 --- a/src/main/settings.ts +++ b/src/main/settings.ts @@ -4,7 +4,7 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs"; +import { mkdirSync, readFileSync, writeFileSync } from "fs"; import { dirname, join } from "path"; import type { Settings as TSettings, State as TState } from "shared/settings"; import { SettingsStore } from "shared/utils/SettingsStore"; @@ -35,18 +35,5 @@ function loadSettings(file: string, name: string) { } export const Settings = loadSettings(SETTINGS_FILE, "Vesktop settings"); - export const VencordSettings = loadSettings(VENCORD_SETTINGS_FILE, "Vencord settings"); - -if (Object.hasOwn(Settings.plain, "firstLaunch") && !existsSync(STATE_FILE)) { - console.warn("legacy state in settings.json detected. migrating to state.json"); - const state = {} as TState; - for (const prop of ["firstLaunch", "maximized", "minimized", "steamOSLayoutVersion", "windowBounds"] as const) { - state[prop] = Settings.plain[prop]; - delete Settings.plain[prop]; - } - Settings.markAsChanged(); - writeFileSync(STATE_FILE, JSON.stringify(state, null, 4)); -} - export const State = loadSettings(STATE_FILE, "Vesktop state"); diff --git a/src/main/utils/ipcWrappers.ts b/src/main/utils/ipcWrappers.ts index 7e8da42..27a35fd 100644 --- a/src/main/utils/ipcWrappers.ts +++ b/src/main/utils/ipcWrappers.ts @@ -8,25 +8,33 @@ import { ipcMain, IpcMainEvent, IpcMainInvokeEvent, WebFrameMain } from "electro import { DISCORD_HOSTNAMES } from "main/constants"; import { IpcEvents } from "shared/IpcEvents"; -export function validateSender(frame: WebFrameMain | null) { - if (!frame) throw new Error("ipc: No sender frame"); +export function validateSender(frame: WebFrameMain | null, event: string) { + if (!frame) throw new Error(`ipc[${event}]: No sender frame`); + if (!frame.url) return; + + try { + var { hostname, protocol } = new URL(frame.url); + } catch (e) { + throw new Error(`ipc[${event}]: Invalid URL ${frame.url}`); + } - const { hostname, protocol } = new URL(frame.url); if (protocol === "file:") return; - if (!DISCORD_HOSTNAMES.includes(hostname)) throw new Error("ipc: Disallowed host " + hostname); + if (!DISCORD_HOSTNAMES.includes(hostname)) { + throw new Error(`ipc[${event}]: Disallowed hostname ${hostname}`); + } } export function handleSync(event: IpcEvents, cb: (e: IpcMainEvent, ...args: any[]) => any) { ipcMain.on(event, (e, ...args) => { - validateSender(e.senderFrame); + validateSender(e.senderFrame, event); e.returnValue = cb(e, ...args); }); } export function handle(event: IpcEvents, cb: (e: IpcMainInvokeEvent, ...args: any[]) => any) { ipcMain.handle(event, (e, ...args) => { - validateSender(e.senderFrame); + validateSender(e.senderFrame, event); return cb(e, ...args); }); } diff --git a/src/main/utils/makeLinksOpenExternally.ts b/src/main/utils/makeLinksOpenExternally.ts index 5d6cc75..4e9d549 100644 --- a/src/main/utils/makeLinksOpenExternally.ts +++ b/src/main/utils/makeLinksOpenExternally.ts @@ -50,7 +50,7 @@ export function handleExternalUrl(url: string, protocol?: string): { action: "de export function makeLinksOpenExternally(win: BrowserWindow) { win.webContents.setWindowOpenHandler(({ url, frameName, features }) => { try { - var { protocol, hostname, pathname } = new URL(url); + var { protocol, hostname, pathname, searchParams } = new URL(url); } catch { return { action: "deny" }; } @@ -59,8 +59,10 @@ export function makeLinksOpenExternally(win: BrowserWindow) { return createOrFocusPopup(frameName, features); } - if (url === "about:blank" || (frameName === "authorize" && DISCORD_HOSTNAMES.includes(hostname))) - return { action: "allow" }; + if (url === "about:blank") return { action: "allow" }; + + // Drop the static temp page Discord web loads for the connections popout + if (frameName === "authorize" && searchParams.get("loading") === "true") return { action: "deny" }; return handleExternalUrl(url, protocol); }); diff --git a/src/module.d.ts b/src/module.d.ts new file mode 100644 index 0000000..61d1df0 --- /dev/null +++ b/src/module.d.ts @@ -0,0 +1,10 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2025 Vendicated and Vesktop contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +declare module "__patches__" { + const never: never; + export default never; +} diff --git a/src/preload/splash.ts b/src/preload/splash.ts index dd44974..11c41e2 100644 --- a/src/preload/splash.ts +++ b/src/preload/splash.ts @@ -4,7 +4,7 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -const { contextBridge, ipcRenderer } = require("electron/renderer"); +import { contextBridge, ipcRenderer } from "electron"; contextBridge.exposeInMainWorld("VesktopSplashNative", { onUpdateMessage(callback: (message: string) => void) { diff --git a/src/renderer/common.ts b/src/renderer/common.ts new file mode 100644 index 0000000..bd61bde --- /dev/null +++ b/src/renderer/common.ts @@ -0,0 +1,9 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2025 Vendicated and Vesktop contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { findStoreLazy } from "@vencord/types/webpack"; + +export const MediaEngineStore = findStoreLazy("MediaEngineStore"); diff --git a/src/renderer/components/ScreenSharePicker.tsx b/src/renderer/components/ScreenSharePicker.tsx index dbecfc6..009b78c 100644 --- a/src/renderer/components/ScreenSharePicker.tsx +++ b/src/renderer/components/ScreenSharePicker.tsx @@ -7,7 +7,7 @@ import "./screenSharePicker.css"; import { closeModal, Logger, Modals, ModalSize, openModal, useAwaiter } from "@vencord/types/utils"; -import { findStoreLazy, onceReady } from "@vencord/types/webpack"; +import { onceReady } from "@vencord/types/webpack"; import { Button, Card, @@ -21,6 +21,7 @@ import { } from "@vencord/types/webpack/common"; import { Node } from "@vencord/venmic"; import type { Dispatch, SetStateAction } from "react"; +import { MediaEngineStore } from "renderer/common"; import { addPatch } from "renderer/patches/shared"; import { State, useSettings, useVesktopState } from "renderer/settings"; import { classNameFactory, isLinux, isWindows } from "renderer/utils"; @@ -30,8 +31,6 @@ const StreamFps = ["15", "30", "60"] as const; const cl = classNameFactory("vcd-screen-picker-"); -const MediaEngineStore = findStoreLazy("MediaEngineStore"); - export type StreamResolution = (typeof StreamResolutions)[number]; export type StreamFps = (typeof StreamFps)[number]; diff --git a/src/renderer/fixes.css b/src/renderer/fixes.css deleted file mode 100644 index 9411321..0000000 --- a/src/renderer/fixes.css +++ /dev/null @@ -1,4 +0,0 @@ -/* Workaround for making things in the draggable area clickable again on macOS */ -.platform-osx [class*=topic_], .platform-osx [class*=notice_] button { - -webkit-app-region: no-drag; -} diff --git a/src/renderer/fixes.ts b/src/renderer/fixes.ts index c9650b5..64b0a4b 100644 --- a/src/renderer/fixes.ts +++ b/src/renderer/fixes.ts @@ -4,8 +4,6 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -import "./fixes.css"; - import { localStorage } from "./utils"; // Make clicking Notifications focus the window diff --git a/src/renderer/index.ts b/src/renderer/index.ts index 4e4a3ed..aba68c1 100644 --- a/src/renderer/index.ts +++ b/src/renderer/index.ts @@ -7,9 +7,9 @@ import "./themedSplash"; import "./ipcCommands"; import "./appBadge"; -import "./patches"; import "./fixes"; import "./arrpc"; +import "__patches__"; // auto generated by the build script export * as Components from "./components"; diff --git a/src/renderer/ipcCommands.ts b/src/renderer/ipcCommands.ts index 1c41769..be434c5 100644 --- a/src/renderer/ipcCommands.ts +++ b/src/renderer/ipcCommands.ts @@ -7,6 +7,8 @@ import { SettingsRouter } from "@vencord/types/webpack/common"; import { IpcCommands } from "shared/IpcEvents"; +import { openScreenSharePicker } from "./components/ScreenSharePicker"; + type IpcCommandHandler = (data: any) => any; const handlers = new Map(); @@ -46,4 +48,7 @@ export function offIpcCommand(channel: string) { onIpcCommand(IpcCommands.NAVIGATE_SETTINGS, () => { SettingsRouter.open("My Account"); }); + onIpcCommand(IpcCommands.GET_LANGUAGES, () => navigator.languages); + +onIpcCommand(IpcCommands.SCREEN_SHARE_PICKER, data => openScreenSharePicker(data.screens, data.skipPicker)); diff --git a/src/renderer/patches/fixAutoGainToggle.ts b/src/renderer/patches/fixAutoGainToggle.ts new file mode 100644 index 0000000..e23c737 --- /dev/null +++ b/src/renderer/patches/fixAutoGainToggle.ts @@ -0,0 +1,51 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2025 Vendicated and Vesktop contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { Logger } from "@vencord/types/utils"; +import { MediaEngineStore } from "renderer/common"; + +const logger = new Logger("FixAutoGain"); + +function fixTrackConstraints(constraint: MediaTrackConstraints) { + const target = constraint.advanced?.find(opt => Object.hasOwn(opt, "autoGainControl")) ?? constraint; + + target.autoGainControl = MediaEngineStore.getAutomaticGainControl(); +} + +function fixStreamConstraints(constraints: MediaStreamConstraints | undefined) { + if (!constraints?.audio) return; + + if (typeof constraints.audio !== "object") { + constraints.audio = {}; + } + + fixTrackConstraints(constraints.audio); +} + +const originalGetUserMedia = navigator.mediaDevices.getUserMedia; +navigator.mediaDevices.getUserMedia = function (constraints) { + try { + fixStreamConstraints(constraints); + logger.debug("Fixed getUserMedia constraints", constraints); + } catch (e) { + logger.error("Failed to fix getUserMedia constraints", e); + } + + return originalGetUserMedia.call(this, constraints); +}; + +const originalApplyConstraints = MediaStreamTrack.prototype.applyConstraints; +MediaStreamTrack.prototype.applyConstraints = function (constraints) { + if (constraints) { + try { + fixTrackConstraints(constraints); + logger.debug("Fixed applyConstraints constraints", constraints); + } catch (e) { + logger.error("Failed to fix applyConstraints constraints", e); + } + } + return originalApplyConstraints.call(this, constraints); +}; diff --git a/src/renderer/patches/hideSwitchDevice.tsx b/src/renderer/patches/hideSwitchDevice.tsx index f0a7597..773f7b0 100644 --- a/src/renderer/patches/hideSwitchDevice.tsx +++ b/src/renderer/patches/hideSwitchDevice.tsx @@ -13,12 +13,12 @@ addPatch({ replacement: { // eslint-disable-next-line no-useless-escape match: /(\i)\.\i\.getState\(\).neverShowModal/, - replace: "$& || $self.shouldIgnore($1)" + replace: "$& || $self.shouldIgnoreDevice($1)" } } ], - shouldIgnore(state: any) { + shouldIgnoreDevice(state: any) { return Object.keys(state?.default?.lastDeviceConnected ?? {})?.[0] === "vencord-screen-share"; } }); diff --git a/src/renderer/patches/index.ts b/src/renderer/patches/index.ts deleted file mode 100644 index 0bb3aeb..0000000 --- a/src/renderer/patches/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Vesktop, a desktop app aiming to give you a snappier Discord Experience - * Copyright (c) 2023 Vendicated and Vencord contributors - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -// TODO: Possibly auto generate glob if we have more patches in the future -import "./enableNotificationsByDefault"; -import "./platformClass"; -import "./allowDevToolsKeybind"; -import "./hideSwitchDevice"; -import "./hideVenmicInput"; -import "./screenShareFixes"; -import "./spellCheck"; -import "./windowsTitleBar"; -import "./streamerMode"; -import "./windowMethods"; -import "./hideDownloadAppsButton"; diff --git a/src/renderer/patches/screenShareFixes.ts b/src/renderer/patches/screenShareFixes.ts index 5a78bbd..aab817b 100644 --- a/src/renderer/patches/screenShareFixes.ts +++ b/src/renderer/patches/screenShareFixes.ts @@ -59,10 +59,15 @@ if (isLinux) { }, autoGainControl: false, echoCancellation: false, - noiseSuppression: false + noiseSuppression: false, + channelCount: 2, + sampleRate: 48000, + sampleSize: 16 } }); - audio.getAudioTracks().forEach(t => stream.addTrack(t)); + + stream.getAudioTracks().forEach(t => stream.removeTrack(t)); + stream.addTrack(audio.getAudioTracks()[0]); } return stream; diff --git a/src/renderer/patches/shared.ts b/src/renderer/patches/shared.ts index 90f18dc..07b77a6 100644 --- a/src/renderer/patches/shared.ts +++ b/src/renderer/patches/shared.ts @@ -17,7 +17,6 @@ export function addPatch

(p: P) { const { patches, ...globals } = p; for (const patch of patches) { - // TODO: Update types Vencord.Plugins.addPatch(patch, "Vesktop", "VesktopPatchGlobals"); } diff --git a/src/shared/IpcEvents.ts b/src/shared/IpcEvents.ts index dd05e3b..e2da5db 100644 --- a/src/shared/IpcEvents.ts +++ b/src/shared/IpcEvents.ts @@ -62,6 +62,10 @@ export const enum IpcCommands { RPC_ACTIVITY = "rpc:activity", RPC_INVITE = "rpc:invite", RPC_DEEP_LINK = "rpc:link", + NAVIGATE_SETTINGS = "navigate:settings", - GET_LANGUAGES = "navigator.languages" + + GET_LANGUAGES = "navigator.languages", + + SCREEN_SHARE_PICKER = "screenshare:picker" } diff --git a/src/shared/utils/text.ts b/src/shared/utils/text.ts new file mode 100644 index 0000000..554ef01 --- /dev/null +++ b/src/shared/utils/text.ts @@ -0,0 +1,15 @@ +/* + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2025 Vendicated and Vesktop contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export function stripIndent(strings: TemplateStringsArray, ...values: any[]) { + const string = String.raw({ raw: strings }, ...values); + + const match = string.match(/^[ \t]*(?=\S)/gm); + if (!match) return string.trim(); + + const minIndent = match.reduce((r, a) => Math.min(r, a.length), Infinity); + return string.replace(new RegExp(`^[ \\t]{${minIndent}}`, "gm"), "").trim(); +}