Package Exports
- @snazzah/davey
- @snazzah/davey/browser.js
- @snazzah/davey/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@snazzah/davey) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Davey!
A Discord Audio & Video End-to-End Encryption (DAVE) Protocol implementation using OpenMLS built with NAPI-RS.
Proper documentation does not exist yet, but you can read the usage document and review the type definitions for available methods.
import { DAVESession, ProposalsOperationType, MediaType, Codec } from '@snazzah/davey';
const session = new DAVESession(
1, // dave version
'158049329150427136', // user id
'927310423890473011', // channel id
);
// Set the external sender of the session from opcode 25
session.setExternalSender(externalSenderBuffer);
// Get the key package buffer to send to Discord
session.getSerializedKeyPackage();
// Process a proposals
session.processProposals(
ProposalsOperationType.APPEND, // the type of proposals operation
proposalsBuffer, // proposals or proposal refs buffer
recognizedUserIds, // an array of user IDs in the session, optional but recommended
);
// Process a commit
session.processCommit(commitBuffer);
// Process a welcome
session.processWelcome(welcomeBuffer);
// The current voice privacy code of the session, updated after a commit/welcome
session.voicePrivacyCode; // a 30 digit string or an empty string for not started sessions
// Encrypt/decrypt voice packets
if (session.ready) {
// Encrypt packets with a specified media type and codec, use this before transport encryption
session.encrypt(MediaType.AUDIO, Codec.OPUS, packet);
// Really only opus is supported right now so just use the shorthand method
session.encryptOpus(packet);
// Decrypt a packet from a user, use this after transport decryption
session.decrypt(userId, MediaType.AUDIO, incomingPacket);
}