mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 12:03:31 +01:00
Use libsodium.js if available (#1390)
* Use libsodium.js if available
* Style consistency
* Added peer dep and update README
* Link should point to npmjs 🤔
This commit is contained in:
@@ -41,7 +41,9 @@ For production bots, using node-opus should be considered a necessity, especiall
|
|||||||
### Optional packages
|
### Optional packages
|
||||||
- [bufferutil](https://www.npmjs.com/package/bufferutil) to greatly speed up the WebSocket when *not* using uws (`npm install bufferutil --save`)
|
- [bufferutil](https://www.npmjs.com/package/bufferutil) to greatly speed up the WebSocket when *not* using uws (`npm install bufferutil --save`)
|
||||||
- [erlpack](https://github.com/hammerandchisel/erlpack) for significantly faster WebSocket data (de)serialisation (`npm install hammerandchisel/erlpack --save`)
|
- [erlpack](https://github.com/hammerandchisel/erlpack) for significantly faster WebSocket data (de)serialisation (`npm install hammerandchisel/erlpack --save`)
|
||||||
- [sodium](https://www.npmjs.com/package/sodium) for faster voice packet encryption/decryption (`npm install sodium --save`)
|
- for faster voice packet encryption/decryption you can install one of the following:
|
||||||
|
- [sodium](https://www.npmjs.com/package/sodium) (`npm install sodium --save`)
|
||||||
|
- [libsodium.js](https://www.npmjs.com/package/libsodium-wrappers) (`npm install libsodium-wrappers --save`)
|
||||||
- [uws](https://www.npmjs.com/package/uws) for a much faster WebSocket connection (`npm install uws --save`)
|
- [uws](https://www.npmjs.com/package/uws) for a much faster WebSocket connection (`npm install uws --save`)
|
||||||
**Note:** This package does not handle disconnects entirely correctly, which causes automatic reconnection to Discord to not function.
|
**Note:** This package does not handle disconnects entirely correctly, which causes automatic reconnection to Discord to not function.
|
||||||
If you use this package, it may be wise to destroy + recreate the client entirely or restart the process upon disconnect.
|
If you use this package, it may be wise to destroy + recreate the client entirely or restart the process upon disconnect.
|
||||||
|
|||||||
@@ -45,7 +45,8 @@
|
|||||||
"node-opus": "^0.2.5",
|
"node-opus": "^0.2.5",
|
||||||
"opusscript": "^0.0.3",
|
"opusscript": "^0.0.3",
|
||||||
"sodium": "^2.0.1",
|
"sodium": "^2.0.1",
|
||||||
"uws": "^0.14.1"
|
"uws": "^0.14.1",
|
||||||
|
"libsodium-wrappers": "^0.5.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"discord.js-docgen": "hydrabolt/discord.js-docgen",
|
"discord.js-docgen": "hydrabolt/discord.js-docgen",
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
try {
|
const libs = {
|
||||||
const sodium = require('sodium');
|
sodium: sodium => ({
|
||||||
module.exports = {
|
|
||||||
open: sodium.api.crypto_secretbox_open_easy,
|
open: sodium.api.crypto_secretbox_open_easy,
|
||||||
close: sodium.api.crypto_secretbox_easy,
|
close: sodium.api.crypto_secretbox_easy,
|
||||||
};
|
}),
|
||||||
} catch (err) {
|
'libsodium-wrappers': sodium => ({
|
||||||
const tweetnacl = require('tweetnacl');
|
open: sodium.crypto_secretbox_open_easy,
|
||||||
module.exports = {
|
close: sodium.crypto_secretbox_easy,
|
||||||
|
}),
|
||||||
|
tweetnacl: tweetnacl => ({
|
||||||
open: tweetnacl.secretbox.open,
|
open: tweetnacl.secretbox.open,
|
||||||
close: tweetnacl.secretbox,
|
close: tweetnacl.secretbox,
|
||||||
};
|
}),
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const libName of Object.keys(libs)) {
|
||||||
|
try {
|
||||||
|
const lib = require(libName);
|
||||||
|
module.exports = libs[libName](lib);
|
||||||
|
break;
|
||||||
|
} catch (err) {} // eslint-disable-line no-empty
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user