@discordjs/voice 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var ze=Object.create;var M=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var et=(i,e,t)=>e in i?M(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var re=i=>M(i,"__esModule",{value:!0});var tt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),it=(i,e)=>{re(i);for(var t in e)M(i,t,{get:e[t],enumerable:!0})},st=(i,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Xe(e))!Qe.call(i,s)&&s!=="default"&&M(i,s,{get:()=>e[s],enumerable:!(t=Ye(e,s))||t.enumerable});return i},h=i=>st(re(M(i!=null?ze(Ze(i)):{},"default",i&&i.__esModule&&"default"in i?{get:()=>i.default,enumerable:!0}:{value:i,enumerable:!0})),i);var r=(i,e,t)=>(et(i,typeof e!="symbol"?e+"":e,t),t);var Fe=tt((Li,Pt)=>{Pt.exports={name:"@discordjs/voice",version:"0.7.
|
|
1
|
+
var ze=Object.create;var M=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var et=(i,e,t)=>e in i?M(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var re=i=>M(i,"__esModule",{value:!0});var tt=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),it=(i,e)=>{re(i);for(var t in e)M(i,t,{get:e[t],enumerable:!0})},st=(i,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Xe(e))!Qe.call(i,s)&&s!=="default"&&M(i,s,{get:()=>e[s],enumerable:!(t=Ye(e,s))||t.enumerable});return i},h=i=>st(re(M(i!=null?ze(Ze(i)):{},"default",i&&i.__esModule&&"default"in i?{get:()=>i.default,enumerable:!0}:{value:i,enumerable:!0})),i);var r=(i,e,t)=>(et(i,typeof e!="symbol"?e+"":e,t),t);var Fe=tt((Li,Pt)=>{Pt.exports={name:"@discordjs/voice",version:"0.7.1",description:"Implementation of the Discord Voice API for Node.js",scripts:{pretest:"npm run build",test:"jest --pass-with-no-tests","test:ci":"jest --no-stack-trace --verbose --pass-with-no-tests",prebuild:"npm run lint",build:"tsup",lint:"eslint src --ext mjs,js,ts","lint:fix":"eslint src --ext mjs,js,ts --fix",format:"prettier --write **/*.{ts,js,json,yml,yaml}",prepare:"is-ci || husky install",docs:"typedoc --json docs/typedoc-out.json src/index.ts && node scripts/docs.mjs",prepublishOnly:"npm run lint && npm run test",release:"standard-version --preset angular"},main:"./dist/index.js",module:"./dist/index.mjs",typings:"./dist/index.d.ts",exports:{import:"./dist/index.mjs",require:"./dist/index.js"},directories:{lib:"src",test:"__tests__"},files:["dist"],author:"Amish Shah <amish@shah.gg>",license:"Apache-2.0",keywords:["discord","discord.js","audio","voice","streaming"],repository:{type:"git",url:"git+https://github.com/discordjs/voice.git"},bugs:{url:"https://github.com/discordjs/voice/issues"},homepage:"https://github.com/discordjs/voice",dependencies:{"@types/ws":"^8.2.0","discord-api-types":"^0.24.0","prism-media":"^1.3.2","tiny-typed-emitter":"^2.1.0",tslib:"^2.3.1",ws:"^8.2.3"},devDependencies:{"@babel/core":"^7.16.0","@babel/preset-env":"^7.16.0","@babel/preset-typescript":"^7.16.0","@commitlint/cli":"^13.2.1","@commitlint/config-angular":"^13.2.0","@discordjs/ts-docgen":"^0.3.2","@types/jest":"^27.0.2","@types/node":"^16.11.6","@typescript-eslint/eslint-plugin":"^5.2.0","@typescript-eslint/parser":"^5.2.0",eslint:"^8.1.0","eslint-config-marine":"^9.0.6","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0",husky:"^7.0.4","is-ci":"^3.0.1",jest:"^27.3.1","jest-websocket-mock":"^2.2.1","lint-staged":"^11.2.6","mock-socket":"^9.0.6",prettier:"^2.4.1","standard-version":"^9.3.2",tsup:"^5.5.0",typedoc:"^0.22.7",typescript:"^4.4.4"},engines:{node:">=16.0.0",npm:">=7.0.0"},publishConfig:{access:"public"}}});it(exports,{AudioPlayer:()=>H,AudioPlayerError:()=>N,AudioPlayerStatus:()=>d,AudioReceiveStream:()=>J,AudioResource:()=>j,EndBehaviorType:()=>I,NoSubscriberBehavior:()=>x,PlayerSubscription:()=>W,SSRCMap:()=>L,SpeakingMap:()=>T,StreamType:()=>p,VoiceConnection:()=>K,VoiceConnectionDisconnectReason:()=>y,VoiceConnectionStatus:()=>c,VoiceReceiver:()=>q,createAudioPlayer:()=>De,createAudioResource:()=>je,createDefaultAudioReceiveStreamOptions:()=>ie,demuxProbe:()=>xt,entersState:()=>wt,generateDependencyReport:()=>Ct,getGroups:()=>ce,getVoiceConnection:()=>B,getVoiceConnections:()=>G,joinVoiceChannel:()=>gt,validateDiscordOpusHead:()=>qe});var ae=h(require("discord-api-types/v9"));function R(i){return{op:ae.GatewayOpcodes.VoiceStateUpdate,d:{guild_id:i.guildId,channel_id:i.channelId,self_deaf:i.selfDeaf,self_mute:i.selfMute}}}var U=new Map;U.set("default",new Map);function ot(i){let e=U.get(i);if(e)return e;let t=new Map;return U.set(i,t),t}function ce(){return U}function G(i="default"){return U.get(i)}function B(i,e="default"){return G(e)?.get(i)}function de(i){return G(i.joinConfig.group)?.delete(i.joinConfig.guildId)}function ue(i){return ot(i.joinConfig.group).set(i.joinConfig.guildId,i)}var nt=20,Y,V=-1,w=[];function pe(){if(V===-1)return;V+=nt;let i=w.filter(e=>e.checkPlayable());i.forEach(e=>e._stepDispatch()),le(i)}function le(i){let e=i.shift();if(!e){V!==-1&&(Y=setTimeout(()=>pe(),V-Date.now()));return}e._stepPrepare(),setImmediate(()=>le(i))}function rt(i){return w.includes(i)}function fe(i){return rt(i)||(w.push(i),w.length===1&&(V=Date.now(),setImmediate(()=>pe()))),i}function he(i){let e=w.indexOf(i);e!==-1&&(w.splice(e,1),w.length===0&&(V=-1,typeof Y!="undefined"&&clearTimeout(Y)))}var v=h(require("discord-api-types/voice/v4"));var me=h(require("node:dgram")),ge=h(require("node:net")),ye=h(require("tiny-typed-emitter")),at=5e3,ct=12,dt=2**32-1,X=class extends ye.TypedEmitter{constructor(e,t=!1){super();r(this,"socket");r(this,"remote");r(this,"keepAlives");r(this,"keepAliveCounter",0);r(this,"keepAliveBuffer");r(this,"keepAliveInterval");r(this,"ping");r(this,"debug");this.socket=(0,me.createSocket)("udp4"),this.socket.on("error",s=>this.emit("error",s)),this.socket.on("message",s=>this.onMessage(s)),this.socket.on("close",()=>this.emit("close")),this.remote=e,this.keepAlives=[],this.keepAliveBuffer=Buffer.alloc(8),this.keepAliveInterval=setInterval(()=>this.keepAlive(),at),setImmediate(()=>this.keepAlive()),this.debug=t?s=>this.emit("debug",s):null}onMessage(e){if(e.length===8){let t=e.readUInt32LE(0),s=this.keepAlives.findIndex(({value:n})=>n===t);if(s===-1)return;this.ping=Date.now()-this.keepAlives[s].timestamp,this.keepAlives.splice(0,s)}this.emit("message",e)}keepAlive(){if(this.keepAlives.length>=ct){this.debug?.("UDP socket has not received enough responses from Discord - closing socket"),this.destroy();return}this.keepAliveBuffer.writeUInt32LE(this.keepAliveCounter,0),this.send(this.keepAliveBuffer),this.keepAlives.push({value:this.keepAliveCounter,timestamp:Date.now()}),this.keepAliveCounter++,this.keepAliveCounter>dt&&(this.keepAliveCounter=0)}send(e){return this.socket.send(e,this.remote.port,this.remote.ip)}destroy(){try{this.socket.close()}catch{}clearInterval(this.keepAliveInterval)}performIPDiscovery(e){return new Promise((t,s)=>{let n=u=>{try{if(u.readUInt16BE(0)!==2)return;let a=ut(u);this.socket.off("message",n),t(a)}catch{}};this.socket.on("message",n),this.socket.once("close",()=>s(new Error("Cannot perform IP discovery - socket closed")));let o=Buffer.alloc(74);o.writeUInt16BE(1,0),o.writeUInt16BE(70,2),o.writeUInt32BE(e,4),this.send(o)})}};function ut(i){let e=Buffer.from(i),t=e.slice(8,e.indexOf(0,8)).toString("utf-8");if(!(0,ge.isIPv4)(t))throw new Error("Malformed IP address");let s=e.readUInt16BE(e.length-2);return{ip:t,port:s}}var Z=h(require("discord-api-types/voice/v4")),be=h(require("ws")),Se=h(require("tiny-typed-emitter")),Q=class extends Se.TypedEmitter{constructor(e,t){super();r(this,"heartbeatInterval");r(this,"lastHeartbeatAck");r(this,"lastHeatbeatSend");r(this,"missedHeartbeats",0);r(this,"ping");r(this,"debug");r(this,"ws");this.ws=new be.default(e),this.ws.onmessage=s=>this.onMessage(s),this.ws.onopen=s=>this.emit("open",s),this.ws.onerror=s=>this.emit("error",s instanceof Error?s:s.error),this.ws.onclose=s=>this.emit("close",s),this.lastHeartbeatAck=0,this.lastHeatbeatSend=0,this.debug=t?s=>this.emit("debug",s):null}destroy(){try{this.debug?.("destroyed"),this.setHeartbeatInterval(-1),this.ws.close(1e3)}catch(e){let t=e;this.emit("error",t)}}onMessage(e){if(typeof e.data!="string")return;this.debug?.(`<< ${e.data}`);let t;try{t=JSON.parse(e.data)}catch(s){let n=s;this.emit("error",n);return}t.op===Z.VoiceOpcodes.HeartbeatAck&&(this.lastHeartbeatAck=Date.now(),this.missedHeartbeats=0,this.ping=this.lastHeartbeatAck-this.lastHeatbeatSend),this.emit("packet",t)}sendPacket(e){try{let t=JSON.stringify(e);return this.debug?.(`>> ${t}`),this.ws.send(t)}catch(t){let s=t;this.emit("error",s)}}sendHeartbeat(){this.lastHeatbeatSend=Date.now(),this.missedHeartbeats++;let e=this.lastHeatbeatSend;return this.sendPacket({op:Z.VoiceOpcodes.Heartbeat,d:e})}setHeartbeatInterval(e){typeof this.heartbeatInterval!="undefined"&&clearInterval(this.heartbeatInterval),e>0&&(this.heartbeatInterval=setInterval(()=>{this.lastHeatbeatSend!==0&&this.missedHeartbeats>=3&&(this.ws.close(),this.setHeartbeatInterval(-1)),this.sendHeartbeat()},e))}};var ke={sodium:i=>({open:i.api.crypto_secretbox_open_easy,close:i.api.crypto_secretbox_easy,random:(e,t)=>(t||(t=Buffer.allocUnsafe(e)),i.api.randombytes_buf(t),t)}),"libsodium-wrappers":i=>({open:i.crypto_secretbox_open_easy,close:i.crypto_secretbox_easy,random:e=>i.randombytes_buf(e)}),tweetnacl:i=>({open:i.secretbox.open,close:i.secretbox,random:e=>i.randomBytes(e)})},ee=()=>{throw new Error(`Cannot play audio as no valid encryption package is installed.
|
|
2
2
|
- Install sodium, libsodium-wrappers, or tweetnacl.
|
|
3
3
|
- Use the generateDependencyReport() function for more information.
|
|
4
4
|
`)},A={open:ee,close:ee,random:ee};(async()=>{for(let i of Object.keys(ke))try{let e=require(i);i==="libsodium-wrappers"&&e.ready&&await e.ready,Object.assign(A,ke[i](e));break}catch{}})();var g=()=>{};var ve=h(require("tiny-typed-emitter")),pt=2,lt=48e3/100*pt,ft=2**32-1,ht=["xsalsa20_poly1305_lite","xsalsa20_poly1305_suffix","xsalsa20_poly1305"],l;(function(a){a[a.OpeningWs=0]="OpeningWs",a[a.Identifying=1]="Identifying",a[a.UdpHandshaking=2]="UdpHandshaking",a[a.SelectingProtocol=3]="SelectingProtocol",a[a.Ready=4]="Ready",a[a.Resuming=5]="Resuming",a[a.Closed=6]="Closed"})(l||(l={}));var Pe=Buffer.alloc(24),te=class extends ve.TypedEmitter{constructor(e,t){super();r(this,"_state");r(this,"debug");this.onWsOpen=this.onWsOpen.bind(this),this.onChildError=this.onChildError.bind(this),this.onWsPacket=this.onWsPacket.bind(this),this.onWsClose=this.onWsClose.bind(this),this.onWsDebug=this.onWsDebug.bind(this),this.onUdpDebug=this.onUdpDebug.bind(this),this.onUdpClose=this.onUdpClose.bind(this),this.debug=t?s=>this.emit("debug",s):null,this._state={code:0,ws:this.createWebSocket(e.endpoint),connectionOptions:e}}destroy(){this.state={code:6}}get state(){return this._state}set state(e){let t=Reflect.get(this._state,"ws"),s=Reflect.get(e,"ws");t&&t!==s&&(t.off("debug",this.onWsDebug),t.on("error",g),t.off("error",this.onChildError),t.off("open",this.onWsOpen),t.off("packet",this.onWsPacket),t.off("close",this.onWsClose),t.destroy());let n=Reflect.get(this._state,"udp"),o=Reflect.get(e,"udp");n&&n!==o&&(n.on("error",g),n.off("error",this.onChildError),n.off("close",this.onUdpClose),n.off("debug",this.onUdpDebug),n.destroy());let u=this._state;this._state=e,this.emit("stateChange",u,e),this.debug?.(`state change:
|