From 8133364fafba5acb05bf3e24412afd3b638a66e1 Mon Sep 17 00:00:00 2001 From: Deivu Date: Thu, 21 Dec 2023 15:31:43 +0800 Subject: [PATCH] chore: update docs --- .github/workflows/docs-compile.yml | 23 - .gitignore | 1 - docs/.nojekyll | 1 + docs/CNAME | 1 - docs/assets/highlight.css | 92 ++ docs/assets/main.js | 59 + docs/assets/navigation.js | 1 + docs/assets/search.js | 1 + docs/assets/style.css | 1394 +++++++++++++++++ docs/classes/Shoukaku.Shoukaku.html | 258 +++ .../connectors_Connector.Connector.html | 10 + .../connectors_libs_DiscordJS.DiscordJS.html | 10 + docs/classes/connectors_libs_Eris.Eris.html | 10 + .../connectors_libs_OceanicJS.OceanicJS.html | 10 + docs/classes/guild_Connection.Connection.html | 297 ++++ docs/classes/guild_Player.Player.html | 312 ++++ docs/classes/node_Node.Node.html | 312 ++++ docs/classes/node_Rest.Rest.html | 53 + docs/enums/Constants.OpCodes.html | 5 + docs/enums/Constants.State.html | 7 + docs/enums/Constants.Versions.html | 3 + docs/enums/Constants.VoiceState.html | 5 + docs/enums/node_Rest.LoadType.html | 6 + docs/functions/Utils.mergeDefault.html | 5 + docs/functions/Utils.wait.html | 4 + docs/index.html | 182 +++ docs/interfaces/Shoukaku.NodeOption.html | 11 + docs/interfaces/Shoukaku.ShoukakuOptions.html | 23 + docs/interfaces/Shoukaku.Structures.html | 5 + .../Shoukaku.VoiceChannelOptions.html | 6 + ...connectors_Connector.ConnectorMethods.html | 3 + .../guild_Connection.ServerUpdate.html | 5 + .../guild_Connection.StateUpdatePartial.html | 6 + docs/interfaces/guild_Player.Band.html | 3 + .../guild_Player.ChannelMixSettings.html | 5 + .../guild_Player.DistortionSettings.html | 9 + .../guild_Player.FilterOptions.html | 11 + .../interfaces/guild_Player.FreqSettings.html | 3 + .../guild_Player.KaraokeSettings.html | 5 + .../guild_Player.LowPassSettings.html | 2 + docs/interfaces/guild_Player.PlayOptions.html | 4 + docs/interfaces/guild_Player.PlayerEvent.html | 4 + .../interfaces/guild_Player.PlayerUpdate.html | 4 + .../guild_Player.ResumeOptions.html | 5 + .../guild_Player.RotationSettings.html | 2 + .../guild_Player.TimescaleSettings.html | 4 + .../guild_Player.TrackEndEvent.html | 6 + .../guild_Player.TrackExceptionEvent.html | 5 + .../guild_Player.TrackStartEvent.html | 5 + .../guild_Player.TrackStuckEvent.html | 6 + .../guild_Player.WebSocketClosedEvent.html | 7 + docs/interfaces/node_Node.NodeStats.html | 7 + .../node_Node.NonResumableHeaders.html | 1 + .../node_Node.ResumableHeaders.html | 6 + docs/interfaces/node_Rest.Address.html | 4 + docs/interfaces/node_Rest.EmptyResult.html | 3 + docs/interfaces/node_Rest.ErrorResult.html | 3 + docs/interfaces/node_Rest.Exception.html | 4 + docs/interfaces/node_Rest.LavalinkPlayer.html | 7 + .../node_Rest.LavalinkPlayerVoice.html | 6 + .../node_Rest.LavalinkPlayerVoiceOptions.html | 4 + docs/interfaces/node_Rest.Playlist.html | 5 + docs/interfaces/node_Rest.PlaylistResult.html | 3 + docs/interfaces/node_Rest.RoutePlanner.html | 3 + docs/interfaces/node_Rest.SearchResult.html | 3 + docs/interfaces/node_Rest.SessionInfo.html | 3 + docs/interfaces/node_Rest.Track.html | 4 + docs/interfaces/node_Rest.TrackResult.html | 3 + .../node_Rest.UpdatePlayerInfo.html | 4 + .../node_Rest.UpdatePlayerOptions.html | 9 + docs/modules/Constants.html | 7 + docs/modules/Shoukaku.html | 6 + docs/modules/Utils.html | 4 + docs/modules/connectors_Connector.html | 4 + docs/modules/connectors_libs.html | 4 + docs/modules/connectors_libs_DiscordJS.html | 2 + docs/modules/connectors_libs_Eris.html | 2 + docs/modules/connectors_libs_OceanicJS.html | 2 + docs/modules/guild_Connection.html | 4 + docs/modules/guild_Player.html | 22 + docs/modules/node_Node.html | 6 + docs/modules/node_Rest.html | 21 + docs/types/Utils.Constructor.html | 1 + docs/types/guild_Player.PlayerEventType.html | 1 + docs/types/guild_Player.TrackEndReason.html | 1 + docs/types/node_Node.NodeInfo.html | 1 + docs/types/node_Rest.LavalinkResponse.html | 1 + docs/types/node_Rest.Severity.html | 1 + docs/variables/Constants.NodeDefaults.html | 1 + .../variables/Constants.ShoukakuDefaults.html | 1 + .../connectors_Connector.AllowedPackets.html | 1 + 91 files changed, 3361 insertions(+), 25 deletions(-) delete mode 100644 .github/workflows/docs-compile.yml create mode 100644 docs/.nojekyll delete mode 100644 docs/CNAME create mode 100644 docs/assets/highlight.css create mode 100644 docs/assets/main.js create mode 100644 docs/assets/navigation.js create mode 100644 docs/assets/search.js create mode 100644 docs/assets/style.css create mode 100644 docs/classes/Shoukaku.Shoukaku.html create mode 100644 docs/classes/connectors_Connector.Connector.html create mode 100644 docs/classes/connectors_libs_DiscordJS.DiscordJS.html create mode 100644 docs/classes/connectors_libs_Eris.Eris.html create mode 100644 docs/classes/connectors_libs_OceanicJS.OceanicJS.html create mode 100644 docs/classes/guild_Connection.Connection.html create mode 100644 docs/classes/guild_Player.Player.html create mode 100644 docs/classes/node_Node.Node.html create mode 100644 docs/classes/node_Rest.Rest.html create mode 100644 docs/enums/Constants.OpCodes.html create mode 100644 docs/enums/Constants.State.html create mode 100644 docs/enums/Constants.Versions.html create mode 100644 docs/enums/Constants.VoiceState.html create mode 100644 docs/enums/node_Rest.LoadType.html create mode 100644 docs/functions/Utils.mergeDefault.html create mode 100644 docs/functions/Utils.wait.html create mode 100644 docs/index.html create mode 100644 docs/interfaces/Shoukaku.NodeOption.html create mode 100644 docs/interfaces/Shoukaku.ShoukakuOptions.html create mode 100644 docs/interfaces/Shoukaku.Structures.html create mode 100644 docs/interfaces/Shoukaku.VoiceChannelOptions.html create mode 100644 docs/interfaces/connectors_Connector.ConnectorMethods.html create mode 100644 docs/interfaces/guild_Connection.ServerUpdate.html create mode 100644 docs/interfaces/guild_Connection.StateUpdatePartial.html create mode 100644 docs/interfaces/guild_Player.Band.html create mode 100644 docs/interfaces/guild_Player.ChannelMixSettings.html create mode 100644 docs/interfaces/guild_Player.DistortionSettings.html create mode 100644 docs/interfaces/guild_Player.FilterOptions.html create mode 100644 docs/interfaces/guild_Player.FreqSettings.html create mode 100644 docs/interfaces/guild_Player.KaraokeSettings.html create mode 100644 docs/interfaces/guild_Player.LowPassSettings.html create mode 100644 docs/interfaces/guild_Player.PlayOptions.html create mode 100644 docs/interfaces/guild_Player.PlayerEvent.html create mode 100644 docs/interfaces/guild_Player.PlayerUpdate.html create mode 100644 docs/interfaces/guild_Player.ResumeOptions.html create mode 100644 docs/interfaces/guild_Player.RotationSettings.html create mode 100644 docs/interfaces/guild_Player.TimescaleSettings.html create mode 100644 docs/interfaces/guild_Player.TrackEndEvent.html create mode 100644 docs/interfaces/guild_Player.TrackExceptionEvent.html create mode 100644 docs/interfaces/guild_Player.TrackStartEvent.html create mode 100644 docs/interfaces/guild_Player.TrackStuckEvent.html create mode 100644 docs/interfaces/guild_Player.WebSocketClosedEvent.html create mode 100644 docs/interfaces/node_Node.NodeStats.html create mode 100644 docs/interfaces/node_Node.NonResumableHeaders.html create mode 100644 docs/interfaces/node_Node.ResumableHeaders.html create mode 100644 docs/interfaces/node_Rest.Address.html create mode 100644 docs/interfaces/node_Rest.EmptyResult.html create mode 100644 docs/interfaces/node_Rest.ErrorResult.html create mode 100644 docs/interfaces/node_Rest.Exception.html create mode 100644 docs/interfaces/node_Rest.LavalinkPlayer.html create mode 100644 docs/interfaces/node_Rest.LavalinkPlayerVoice.html create mode 100644 docs/interfaces/node_Rest.LavalinkPlayerVoiceOptions.html create mode 100644 docs/interfaces/node_Rest.Playlist.html create mode 100644 docs/interfaces/node_Rest.PlaylistResult.html create mode 100644 docs/interfaces/node_Rest.RoutePlanner.html create mode 100644 docs/interfaces/node_Rest.SearchResult.html create mode 100644 docs/interfaces/node_Rest.SessionInfo.html create mode 100644 docs/interfaces/node_Rest.Track.html create mode 100644 docs/interfaces/node_Rest.TrackResult.html create mode 100644 docs/interfaces/node_Rest.UpdatePlayerInfo.html create mode 100644 docs/interfaces/node_Rest.UpdatePlayerOptions.html create mode 100644 docs/modules/Constants.html create mode 100644 docs/modules/Shoukaku.html create mode 100644 docs/modules/Utils.html create mode 100644 docs/modules/connectors_Connector.html create mode 100644 docs/modules/connectors_libs.html create mode 100644 docs/modules/connectors_libs_DiscordJS.html create mode 100644 docs/modules/connectors_libs_Eris.html create mode 100644 docs/modules/connectors_libs_OceanicJS.html create mode 100644 docs/modules/guild_Connection.html create mode 100644 docs/modules/guild_Player.html create mode 100644 docs/modules/node_Node.html create mode 100644 docs/modules/node_Rest.html create mode 100644 docs/types/Utils.Constructor.html create mode 100644 docs/types/guild_Player.PlayerEventType.html create mode 100644 docs/types/guild_Player.TrackEndReason.html create mode 100644 docs/types/node_Node.NodeInfo.html create mode 100644 docs/types/node_Rest.LavalinkResponse.html create mode 100644 docs/types/node_Rest.Severity.html create mode 100644 docs/variables/Constants.NodeDefaults.html create mode 100644 docs/variables/Constants.ShoukakuDefaults.html create mode 100644 docs/variables/connectors_Connector.AllowedPackets.html diff --git a/.github/workflows/docs-compile.yml b/.github/workflows/docs-compile.yml deleted file mode 100644 index d9f44e02..00000000 --- a/.github/workflows/docs-compile.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Docs Compile - -on: - push: - branches: - - "v4" - -jobs: - compile: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18.x] - - steps: - - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@17f8bd926464a1afa4c6a11669539e9c1ba77048 # tag=v3 - with: - node-version: ${{ matrix.node-version }} - - run: npm i - - run: npm run build:docs diff --git a/.gitignore b/.gitignore index dd1a49b5..2f0becee 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ .vscode node_modules/ dist/ -docs/ package-lock.json yarn.lock yarn-debug.log* diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 00000000..e2ac6616 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index bd04af49..00000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -shoukaku.shipgirl.moe \ No newline at end of file diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css new file mode 100644 index 00000000..8e16e7f1 --- /dev/null +++ b/docs/assets/highlight.css @@ -0,0 +1,92 @@ +:root { + --light-hl-0: #0000FF; + --dark-hl-0: #569CD6; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #0070C1; + --dark-hl-2: #4FC1FF; + --light-hl-3: #795E26; + --dark-hl-3: #DCDCAA; + --light-hl-4: #A31515; + --dark-hl-4: #CE9178; + --light-hl-5: #001080; + --dark-hl-5: #9CDCFE; + --light-hl-6: #008000; + --dark-hl-6: #6A9955; + --light-hl-7: #AF00DB; + --dark-hl-7: #C586C0; + --light-hl-8: #098658; + --dark-hl-8: #B5CEA8; + --light-hl-9: #267F99; + --dark-hl-9: #4EC9B0; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +pre, code { background: var(--code-background); } diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 00000000..d0aa8d5f --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,59 @@ +"use strict"; +"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(B,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){D||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!D&&this.active&&n.target.closest(".col-sidebar")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var Z=class extends C{constructor(n){super(n);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let r=Q.getItem(this.key);this.el.open=r?r==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let i=this.summary.querySelector("a");i&&i.addEventListener("click",()=>{location.assign(i.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js new file mode 100644 index 00000000..cf8fc077 --- /dev/null +++ b/docs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACp2ZbXMUKRDHv8v6NnUxMeqZdxpjeedDUq6eLyxri8x0stSywx7DbJKy/O4Hs/MAAzQ99y61/PtH091AM/nxa6HhQS/OFxeyqjWrdL04WuyYXpuftrJsBNTHw9Afa70VZnzDq3Jxfnq0KNZclAqqxfmPAXS1u5AlOBiomq0L6QQ+7M/fRwNhqZmGtH07nLb+B1TNjTgN6BUIQ/ICMm6MmjTns1noW7hljXDjumeKsxs/sq7S5z07dUOzls2GbRoadKoOwD8j6DD//Qgp/SGmEKyuXUycd3I6jdzVTps0jSBeaVC3rHBZo27i3fMXkbUdlDWOnIhRrlZNoRsFOeSgw2htRV2sWVWBIHkaMQj5bo6/aS4iG7z9mZTdtrbsWqQaMfpxN0AcwQT49NXLk+duLW9B3fU1P8Jum6poV9IBXZVPfHHmwO4ZRyB2NDB2A1NIE0PrdLt9Dn+GcRpVq0FFDduU2e+KKDNB97fIIPoEei3LeK3g+M4SK8rXQsh7KK9ZsYH4eROdwjdDDx4n9oLfRMrTmcAKSBF/y+tCqvLvJQ33xNUfwGcnr86ePXVr7FJxondPOmmKdFUAq3hB9s7V+0wkkMf0GKwG6f8NbqScJ+DEFLamsUWQgr6yKpLrPi7ldYsLmTlf6WldDVJaTxWCU66P4MQU00XcNWa+/tTz7tve91axGhVzjjwP2PscAFNs/8BbgtqD+rYrvb7MOewCrmuB3+NGcJBdM6U5E0R+YIffv4dYXwv2CJHr5YA/jJJiPAX58e1AMZ4f1zfM/JZebwewKiyGXR/yiT8sQWte3cUvJI8Z2mAzmBPE1LkNPH2G0Aab4R0XBoP1Xh7ck6NcBf/SfXbVGPUDU0xugA6eGGDsj/L+2hQTnT0xwNjWghxjR5xjgrrcQ6VpzE6cZ2bPGw+aP2u+QN1sgbx+T45ypTmMZu2NqQVG/8q3UBdMzKi2wATlK9MpXlYlMYOePM99KKAN4Cy6Z5Sdw1wFSs/hjwYEdmP8mcXuDTD2d7hZStufXwhZAzX0MSvizvxqHorTZ2NqY1pt7gXZV8EXYLXbZ0TIvjQOdm/qSpZwbD8uhNe0HVrZIdId7TP6G3pkhKDwQ4htM+Ibzue0OiwXn2XVnif24fYeWAkqjw0ssocbnT4HbQ3+qm7lNM1+CKyCmF0zuU5k1w6RsvtRstKv6sNnwpHSK9IfCX0/vAppCaEzfoW8Lo1XNRLqFtCpsAhfbnf60aZExI+BEeYoUaBSUtGAoxIF9mdyDtfr0BaH7Zng1WbaRUeJvpiObT/RzWK3FjMnwLoJdB5iZyV4nctgL6OgSCXhi/HOpzHvL2GfErk0ulL0QQhMFWuSn64UR9b2vw7+EZYgDspsa5BBtZoshLROR4kBu9dwW2KEtU7lVDSt4iMWlJ1lbHdGGvQq4VbqlblOZQl7UFw/pom9InV5/fwPsiEoI6sbAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js new file mode 100644 index 00000000..236afa99 --- /dev/null +++ b/docs/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css new file mode 100644 index 00000000..07a385b7 --- /dev/null +++ b/docs/assets/style.css @@ -0,0 +1,1394 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: var(--light-color-ts-type-alias); + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias); + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 > a, +h2 > a, +h3 > a, +h4 > a, +h5 > a, +h6 > a { + text-decoration: none; + color: var(--color-text); +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} + +.tsd-generator > p { + margin-top: 0; + margin-bottom: 0; + padding: 0 1rem; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.5rem); +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: inline-flex; + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-nested-navigation > li > a, +.tsd-nested-navigation > li > span { + width: calc(100% - 1.75rem - 0.5rem); +} + +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/docs/classes/Shoukaku.Shoukaku.html b/docs/classes/Shoukaku.Shoukaku.html new file mode 100644 index 00000000..892b9509 --- /dev/null +++ b/docs/classes/Shoukaku.Shoukaku.html @@ -0,0 +1,258 @@ +Shoukaku | shoukaku

Main Shoukaku class

+

Hierarchy

  • EventEmitter
    • Shoukaku

Constructors

Properties

connections: Map<string, Connection>

Voice connections being handled

+
connector: Connector

Discord library connector

+
id: null | string

Shoukaku instance identifier

+
nodes: Map<string, Node>

Connected Lavalink nodes

+
options: Required<ShoukakuOptions>

Shoukaku options

+
players: Map<string, Player>

Players being handled

+
captureRejectionSymbol: typeof captureRejectionSymbol

Value: Symbol.for('nodejs.rejection')

+

See how to write a custom rejection handler.

+

Since

v13.4.0, v12.16.0

+
captureRejections: boolean

Value: boolean

+

Change the default captureRejections option on all new EventEmitter objects.

+

Since

v13.4.0, v12.16.0

+
defaultMaxListeners: number

By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListenersproperty can be used. If this value is not a positive number, a RangeErroris thrown.

+

Take caution when setting the events.defaultMaxListeners because the +change affects allEventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

+

This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any singleEventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners()methods can be used to +temporarily avoid this warning:

+
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
// do stuff
emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
}); +
+

The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

+

The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

+

Since

v0.11.2

+
errorMonitor: typeof errorMonitor

This symbol shall be used to install a listener for only monitoring 'error'events. Listeners installed using this symbol are called before the regular'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an'error' event is emitted. Therefore, the process will still crash if no +regular 'error' listener is installed.

+

Since

v13.6.0, v12.17.0

+

Methods

  • Parameters

    • error: Error
    • event: string
    • Rest ...args: any[]

    Returns void

  • Alias for emitter.on(eventName, listener).

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Shoukaku

    Since

    v0.1.26

    +
  • Add a Lavalink node to the pool of available nodes

    +

    Parameters

    Returns void

  • Internal

    Cleans the disconnected lavalink node

    +

    Parameters

    • node: Node

      The node to clean

      +
    • Rest ...args: unknown[]

      Additional arguments for Shoukaku to emit

      +

    Returns void

    A Lavalink node or undefined

    +
  • Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    import { EventEmitter } from 'node:events';
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    +

    Parameters

    • eventName: string | symbol
    • Rest ...args: any[]

    Returns boolean

    Since

    v0.1.26

    +
  • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    import { EventEmitter } from 'node:events';

    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    +

    Returns (string | symbol)[]

    Since

    v6.0.0

    +
  • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    +

    Returns number

    Since

    v1.0.0

    +
  • Internal

    Leaves a voice channel

    +

    Parameters

    • guildId: string

      The id of the guild you want to delete

      +

    Returns Promise<void>

    The destroyed / disconnected player or undefined if none

    +
  • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

    +

    Parameters

    • eventName: string | symbol

      The name of the event being listened for

      +
    • Optional listener: Function

      The event handler function

      +

    Returns number

    Since

    v3.2.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v0.1.26

    +
  • Parameters

    • event: "reconnecting"
    • listener: ((name, reconnectsLeft, reconnectInterval) => void)
        • (name, reconnectsLeft, reconnectInterval): void
        • Parameters

          • name: string
          • reconnectsLeft: number
          • reconnectInterval: number

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "debug"
    • listener: ((name, info) => void)
        • (name, info): void
        • Parameters

          • name: string
          • info: string

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "error"
    • listener: ((name, error) => void)
        • (name, error): void
        • Parameters

          • name: string
          • error: Error

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "ready"
    • listener: ((name, reconnected) => void)
        • (name, reconnected): void
        • Parameters

          • name: string
          • reconnected: boolean

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "close"
    • listener: ((name, code, reason) => void)
        • (name, code, reason): void
        • Parameters

          • name: string
          • code: number
          • reason: string

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "disconnect"
    • listener: ((name, count) => void)
        • (name, count): void
        • Parameters

          • name: string
          • count: number

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "raw"
    • listener: ((name, json) => void)
        • (name, json): void
        • Parameters

          • name: string
          • json: unknown

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "reconnecting"
    • listener: ((name, reconnectsLeft, reconnectInterval) => void)
        • (name, reconnectsLeft, reconnectInterval): void
        • Parameters

          • name: string
          • reconnectsLeft: number
          • reconnectInterval: number

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "debug"
    • listener: ((name, info) => void)
        • (name, info): void
        • Parameters

          • name: string
          • info: string

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "error"
    • listener: ((name, error) => void)
        • (name, error): void
        • Parameters

          • name: string
          • error: Error

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "ready"
    • listener: ((name, reconnected) => void)
        • (name, reconnected): void
        • Parameters

          • name: string
          • reconnected: boolean

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "close"
    • listener: ((name, code, reason) => void)
        • (name, code, reason): void
        • Parameters

          • name: string
          • code: number
          • reason: string

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "disconnect"
    • listener: ((name, count) => void)
        • (name, count): void
        • Parameters

          • name: string
          • count: number

          Returns void

    Returns Shoukaku

  • Parameters

    • event: "raw"
    • listener: ((name, json) => void)
        • (name, json): void
        • Parameters

          • name: string
          • json: unknown

          Returns void

    Returns Shoukaku

  • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Shoukaku

    Since

    v6.0.0

    +
  • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Shoukaku

    Since

    v6.0.0

    +
  • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v9.4.0

    +
  • Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • Optional event: string | symbol

    Returns Shoukaku

    Since

    v0.1.26

    +
  • Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    import { EventEmitter } from 'node:events';
    class MyEmitter extends EventEmitter {}
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    import { EventEmitter } from 'node:events';
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Shoukaku

    Since

    v0.1.26

    +
  • Remove a Lavalink node from the pool of available nodes

    +

    Parameters

    • name: string

      Name of the node

      +
    • reason: string = 'Remove node executed'

      Reason of removing the node

      +

    Returns void

  • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • n: number

    Returns Shoukaku

    Since

    v0.3.5

    +
  • Experimental

    Listens once to the abort event on the provided signal.

    +

    Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

    +

    This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

    +

    Returns a disposable so that it may be unsubscribed from more easily.

    +
    import { addAbortListener } from 'node:events';

    function example(signal) {
    let disposable;
    try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
    // Do something when signal is aborted.
    });
    } finally {
    disposable?.[Symbol.dispose]();
    }
    } +
    +

    Parameters

    • signal: AbortSignal
    • resource: ((event) => void)
        • (event): void
        • Parameters

          • event: Event

          Returns void

    Returns Disposable

    Disposable that removes the abort listener.

    +

    Since

    v20.5.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    import { getEventListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget
    • name: string | symbol

    Returns Function[]

    Since

    v15.2.0, v14.17.0

    +
  • Returns the currently set max amount of listeners.

    +

    For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

    +

    For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

    +
    import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    console.log(getMaxListeners(ee)); // 10
    setMaxListeners(11, ee);
    console.log(getMaxListeners(ee)); // 11
    }
    {
    const et = new EventTarget();
    console.log(getMaxListeners(et)); // 10
    setMaxListeners(11, et);
    console.log(getMaxListeners(et)); // 11
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget

    Returns number

    Since

    v19.9.0

    +
  • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    import { EventEmitter, listenerCount } from 'node:events';

    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    +

    Parameters

    • emitter: EventEmitter

      The emitter to query

      +
    • eventName: string | symbol

      The event name

      +

    Returns number

    Since

    v0.9.12

    +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
  • import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    +

    Parameters

    • emitter: EventEmitter
    • eventName: string

      The name of the event being listened for

      +
    • Optional options: StaticEventEmitterOptions

    Returns AsyncIterableIterator<any>

    that iterates eventName events emitted by the emitter

    +

    Since

    v13.6.0, v12.16.0

    +
  • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.error('error happened', err);
    } +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.error('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    +

    Parameters

    • emitter: _NodeEventTarget
    • eventName: string | symbol
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

    Since

    v11.13.0, v10.16.0

    +
  • Parameters

    • emitter: _DOMEventTarget
    • eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

  • import { setMaxListeners, EventEmitter } from 'node:events';

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    +

    Parameters

    • Optional n: number

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

    Returns void

    Since

    v15.4.0

    +

Events

  • Emitted when reconnect tries are occurring and how many tries are left

    +

    Parameters

    • event: "reconnecting"
    • listener: ((name, reconnectsLeft, reconnectInterval) => void)
        • (name, reconnectsLeft, reconnectInterval): void
        • Parameters

          • name: string
          • reconnectsLeft: number
          • reconnectInterval: number

          Returns void

    Returns Shoukaku

  • Emitted when data useful for debugging is produced

    +

    Parameters

    • event: "debug"
    • listener: ((name, info) => void)
        • (name, info): void
        • Parameters

          • name: string
          • info: string

          Returns void

    Returns Shoukaku

  • Emitted when an error occurs

    +

    Parameters

    • event: "error"
    • listener: ((name, error) => void)
        • (name, error): void
        • Parameters

          • name: string
          • error: Error

          Returns void

    Returns Shoukaku

  • Emitted when Shoukaku is ready to receive operations

    +

    Parameters

    • event: "ready"
    • listener: ((name, reconnected) => void)
        • (name, reconnected): void
        • Parameters

          • name: string
          • reconnected: boolean

          Returns void

    Returns Shoukaku

  • Emitted when a websocket connection to Lavalink closes

    +

    Parameters

    • event: "close"
    • listener: ((name, code, reason) => void)
        • (name, code, reason): void
        • Parameters

          • name: string
          • code: number
          • reason: string

          Returns void

    Returns Shoukaku

  • Emitted when a websocket connection to Lavalink disconnects

    +

    Parameters

    • event: "disconnect"
    • listener: ((name, count) => void)
        • (name, count): void
        • Parameters

          • name: string
          • count: number

          Returns void

    Returns Shoukaku

  • Emitted when a raw message is received from Lavalink

    +

    Parameters

    • event: "raw"
    • listener: ((name, json) => void)
        • (name, json): void
        • Parameters

          • name: string
          • json: unknown

          Returns void

    Returns Shoukaku

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/connectors_Connector.Connector.html b/docs/classes/connectors_Connector.Connector.html new file mode 100644 index 00000000..d89f2735 --- /dev/null +++ b/docs/classes/connectors_Connector.Connector.html @@ -0,0 +1,10 @@ +Connector | shoukaku

Hierarchy

Constructors

Properties

Methods

Constructors

Properties

client: any
manager: null | Shoukaku

Methods

  • Parameters

    • shardId: number
    • payload: any
    • important: boolean

    Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/connectors_libs_DiscordJS.DiscordJS.html b/docs/classes/connectors_libs_DiscordJS.DiscordJS.html new file mode 100644 index 00000000..55521914 --- /dev/null +++ b/docs/classes/connectors_libs_DiscordJS.DiscordJS.html @@ -0,0 +1,10 @@ +DiscordJS | shoukaku

Hierarchy

Constructors

Properties

Methods

Constructors

Properties

client: any
manager: null | Shoukaku

Methods

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/connectors_libs_Eris.Eris.html b/docs/classes/connectors_libs_Eris.Eris.html new file mode 100644 index 00000000..7f4a21f3 --- /dev/null +++ b/docs/classes/connectors_libs_Eris.Eris.html @@ -0,0 +1,10 @@ +Eris | shoukaku

Hierarchy

Constructors

Properties

Methods

Constructors

Properties

client: any
manager: null | Shoukaku

Methods

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/connectors_libs_OceanicJS.OceanicJS.html b/docs/classes/connectors_libs_OceanicJS.OceanicJS.html new file mode 100644 index 00000000..22a69ff4 --- /dev/null +++ b/docs/classes/connectors_libs_OceanicJS.OceanicJS.html @@ -0,0 +1,10 @@ +OceanicJS | shoukaku

Hierarchy

Constructors

Properties

Methods

Constructors

Properties

client: any
manager: null | Shoukaku

Methods

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/guild_Connection.Connection.html b/docs/classes/guild_Connection.Connection.html new file mode 100644 index 00000000..bdef26ad --- /dev/null +++ b/docs/classes/guild_Connection.Connection.html @@ -0,0 +1,297 @@ +Connection | shoukaku

Represents a connection to a Discord voice channel

+

Hierarchy

  • EventEmitter
    • Connection

Constructors

Properties

channelId: null | string

ID of the connected voice channel

+
deafened: boolean

Deafen status in connected voice channel

+
guildId: string

ID of Guild that contains the connected voice channel

+
lastChannelId: null | string

ID of the last channelId connected to

+
lastRegion: null | string

Last region of the connected voice channel

+
manager: Shoukaku

The manager where this connection is on

+
muted: boolean

Mute status in connected voice channel

+
region: null | string

Region of connected voice channel

+
serverUpdate: null | ServerUpdate

Cached serverUpdate event from Lavalink

+
sessionId: null | string

ID of current session

+
shardId: number

ID of the Shard that contains the guild that contains the connected voice channel

+
state: State

Connection state

+
captureRejectionSymbol: typeof captureRejectionSymbol

Value: Symbol.for('nodejs.rejection')

+

See how to write a custom rejection handler.

+

Since

v13.4.0, v12.16.0

+
captureRejections: boolean

Value: boolean

+

Change the default captureRejections option on all new EventEmitter objects.

+

Since

v13.4.0, v12.16.0

+
defaultMaxListeners: number

By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListenersproperty can be used. If this value is not a positive number, a RangeErroris thrown.

+

Take caution when setting the events.defaultMaxListeners because the +change affects allEventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

+

This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any singleEventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners()methods can be used to +temporarily avoid this warning:

+
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
// do stuff
emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
}); +
+

The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

+

The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

+

Since

v0.11.2

+
errorMonitor: typeof errorMonitor

This symbol shall be used to install a listener for only monitoring 'error'events. Listeners installed using this symbol are called before the regular'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an'error' event is emitted. Therefore, the process will still crash if no +regular 'error' listener is installed.

+

Since

v13.6.0, v12.17.0

+

Methods

  • Parameters

    • error: Error
    • event: string
    • Rest ...args: any[]

    Returns void

  • Alias for emitter.on(eventName, listener).

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Connection

    Since

    v0.1.26

    +
  • Internal

    Connect the current bot user to a voice channel

    +

    Returns Promise<void>

  • Internal

    Disconnect the current bot user from the connected voice channel

    +

    Returns void

  • Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    import { EventEmitter } from 'node:events';
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    +

    Parameters

    • eventName: string | symbol
    • Rest ...args: any[]

    Returns boolean

    Since

    v0.1.26

    +
  • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    import { EventEmitter } from 'node:events';

    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    +

    Returns (string | symbol)[]

    Since

    v6.0.0

    +
  • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    +

    Returns number

    Since

    v1.0.0

    +
  • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

    +

    Parameters

    • eventName: string | symbol

      The name of the event being listened for

      +
    • Optional listener: Function

      The event handler function

      +

    Returns number

    Since

    v3.2.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v0.1.26

    +
  • Alias for emitter.removeListener().

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Connection

    Since

    v10.0.0

    +
  • Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    import { EventEmitter } from 'node:events';
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Connection

    Since

    v0.1.101

    +
  • Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    import { EventEmitter } from 'node:events';
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Connection

    Since

    v0.3.0

    +
  • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Connection

    Since

    v6.0.0

    +
  • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Connection

    Since

    v6.0.0

    +
  • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v9.4.0

    +
  • Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • Optional event: string | symbol

    Returns Connection

    Since

    v0.1.26

    +
  • Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    import { EventEmitter } from 'node:events';
    class MyEmitter extends EventEmitter {}
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    import { EventEmitter } from 'node:events';
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Connection

    Since

    v0.1.26

    +
  • Set the deafen status for the current bot user

    +

    Parameters

    • deaf: boolean = false

      Boolean value to indicate whether to deafen or undeafen

      +

    Returns void

    Default Value

    false
    +
    +
  • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • n: number

    Returns Connection

    Since

    v0.3.5

    +
  • Set the mute status for the current bot user

    +

    Parameters

    • mute: boolean = false

      Boolean value to indicate whether to mute or unmute

      +

    Returns void

    Default Value

    false
    +
    +
  • Experimental

    Listens once to the abort event on the provided signal.

    +

    Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

    +

    This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

    +

    Returns a disposable so that it may be unsubscribed from more easily.

    +
    import { addAbortListener } from 'node:events';

    function example(signal) {
    let disposable;
    try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
    // Do something when signal is aborted.
    });
    } finally {
    disposable?.[Symbol.dispose]();
    }
    } +
    +

    Parameters

    • signal: AbortSignal
    • resource: ((event) => void)
        • (event): void
        • Parameters

          • event: Event

          Returns void

    Returns Disposable

    Disposable that removes the abort listener.

    +

    Since

    v20.5.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    import { getEventListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget
    • name: string | symbol

    Returns Function[]

    Since

    v15.2.0, v14.17.0

    +
  • Returns the currently set max amount of listeners.

    +

    For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

    +

    For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

    +
    import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    console.log(getMaxListeners(ee)); // 10
    setMaxListeners(11, ee);
    console.log(getMaxListeners(ee)); // 11
    }
    {
    const et = new EventTarget();
    console.log(getMaxListeners(et)); // 10
    setMaxListeners(11, et);
    console.log(getMaxListeners(et)); // 11
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget

    Returns number

    Since

    v19.9.0

    +
  • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    import { EventEmitter, listenerCount } from 'node:events';

    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    +

    Parameters

    • emitter: EventEmitter

      The emitter to query

      +
    • eventName: string | symbol

      The event name

      +

    Returns number

    Since

    v0.9.12

    +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
  • import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    +

    Parameters

    • emitter: EventEmitter
    • eventName: string

      The name of the event being listened for

      +
    • Optional options: StaticEventEmitterOptions

    Returns AsyncIterableIterator<any>

    that iterates eventName events emitted by the emitter

    +

    Since

    v13.6.0, v12.16.0

    +
  • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.error('error happened', err);
    } +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.error('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    +

    Parameters

    • emitter: _NodeEventTarget
    • eventName: string | symbol
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

    Since

    v11.13.0, v10.16.0

    +
  • Parameters

    • emitter: _DOMEventTarget
    • eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

  • import { setMaxListeners, EventEmitter } from 'node:events';

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    +

    Parameters

    • Optional n: number

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

    Returns void

    Since

    v15.4.0

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/guild_Player.Player.html b/docs/classes/guild_Player.Player.html new file mode 100644 index 00000000..bc7a4507 --- /dev/null +++ b/docs/classes/guild_Player.Player.html @@ -0,0 +1,312 @@ +Player | shoukaku

Wrapper object around Lavalink

+

Hierarchy

  • EventEmitter
    • Player

Constructors

Properties

filters: FilterOptions

Filters on current track

+
guildId: string

GuildId of this player

+
node: Node

Lavalink node this player is connected to

+
paused: boolean

Pause status in current player

+
ping: number

Ping represents the number of milliseconds between heartbeat and ack. Could be -1 if not connected

+
position: number

Position in ms of current track

+
track: null | string

ID of current track

+
volume: number

Global volume of the player

+
captureRejectionSymbol: typeof captureRejectionSymbol

Value: Symbol.for('nodejs.rejection')

+

See how to write a custom rejection handler.

+

Since

v13.4.0, v12.16.0

+
captureRejections: boolean

Value: boolean

+

Change the default captureRejections option on all new EventEmitter objects.

+

Since

v13.4.0, v12.16.0

+
defaultMaxListeners: number

By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListenersproperty can be used. If this value is not a positive number, a RangeErroris thrown.

+

Take caution when setting the events.defaultMaxListeners because the +change affects allEventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

+

This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any singleEventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners()methods can be used to +temporarily avoid this warning:

+
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
// do stuff
emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
}); +
+

The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

+

The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

+

Since

v0.11.2

+
errorMonitor: typeof errorMonitor

This symbol shall be used to install a listener for only monitoring 'error'events. Listeners installed using this symbol are called before the regular'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an'error' event is emitted. Therefore, the process will still crash if no +regular 'error' listener is installed.

+

Since

v13.6.0, v12.17.0

+

Accessors

Methods

  • Parameters

    • error: Error
    • event: string
    • Rest ...args: any[]

    Returns void

  • Alias for emitter.on(eventName, listener).

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Player

    Since

    v0.1.26

    +
  • Clear all filters applied to the currently playing track

    +

    Returns Promise<void>

  • Destroys the player in remote lavalink side

    +

    Returns Promise<void>

  • Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    import { EventEmitter } from 'node:events';
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    +

    Parameters

    • eventName: string | symbol
    • Rest ...args: any[]

    Returns boolean

    Since

    v0.1.26

    +
  • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    import { EventEmitter } from 'node:events';

    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    +

    Returns (string | symbol)[]

    Since

    v6.0.0

    +
  • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    +

    Returns number

    Since

    v1.0.0

    +
  • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

    +

    Parameters

    • eventName: string | symbol

      The name of the event being listened for

      +
    • Optional listener: Function

      The event handler function

      +

    Returns number

    Since

    v3.2.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v0.1.26

    +
  • Move player to another node

    +

    Parameters

    • Optional name: string

    Returns Promise<boolean>

    true if the player was moved, false if not

    +
  • Internal

    Handle player events received from Lavalink

    +

    Parameters

    • json: {
          track: Track;
          type: string;
      }

      JSON data from Lavalink

      +

    Returns void

  • Handle player update data

    +

    Parameters

    • json: {
          state: {
              ping: number;
              position: number;
          };
      }
      • state: {
            ping: number;
            position: number;
        }
        • ping: number
        • position: number

    Returns void

  • Play a new track

    +

    Parameters

    Returns Promise<void>

  • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Player

    Since

    v6.0.0

    +
  • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Player

    Since

    v6.0.0

    +
  • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v9.4.0

    +
  • Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • Optional event: string | symbol

    Returns Player

    Since

    v0.1.26

    +
  • Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    import { EventEmitter } from 'node:events';
    class MyEmitter extends EventEmitter {}
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    import { EventEmitter } from 'node:events';
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Player

    Since

    v0.1.26

    +
  • Resumes the current track

    +

    Parameters

    • options: ResumeOptions = {}

      An object that conforms to ResumeOptions that specify behavior on resuming

      +

    Returns Promise<void>

  • Seek to a specific time in the currently playing track

    +

    Parameters

    • position: number

      Position to seek to in milliseconds

      +

    Returns Promise<void>

  • Internal

    Sends server update to lavalink

    +

    Parameters

    Returns Promise<void>

  • Change the channel mix settings applied to the currently playing track

    +

    Parameters

    • channelMix: ChannelMixSettings

      An object that conforms to ChannelMixSettings that defines how much the left and right channels affect each other (setting all factors to 0.5 causes both channels to get the same audio)

      +

    Returns Promise<void>

  • Change the distortion settings applied to the currently playing track

    +

    Parameters

    • distortion: DistortionSettings

      An object that conforms to DistortionSettings that defines distortions in the audio

      +

    Returns Promise<void>

    The current player instance

    +
  • Change the equalizer settings applied to the currently playing track

    +

    Parameters

    • equalizer: Band[]

      An array of objects that conforms to the Bands type that define volumes at different frequencies

      +

    Returns Promise<void>

  • Sets the filter volume of the player

    +

    Parameters

    • volume: number

      Target volume 0.0-5.0

      +

    Returns Promise<void>

  • Change the all filter settings applied to the currently playing track

    +

    Parameters

    • filters: FilterOptions

      An object that conforms to FilterOptions that defines all filters to apply/modify

      +

    Returns Promise<void>

  • Sets the global volume of the player

    +

    Parameters

    • volume: number

      Target volume 0-1000

      +

    Returns Promise<void>

  • Change the karaoke settings applied to the currently playing track

    +

    Parameters

    • Optional karaoke: KaraokeSettings

      An object that conforms to the KaraokeSettings type that defines a range of frequencies to mute

      +

    Returns Promise<void>

  • Change the low pass settings applied to the currently playing track

    +

    Parameters

    • lowPass: LowPassSettings

      An object that conforms to LowPassSettings that defines the amount of suppression on higher frequencies

      +

    Returns Promise<void>

  • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • n: number

    Returns Player

    Since

    v0.3.5

    +
  • Pause or unpause the currently playing track

    +

    Parameters

    • paused: boolean = true

      Boolean value to specify whether to pause or unpause the current bot user

      +

    Returns Promise<void>

  • Change the rotation settings applied to the currently playing track

    +

    Parameters

    • Optional rotation: RotationSettings

      An object that conforms to the RotationSettings type that defines the frequency of audio rotating round the listener

      +

    Returns Promise<void>

  • Change the timescale settings applied to the currently playing track

    +

    Parameters

    • Optional timescale: TimescaleSettings

      An object that conforms to the TimescaleSettings type that defines the time signature to play the audio at

      +

    Returns Promise<void>

  • Change the tremolo settings applied to the currently playing track

    +

    Parameters

    • Optional tremolo: FreqSettings

      An object that conforms to the FreqSettings type that defines an oscillation in volume

      +

    Returns Promise<void>

  • Change the vibrato settings applied to the currently playing track

    +

    Parameters

    • Optional vibrato: FreqSettings

      An object that conforms to the FreqSettings type that defines an oscillation in pitch

      +

    Returns Promise<void>

  • Stop the currently playing track

    +

    Returns Promise<void>

  • If you want to update the whole player yourself, sends raw update player info to lavalink

    +

    Parameters

    Returns Promise<void>

  • Experimental

    Listens once to the abort event on the provided signal.

    +

    Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

    +

    This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

    +

    Returns a disposable so that it may be unsubscribed from more easily.

    +
    import { addAbortListener } from 'node:events';

    function example(signal) {
    let disposable;
    try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
    // Do something when signal is aborted.
    });
    } finally {
    disposable?.[Symbol.dispose]();
    }
    } +
    +

    Parameters

    • signal: AbortSignal
    • resource: ((event) => void)
        • (event): void
        • Parameters

          • event: Event

          Returns void

    Returns Disposable

    Disposable that removes the abort listener.

    +

    Since

    v20.5.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    import { getEventListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget
    • name: string | symbol

    Returns Function[]

    Since

    v15.2.0, v14.17.0

    +
  • Returns the currently set max amount of listeners.

    +

    For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

    +

    For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

    +
    import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    console.log(getMaxListeners(ee)); // 10
    setMaxListeners(11, ee);
    console.log(getMaxListeners(ee)); // 11
    }
    {
    const et = new EventTarget();
    console.log(getMaxListeners(et)); // 10
    setMaxListeners(11, et);
    console.log(getMaxListeners(et)); // 11
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget

    Returns number

    Since

    v19.9.0

    +
  • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    import { EventEmitter, listenerCount } from 'node:events';

    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    +

    Parameters

    • emitter: EventEmitter

      The emitter to query

      +
    • eventName: string | symbol

      The event name

      +

    Returns number

    Since

    v0.9.12

    +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
  • import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    +

    Parameters

    • emitter: EventEmitter
    • eventName: string

      The name of the event being listened for

      +
    • Optional options: StaticEventEmitterOptions

    Returns AsyncIterableIterator<any>

    that iterates eventName events emitted by the emitter

    +

    Since

    v13.6.0, v12.16.0

    +
  • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.error('error happened', err);
    } +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.error('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    +

    Parameters

    • emitter: _NodeEventTarget
    • eventName: string | symbol
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

    Since

    v11.13.0, v10.16.0

    +
  • Parameters

    • emitter: _DOMEventTarget
    • eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

  • import { setMaxListeners, EventEmitter } from 'node:events';

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    +

    Parameters

    • Optional n: number

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

    Returns void

    Since

    v15.4.0

    +

Events

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/node_Node.Node.html b/docs/classes/node_Node.Node.html new file mode 100644 index 00000000..d4ba5c0b --- /dev/null +++ b/docs/classes/node_Node.Node.html @@ -0,0 +1,312 @@ +Node | shoukaku

Represents a Lavalink node

+

Hierarchy

  • EventEmitter
    • Node

Constructors

Properties

auth: string

Credentials to access Lavalink

+
destroyed: boolean

Boolean that represents if this connection is destroyed

+
group?: string

Group in which this node is contained

+
info: null | NodeInfo

Information about lavalink node

+
initialized: boolean

Boolean that represents if the node has initialized once

+
manager: Shoukaku

Shoukaku class

+
name: string

Name of this node

+
reconnects: number

The number of reconnects to Lavalink

+
rest: Rest

Lavalink rest API

+
sessionId: null | string

SessionId of this Lavalink connection (not to be confused with Discord SessionId)

+
state: State

The state of this connection

+
stats: null | NodeStats

Statistics from Lavalink

+
url: string

URL of Lavalink

+
version: string

Websocket version this node will use

+
ws: null | WebSocket

Websocket instance

+
captureRejectionSymbol: typeof captureRejectionSymbol

Value: Symbol.for('nodejs.rejection')

+

See how to write a custom rejection handler.

+

Since

v13.4.0, v12.16.0

+
captureRejections: boolean

Value: boolean

+

Change the default captureRejections option on all new EventEmitter objects.

+

Since

v13.4.0, v12.16.0

+
defaultMaxListeners: number

By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListenersproperty can be used. If this value is not a positive number, a RangeErroris thrown.

+

Take caution when setting the events.defaultMaxListeners because the +change affects allEventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

+

This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any singleEventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners()methods can be used to +temporarily avoid this warning:

+
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
// do stuff
emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
}); +
+

The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

+

The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

+

Since

v0.11.2

+
errorMonitor: typeof errorMonitor

This symbol shall be used to install a listener for only monitoring 'error'events. Listeners installed using this symbol are called before the regular'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an'error' event is emitted. Therefore, the process will still crash if no +regular 'error' listener is installed.

+

Since

v13.6.0, v12.17.0

+

Accessors

  • get penalties(): number
  • Internal

    Penalties for load balancing

    +

    Returns number

    Penalty score

    +
  • get shouldClean(): boolean
  • Internal

    If we should clean this node

    +

    Returns boolean

Methods

  • Parameters

    • error: Error
    • event: string
    • Rest ...args: any[]

    Returns void

  • Alias for emitter.on(eventName, listener).

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Node

    Since

    v0.1.26

    +
  • Internal

    Cleans and moves players to other nodes if possible

    +

    Returns Promise<void>

  • Handle closed event from lavalink

    +

    Parameters

    • code: number

      Status close

      +
    • reason: unknown

      Reason for connection close

      +

    Returns void

  • Internal

    Destroys the websocket connection

    +

    Parameters

    • count: number = 0

    Returns void

  • Disconnect from lavalink

    +

    Parameters

    • code: number

      Status code

      +
    • Optional reason: string

      Reason for disconnect

      +

    Returns void

  • Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments +to each.

    +

    Returns true if the event had listeners, false otherwise.

    +
    import { EventEmitter } from 'node:events';
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener +
    +

    Parameters

    • eventName: string | symbol
    • Rest ...args: any[]

    Returns boolean

    Since

    v0.1.26

    +
  • To emit error events easily

    +

    Parameters

    • error: unknown

      error message

      +

    Returns void

  • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

    +
    import { EventEmitter } from 'node:events';

    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    +

    Returns (string | symbol)[]

    Since

    v6.0.0

    +
  • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    +

    Returns number

    Since

    v1.0.0

    +
  • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

    +

    Parameters

    • eventName: string | symbol

      The name of the event being listened for

      +
    • Optional listener: Function

      The event handler function

      +

    Returns number

    Since

    v3.2.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v0.1.26

    +
  • Internal

    Handle message from Lavalink

    +

    Parameters

    • message: unknown

      JSON message

      +

    Returns Promise<void>

  • Internal

    Tries to move the players to another node

    +

    Returns Promise<number>

  • Alias for emitter.removeListener().

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Node

    Since

    v10.0.0

    +
  • Adds the listener function to the end of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    import { EventEmitter } from 'node:events';
    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Node

    Since

    v0.1.101

    +
  • Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

    +
    import { EventEmitter } from 'node:events';
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Node

    Since

    v0.3.0

    +
  • Internal

    Handle connection open event from Lavalink

    +

    Parameters

    • response: IncomingMessage

      Response from Lavalink

      +

    Returns void

  • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Node

    Since

    v6.0.0

    +
  • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Node

    Since

    v6.0.0

    +
  • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v9.4.0

    +
  • Internal

    Reconnect to Lavalink

    +

    Returns Promise<void>

  • Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • Optional event: string | symbol

    Returns Node

    Since

    v0.1.26

    +
  • Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +
    +

    removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

    +

    Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    import { EventEmitter } from 'node:events';
    class MyEmitter extends EventEmitter {}
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +
    +

    Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

    +

    When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

    +
    import { EventEmitter } from 'node:events';
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +
    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Node

    Since

    v0.1.26

    +
  • Internal

    Tries to resume the players internally

    +

    Returns Promise<void>

  • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • n: number

    Returns Node

    Since

    v0.3.5

    +
  • Experimental

    Listens once to the abort event on the provided signal.

    +

    Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

    +

    This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

    +

    Returns a disposable so that it may be unsubscribed from more easily.

    +
    import { addAbortListener } from 'node:events';

    function example(signal) {
    let disposable;
    try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
    // Do something when signal is aborted.
    });
    } finally {
    disposable?.[Symbol.dispose]();
    }
    } +
    +

    Parameters

    • signal: AbortSignal
    • resource: ((event) => void)
        • (event): void
        • Parameters

          • event: Event

          Returns void

    Returns Disposable

    Disposable that removes the abort listener.

    +

    Since

    v20.5.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

    +

    For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

    +
    import { getEventListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget
    • name: string | symbol

    Returns Function[]

    Since

    v15.2.0, v14.17.0

    +
  • Returns the currently set max amount of listeners.

    +

    For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

    +

    For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

    +
    import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    console.log(getMaxListeners(ee)); // 10
    setMaxListeners(11, ee);
    console.log(getMaxListeners(ee)); // 11
    }
    {
    const et = new EventTarget();
    console.log(getMaxListeners(et)); // 10
    setMaxListeners(11, et);
    console.log(getMaxListeners(et)); // 11
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget

    Returns number

    Since

    v19.9.0

    +
  • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    import { EventEmitter, listenerCount } from 'node:events';

    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    +

    Parameters

    • emitter: EventEmitter

      The emitter to query

      +
    • eventName: string | symbol

      The event name

      +

    Returns number

    Since

    v0.9.12

    +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
  • import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    +

    Parameters

    • emitter: EventEmitter
    • eventName: string

      The name of the event being listened for

      +
    • Optional options: StaticEventEmitterOptions

    Returns AsyncIterableIterator<any>

    that iterates eventName events emitted by the emitter

    +

    Since

    v13.6.0, v12.16.0

    +
  • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

    +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

    +
    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.error('error happened', err);
    } +
    +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.error('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +
    +

    An AbortSignal can be used to cancel waiting for the event:

    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! +
    +

    Parameters

    • emitter: _NodeEventTarget
    • eventName: string | symbol
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

    Since

    v11.13.0, v10.16.0

    +
  • Parameters

    • emitter: _DOMEventTarget
    • eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

  • import { setMaxListeners, EventEmitter } from 'node:events';

    const target = new EventTarget();
    const emitter = new EventEmitter();

    setMaxListeners(5, target, emitter); +
    +

    Parameters

    • Optional n: number

      A non-negative number. The maximum number of listeners per EventTarget event.

      +
    • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

    Returns void

    Since

    v15.4.0

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/node_Rest.Rest.html b/docs/classes/node_Rest.Rest.html new file mode 100644 index 00000000..51527bec --- /dev/null +++ b/docs/classes/node_Rest.Rest.html @@ -0,0 +1,53 @@ +Rest | shoukaku

Wrapper around Lavalink REST API

+

Constructors

Properties

auth: string

Credentials to access Lavalink

+
node: Node

Node that initialized this instance

+
url: string

URL of Lavalink

+
version: string

Rest version to use

+

Accessors

Methods

  • Decode a track

    +

    Parameters

    • track: string

      Encoded track

      +

    Returns Promise<undefined | Track>

    Promise that resolves to a track

    +
  • Deletes a Lavalink player

    +

    Parameters

    • guildId: string

      guildId where this player is

      +

    Returns Promise<void>

  • Internal

    Make a request to Lavalink

    +

    Type Parameters

    • T = unknown

    Parameters

    • fetchOptions: FetchOptions

    Returns Promise<undefined | T>

  • Gets all the player with the specified sessionId

    +

    Parameters

    • guildId: string

    Returns Promise<undefined | LavalinkPlayer>

    Promise that resolves to an array of Lavalink players

    +
  • Release blacklisted IP address into pool of IPs

    +

    Parameters

    • address: string

      IP address

      +

    Returns Promise<void>

  • Updates the session with a resume boolean and timeout

    +

    Parameters

    • Optional resuming: boolean

      Whether resuming is enabled for this session or not

      +
    • Optional timeout: number

      Timeout to wait for resuming

      +

    Returns Promise<undefined | SessionInfo>

    Promise that resolves to a Lavalink player

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/Constants.OpCodes.html b/docs/enums/Constants.OpCodes.html new file mode 100644 index 00000000..33059ada --- /dev/null +++ b/docs/enums/Constants.OpCodes.html @@ -0,0 +1,5 @@ +OpCodes | shoukaku

Enumeration OpCodes

Enumeration Members

Enumeration Members

EVENT: "event"
PLAYER_UPDATE: "playerUpdate"
READY: "ready"
STATS: "stats"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/Constants.State.html b/docs/enums/Constants.State.html new file mode 100644 index 00000000..e92a2249 --- /dev/null +++ b/docs/enums/Constants.State.html @@ -0,0 +1,7 @@ +State | shoukaku

Enumeration State

Enumeration Members

CONNECTED: 2
CONNECTING: 0
DISCONNECTED: 5
DISCONNECTING: 4
NEARLY: 1
RECONNECTING: 3

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/Constants.Versions.html b/docs/enums/Constants.Versions.html new file mode 100644 index 00000000..e546b64c --- /dev/null +++ b/docs/enums/Constants.Versions.html @@ -0,0 +1,3 @@ +Versions | shoukaku

Enumeration Versions

Enumeration Members

Enumeration Members

REST_VERSION: 4
WEBSOCKET_VERSION: 4

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/Constants.VoiceState.html b/docs/enums/Constants.VoiceState.html new file mode 100644 index 00000000..79f3c634 --- /dev/null +++ b/docs/enums/Constants.VoiceState.html @@ -0,0 +1,5 @@ +VoiceState | shoukaku

Enumeration VoiceState

Enumeration Members

SESSION_ENDPOINT_MISSING: 2
SESSION_FAILED_UPDATE: 3
SESSION_ID_MISSING: 1
SESSION_READY: 0

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/node_Rest.LoadType.html b/docs/enums/node_Rest.LoadType.html new file mode 100644 index 00000000..62ac353f --- /dev/null +++ b/docs/enums/node_Rest.LoadType.html @@ -0,0 +1,6 @@ +LoadType | shoukaku

Enumeration LoadType

Enumeration Members

Enumeration Members

EMPTY: "empty"
ERROR: "error"
PLAYLIST: "playlist"
SEARCH: "search"
TRACK: "track"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/Utils.mergeDefault.html b/docs/functions/Utils.mergeDefault.html new file mode 100644 index 00000000..8950b001 --- /dev/null +++ b/docs/functions/Utils.mergeDefault.html @@ -0,0 +1,5 @@ +mergeDefault | shoukaku

Function mergeDefault

  • Merge the default options to user input

    +

    Type Parameters

    • T extends {
          [key: string]: any;
      }

    Parameters

    • def: T

      Default options

      +
    • given: T

      User input

      +

    Returns Required<T>

    Merged options

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/Utils.wait.html b/docs/functions/Utils.wait.html new file mode 100644 index 00000000..3ca89d55 --- /dev/null +++ b/docs/functions/Utils.wait.html @@ -0,0 +1,4 @@ +wait | shoukaku

Function wait

  • Wait for a specific amount of time (timeout)

    +

    Parameters

    • ms: number

      Time to wait in milliseconds

      +

    Returns Promise<void>

    A promise that resolves in x seconds

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..16c2b3b1 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,182 @@ +shoukaku

shoukaku

Shoukaku

+

A stable and updated wrapper around Lavalink

+
+

Discord +npm +Github Stars +GitHub issues +Snyk Vulnerabilities for npm package +NPM

+

+ +

+ +
+

The ShipGirl Project, feat Shoukaku; ⓒ Azur Lane

+
+

Features

✅ Stable

+

✅ Documented

+

✅ Updated

+

✅ Extendable

+

✅ ESM & CommonJS supported

+

✅ Very cute (Very Important)

+

Supported Libraries

Refer to /src/connectors for list of supported libraries + how to support other libraries

+

Installation

+

npm install shoukaku

+
+

Documentation

https://shoukaku.shipgirl.moe/

+

Small code snippet examples

+

Initializing the library (Using Connector Discord.JS)

+
+
const { Client } = require("discord.js");
const { Shoukaku, Connectors } = require("shoukaku");
const Nodes = [
{
name: "Localhost",
url: "localhost:6969",
auth: "re_aoharu",
},
];
const client = new Client();
const shoukaku = new Shoukaku(new Connectors.DiscordJS(client), Nodes);
// ALWAYS handle error, logging it will do
shoukaku.on("error", (_, error) => console.error(error));
client.login("token");
// If you want shoukaku to be available on client, then bind it to it, here is one example of it
client.shoukaku = shoukaku; +
+
+

Never initialize Shoukaku like this, or else she will never initialize, start shoukaku before you call client.login()

+
+
// NEVER DO THIS, OR SHOUKAKU WILL NEVER INITIALIZE
client.on("ready", () => {
client.shoukaku = new Shoukaku(new Connectors.DiscordJS(client), Nodes);
}); +
+
+

Join a voice channel, search for a track, play the track, then disconnect after 30 seconds

+
+
const player = await shoukaku.joinVoiceChannel({
guildId: "your_guild_id",
channelId: "your_channel_id",
shardId: 0, // if unsharded it will always be zero (depending on your library implementation)
});
// player is created, now search for a track
const result = await player.node.rest.resolve("scsearch:snowhalation");
if (!result?.tracks.length) return;
const metadata = result.tracks.shift();
// play the searched track
await player.playTrack({ track: metadata.encoded });
// disconnect after 30 seconds
setTimeout(() => shoukaku.leaveVoiceChannel(player.guildId), 30000).unref(); +
+
+

Playing a track and changing a playback option (in this example, volume)

+
+
await player.playTrack({ track: metadata.encoded });
await player.setGlobalVolume(50); +
+
+

Updating the whole player if you don't want to use my helper functions

+
+
await player.update({ ...playerOptions });
+
+
+

Setting a custom get node ideal function

+
+
const shoukaku = new Shoukaku(
new Connectors.DiscordJS(client),
[{ ...yourNodeOptions }],
{
...yourShoukakuOptions,
nodeResolver: (nodes, connection) => getYourIdealNode(nodes, connection),
}
);
const player = await shoukaku.joinVoiceChannel({
guildId: "your_guild_id",
channelId: "your_channel_id",
shardId: 0,
}); +
+

Updating from V3 -> V4 (notable changes)

+

The way of joining and leaving voice channels is now different

+
+
const { Client } = require("discord.js");
const { Shoukaku, Connectors } = require("shoukaku");
const Nodes = [
{
name: "Localhost",
url: "localhost:6969",
auth: "marin_kitagawa",
},
];
const client = new Client();
const shoukaku = new Shoukaku(new Connectors.DiscordJS(client), Nodes);
shoukaku.on("error", (_, error) => console.error(error));
client.login("token");
client.once("ready", async () => {
// get a node with least load to resolve a track
const node = shoukaku.options.nodeResolver(shoukaku.nodes);
const result = await node.rest.resolve("scsearch:snowhalation");
if (!result?.tracks.length) return;
// we now have a track metadata, we can use this to play tracks
const metadata = result.tracks.shift();
// you now join a voice channel by querying the main shoukaku class, not on the node anymore
const player = await shoukaku.joinVoiceChannel({
guildId: "your_guild_id",
channelId: "your_channel_id",
shardId: 0, // if unsharded it will always be zero (depending on your library implementation)
});
// if you want you can also use the player.node property after it connects to resolve tracks
const result_2 = await player.node.rest.resolve("scsearch:snowhalation");
console.log(result_2.tracks.shift());
// now we can play the track
await player.playTrack({ track: metadata.encoded });
setTimeout(async () => {
// simulate a timeout event, after specific amount of time, we leave the voice channel
// you now destroy players / leave voice channels by calling leaveVoiceChannel in main shoukaku class
await shoukaku.leaveVoiceChannel(player.guildId);
}, 30000);
}); +
+
+

Usual player methods now return promises

+
+
await player.playTrack(...data);
await player.stopTrack(); +
+
+

There are 2 kinds of volumes you can set, global and filter

+
+
// global volume accepts 0-1000 as it's values
await player.setGlobalVolume(100);
// to check the current global volume
console.log(player.volume);
// filter volume accepts 0.0-5.0 as it's values
await player.setFilterVolume(1.0);
// to check the current filter volume (filters.volume can be undefined)
console.log(player.filters.volume); +
+
+

There are other internal changes like

+
+
// new variable in shoukaku class, which handles the "connection data" of discord only
console.log(shoukaku.connections);
// players are moved from `node.players` to `shoukaku.players`
console.log(shoukaku.players);
// getNode() is removed in favor of joinVoiceChannel, you can still get the default least loaded node via `shoukaku.options.nodeResolver()`
const player = await shoukaku.joinVoiceChannel({
guildId: "your_guild_id",
channelId: "your_channel_id",
shardId: 0,
});
// you can supply a custom node resolver for your own way of getting an ideal node by supplying the nodeResolver option in Shoukaku options
const ShoukakuOptions = {
...yourShoukakuOptions,
nodeResolver: (nodes, connection) => getYourIdealNode(nodes, connection),
};
// and other changes I'm not able to document(?); +
+

Shoukaku's options

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OptionTypeDefaultDescription
resumebooleanfalseWhether to resume a connection on disconnect to Lavalink (Server Side) (Note: DOES NOT RESUME WHEN THE LAVALINK SERVER DIES)
resumeTimeoutnumber30Timeout before resuming a connection in seconds
resumeByLibrarybooleanfalseWhether to resume the players by doing it in the library side (Client Side) (Note: TRIES TO RESUME REGARDLESS OF WHAT HAPPENED ON A LAVALINK SERVER)
reconnectTriesnumber3Number of times to try and reconnect to Lavalink before giving up
reconnectIntervalnumber5Timeout before trying to reconnect in seconds
restTimeoutnumber60Time to wait for a response from the Lavalink REST API before giving up in seconds
moveOnDisconnectbooleanfalseWhether to move players to a different Lavalink node when a node disconnects
userAgentstring(auto)User Agent to use when making requests to Lavalink
structuresObject{rest?, player?}{}Custom structures for shoukaku to use
voiceConnectionTimeoutnumber15Timeout before abort connection in seconds
nodeResolverfunctionfunctionCustom node resolver if you want to have your own method of getting the ideal node
+

Plugins list

+

Open a pr to add your plugin here

+
+ + + + + + + + + + + + + + + + + + +
NameLinkDescription
KazagumoGithubA Shoukaku wrapper that have built-in queue system
stone-deezerNPMA plugin to simplify deezer links and then play it from available sources (REQUIRES KAZAGUMO)
+

Other Links

Support (#Development) | Lavalink

+

Implementation (Discord.JS)

+

Kongou

+
+

Made with ❤ by

+
+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Shoukaku.NodeOption.html b/docs/interfaces/Shoukaku.NodeOption.html new file mode 100644 index 00000000..d2094b90 --- /dev/null +++ b/docs/interfaces/Shoukaku.NodeOption.html @@ -0,0 +1,11 @@ +NodeOption | shoukaku

Interface NodeOption

interface NodeOption {
    auth: string;
    group?: string;
    name: string;
    secure?: boolean;
    url: string;
}

Properties

Properties

auth: string

Credentials to access Lavalink

+
group?: string

Group of this node

+
name: string

Name of this node

+
secure?: boolean

Whether to use secure protocols or not

+
url: string

URL of Lavalink

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Shoukaku.ShoukakuOptions.html b/docs/interfaces/Shoukaku.ShoukakuOptions.html new file mode 100644 index 00000000..6c432164 --- /dev/null +++ b/docs/interfaces/Shoukaku.ShoukakuOptions.html @@ -0,0 +1,23 @@ +ShoukakuOptions | shoukaku

Interface ShoukakuOptions

interface ShoukakuOptions {
    moveOnDisconnect?: boolean;
    nodeResolver?: ((nodes, connection?) => undefined | Node);
    reconnectInterval?: number;
    reconnectTries?: number;
    restTimeout?: number;
    resume?: boolean;
    resumeByLibrary?: boolean;
    resumeTimeout?: number;
    structures?: Structures;
    userAgent?: string;
    voiceConnectionTimeout?: number;
}

Properties

moveOnDisconnect?: boolean

Whether to move players to a different Lavalink node when a node disconnects

+
nodeResolver?: ((nodes, connection?) => undefined | Node)

Type declaration

    • (nodes, connection?): undefined | Node
    • Node Resolver to use if you want to customize it

      +

      Parameters

      Returns undefined | Node

reconnectInterval?: number

Timeout before trying to reconnect

+
reconnectTries?: number

Number of times to try and reconnect to Lavalink before giving up

+
restTimeout?: number

Time to wait for a response from the Lavalink REST API before giving up

+
resume?: boolean

Whether to resume a connection on disconnect to Lavalink (Server Side) (Note: DOES NOT RESUME WHEN THE LAVALINK SERVER DIES)

+
resumeByLibrary?: boolean

Whether to resume the players by doing it in the library side (Client Side) (Note: TRIES TO RESUME REGARDLESS OF WHAT HAPPENED ON A LAVALINK SERVER)

+
resumeTimeout?: number

Time to wait before lavalink starts to destroy the players of the disconnected client

+
structures?: Structures

Custom structures for shoukaku to use

+
userAgent?: string

User Agent to use when making requests to Lavalink

+
voiceConnectionTimeout?: number

Timeout before abort connection

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Shoukaku.Structures.html b/docs/interfaces/Shoukaku.Structures.html new file mode 100644 index 00000000..fd741e6f --- /dev/null +++ b/docs/interfaces/Shoukaku.Structures.html @@ -0,0 +1,5 @@ +Structures | shoukaku

Interface Structures

interface Structures {
    player?: Constructor<Player>;
    rest?: Constructor<Rest>;
}

Properties

Properties

A custom structure that extends the Player class

+

A custom structure that extends the Rest class

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Shoukaku.VoiceChannelOptions.html b/docs/interfaces/Shoukaku.VoiceChannelOptions.html new file mode 100644 index 00000000..f100d9fb --- /dev/null +++ b/docs/interfaces/Shoukaku.VoiceChannelOptions.html @@ -0,0 +1,6 @@ +VoiceChannelOptions | shoukaku

Interface VoiceChannelOptions

interface VoiceChannelOptions {
    channelId: string;
    deaf?: boolean;
    guildId: string;
    mute?: boolean;
    shardId: number;
}

Properties

channelId: string
deaf?: boolean
guildId: string
mute?: boolean
shardId: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/connectors_Connector.ConnectorMethods.html b/docs/interfaces/connectors_Connector.ConnectorMethods.html new file mode 100644 index 00000000..5fb19083 --- /dev/null +++ b/docs/interfaces/connectors_Connector.ConnectorMethods.html @@ -0,0 +1,3 @@ +ConnectorMethods | shoukaku
interface ConnectorMethods {
    getId: any;
    sendPacket: any;
}

Properties

Properties

getId: any
sendPacket: any

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Connection.ServerUpdate.html b/docs/interfaces/guild_Connection.ServerUpdate.html new file mode 100644 index 00000000..367faff0 --- /dev/null +++ b/docs/interfaces/guild_Connection.ServerUpdate.html @@ -0,0 +1,5 @@ +ServerUpdate | shoukaku

Represents the payload from a serverUpdate event

+
interface ServerUpdate {
    endpoint: string;
    guild_id: string;
    token: string;
}

Properties

Properties

endpoint: string
guild_id: string
token: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Connection.StateUpdatePartial.html b/docs/interfaces/guild_Connection.StateUpdatePartial.html new file mode 100644 index 00000000..bdec335a --- /dev/null +++ b/docs/interfaces/guild_Connection.StateUpdatePartial.html @@ -0,0 +1,6 @@ +StateUpdatePartial | shoukaku

Interface StateUpdatePartial

Represents the partial payload from a stateUpdate event

+
interface StateUpdatePartial {
    channel_id?: string;
    self_deaf: boolean;
    self_mute: boolean;
    session_id?: string;
}

Properties

channel_id?: string
self_deaf: boolean
self_mute: boolean
session_id?: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.Band.html b/docs/interfaces/guild_Player.Band.html new file mode 100644 index 00000000..0718c4f6 --- /dev/null +++ b/docs/interfaces/guild_Player.Band.html @@ -0,0 +1,3 @@ +Band | shoukaku
interface Band {
    band: number;
    gain: number;
}

Properties

Properties

band: number
gain: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.ChannelMixSettings.html b/docs/interfaces/guild_Player.ChannelMixSettings.html new file mode 100644 index 00000000..af4f94cc --- /dev/null +++ b/docs/interfaces/guild_Player.ChannelMixSettings.html @@ -0,0 +1,5 @@ +ChannelMixSettings | shoukaku

Interface ChannelMixSettings

interface ChannelMixSettings {
    leftToLeft?: number;
    leftToRight?: number;
    rightToLeft?: number;
    rightToRight?: number;
}

Properties

leftToLeft?: number
leftToRight?: number
rightToLeft?: number
rightToRight?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.DistortionSettings.html b/docs/interfaces/guild_Player.DistortionSettings.html new file mode 100644 index 00000000..eed19eca --- /dev/null +++ b/docs/interfaces/guild_Player.DistortionSettings.html @@ -0,0 +1,9 @@ +DistortionSettings | shoukaku

Interface DistortionSettings

interface DistortionSettings {
    cosOffset?: number;
    cosScale?: number;
    offset?: number;
    scale?: number;
    sinOffset?: number;
    sinScale?: number;
    tanOffset?: number;
    tanScale?: number;
}

Properties

cosOffset?: number
cosScale?: number
offset?: number
scale?: number
sinOffset?: number
sinScale?: number
tanOffset?: number
tanScale?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.FilterOptions.html b/docs/interfaces/guild_Player.FilterOptions.html new file mode 100644 index 00000000..db0a83b0 --- /dev/null +++ b/docs/interfaces/guild_Player.FilterOptions.html @@ -0,0 +1,11 @@ +FilterOptions | shoukaku

Interface FilterOptions

interface FilterOptions {
    channelMix?: null | ChannelMixSettings;
    distortion?: null | DistortionSettings;
    equalizer?: Band[];
    karaoke?: null | KaraokeSettings;
    lowPass?: null | LowPassSettings;
    rotation?: null | RotationSettings;
    timescale?: null | TimescaleSettings;
    tremolo?: null | FreqSettings;
    vibrato?: null | FreqSettings;
    volume?: number;
}

Properties

channelMix?: null | ChannelMixSettings
distortion?: null | DistortionSettings
equalizer?: Band[]
karaoke?: null | KaraokeSettings
lowPass?: null | LowPassSettings
rotation?: null | RotationSettings
timescale?: null | TimescaleSettings
tremolo?: null | FreqSettings
vibrato?: null | FreqSettings
volume?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.FreqSettings.html b/docs/interfaces/guild_Player.FreqSettings.html new file mode 100644 index 00000000..a271c830 --- /dev/null +++ b/docs/interfaces/guild_Player.FreqSettings.html @@ -0,0 +1,3 @@ +FreqSettings | shoukaku

Interface FreqSettings

interface FreqSettings {
    depth?: number;
    frequency?: number;
}

Properties

Properties

depth?: number
frequency?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.KaraokeSettings.html b/docs/interfaces/guild_Player.KaraokeSettings.html new file mode 100644 index 00000000..7658f4cc --- /dev/null +++ b/docs/interfaces/guild_Player.KaraokeSettings.html @@ -0,0 +1,5 @@ +KaraokeSettings | shoukaku

Interface KaraokeSettings

interface KaraokeSettings {
    filterBand?: number;
    filterWidth?: number;
    level?: number;
    monoLevel?: number;
}

Properties

filterBand?: number
filterWidth?: number
level?: number
monoLevel?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.LowPassSettings.html b/docs/interfaces/guild_Player.LowPassSettings.html new file mode 100644 index 00000000..84c1d104 --- /dev/null +++ b/docs/interfaces/guild_Player.LowPassSettings.html @@ -0,0 +1,2 @@ +LowPassSettings | shoukaku

Interface LowPassSettings

interface LowPassSettings {
    smoothing?: number;
}

Properties

Properties

smoothing?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.PlayOptions.html b/docs/interfaces/guild_Player.PlayOptions.html new file mode 100644 index 00000000..54715ac4 --- /dev/null +++ b/docs/interfaces/guild_Player.PlayOptions.html @@ -0,0 +1,4 @@ +PlayOptions | shoukaku

Interface PlayOptions

Options when playing a new track

+
interface PlayOptions {
    options?: {
        endTime?: number;
        noReplace?: boolean;
        pause?: boolean;
        startTime?: number;
        volume?: number;
    };
    track: string;
}

Properties

Properties

options?: {
    endTime?: number;
    noReplace?: boolean;
    pause?: boolean;
    startTime?: number;
    volume?: number;
}

Type declaration

  • Optional endTime?: number
  • Optional noReplace?: boolean
  • Optional pause?: boolean
  • Optional startTime?: number
  • Optional volume?: number
track: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.PlayerEvent.html b/docs/interfaces/guild_Player.PlayerEvent.html new file mode 100644 index 00000000..0cf9c3f1 --- /dev/null +++ b/docs/interfaces/guild_Player.PlayerEvent.html @@ -0,0 +1,4 @@ +PlayerEvent | shoukaku

Interface PlayerEvent

interface PlayerEvent {
    guildId: string;
    op: EVENT;
    type: PlayerEventType;
}

Hierarchy

Properties

Properties

guildId: string
op: EVENT

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.PlayerUpdate.html b/docs/interfaces/guild_Player.PlayerUpdate.html new file mode 100644 index 00000000..895a2a22 --- /dev/null +++ b/docs/interfaces/guild_Player.PlayerUpdate.html @@ -0,0 +1,4 @@ +PlayerUpdate | shoukaku

Interface PlayerUpdate

interface PlayerUpdate {
    guildId: string;
    op: PLAYER_UPDATE;
    state: {
        connected: boolean;
        position?: number;
        time: number;
    };
}

Properties

Properties

guildId: string
state: {
    connected: boolean;
    position?: number;
    time: number;
}

Type declaration

  • connected: boolean
  • Optional position?: number
  • time: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.ResumeOptions.html b/docs/interfaces/guild_Player.ResumeOptions.html new file mode 100644 index 00000000..797ef866 --- /dev/null +++ b/docs/interfaces/guild_Player.ResumeOptions.html @@ -0,0 +1,5 @@ +ResumeOptions | shoukaku

Interface ResumeOptions

interface ResumeOptions {
    endTime?: number;
    noReplace?: boolean;
    pause?: boolean;
    startTime?: number;
}

Properties

endTime?: number
noReplace?: boolean
pause?: boolean
startTime?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.RotationSettings.html b/docs/interfaces/guild_Player.RotationSettings.html new file mode 100644 index 00000000..acc78d5a --- /dev/null +++ b/docs/interfaces/guild_Player.RotationSettings.html @@ -0,0 +1,2 @@ +RotationSettings | shoukaku

Interface RotationSettings

interface RotationSettings {
    rotationHz?: number;
}

Properties

Properties

rotationHz?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.TimescaleSettings.html b/docs/interfaces/guild_Player.TimescaleSettings.html new file mode 100644 index 00000000..ebab9606 --- /dev/null +++ b/docs/interfaces/guild_Player.TimescaleSettings.html @@ -0,0 +1,4 @@ +TimescaleSettings | shoukaku

Interface TimescaleSettings

interface TimescaleSettings {
    pitch?: number;
    rate?: number;
    speed?: number;
}

Properties

Properties

pitch?: number
rate?: number
speed?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.TrackEndEvent.html b/docs/interfaces/guild_Player.TrackEndEvent.html new file mode 100644 index 00000000..d5c3f40c --- /dev/null +++ b/docs/interfaces/guild_Player.TrackEndEvent.html @@ -0,0 +1,6 @@ +TrackEndEvent | shoukaku

Interface TrackEndEvent

interface TrackEndEvent {
    guildId: string;
    op: EVENT;
    reason: TrackEndReason;
    track: Track;
    type: "TrackEndEvent";
}

Hierarchy

Properties

Properties

guildId: string
op: EVENT
track: Track
type: "TrackEndEvent"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.TrackExceptionEvent.html b/docs/interfaces/guild_Player.TrackExceptionEvent.html new file mode 100644 index 00000000..eb335cb9 --- /dev/null +++ b/docs/interfaces/guild_Player.TrackExceptionEvent.html @@ -0,0 +1,5 @@ +TrackExceptionEvent | shoukaku

Interface TrackExceptionEvent

interface TrackExceptionEvent {
    exception: Exception;
    guildId: string;
    op: EVENT;
    type: "TrackExceptionEvent";
}

Hierarchy

Properties

Properties

exception: Exception
guildId: string
op: EVENT
type: "TrackExceptionEvent"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.TrackStartEvent.html b/docs/interfaces/guild_Player.TrackStartEvent.html new file mode 100644 index 00000000..b01ecac7 --- /dev/null +++ b/docs/interfaces/guild_Player.TrackStartEvent.html @@ -0,0 +1,5 @@ +TrackStartEvent | shoukaku

Interface TrackStartEvent

interface TrackStartEvent {
    guildId: string;
    op: EVENT;
    track: Track;
    type: "TrackStartEvent";
}

Hierarchy

Properties

Properties

guildId: string
op: EVENT
track: Track
type: "TrackStartEvent"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.TrackStuckEvent.html b/docs/interfaces/guild_Player.TrackStuckEvent.html new file mode 100644 index 00000000..7ec6a6fc --- /dev/null +++ b/docs/interfaces/guild_Player.TrackStuckEvent.html @@ -0,0 +1,6 @@ +TrackStuckEvent | shoukaku

Interface TrackStuckEvent

interface TrackStuckEvent {
    guildId: string;
    op: EVENT;
    thresholdMs: number;
    track: Track;
    type: "TrackStuckEvent";
}

Hierarchy

Properties

Properties

guildId: string
op: EVENT
thresholdMs: number
track: Track
type: "TrackStuckEvent"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/guild_Player.WebSocketClosedEvent.html b/docs/interfaces/guild_Player.WebSocketClosedEvent.html new file mode 100644 index 00000000..7fa46efd --- /dev/null +++ b/docs/interfaces/guild_Player.WebSocketClosedEvent.html @@ -0,0 +1,7 @@ +WebSocketClosedEvent | shoukaku

Interface WebSocketClosedEvent

interface WebSocketClosedEvent {
    byRemote: boolean;
    code: number;
    guildId: string;
    op: EVENT;
    reason: string;
    type: "WebSocketClosedEvent";
}

Hierarchy

Properties

Properties

byRemote: boolean
code: number
guildId: string
op: EVENT
reason: string
type: "WebSocketClosedEvent"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/node_Node.NodeStats.html b/docs/interfaces/node_Node.NodeStats.html new file mode 100644 index 00000000..93bbce02 --- /dev/null +++ b/docs/interfaces/node_Node.NodeStats.html @@ -0,0 +1,7 @@ +NodeStats | shoukaku

Interface NodeStats

interface NodeStats {
    cpu: {
        cores: number;
        lavalinkLoad: number;
        systemLoad: number;
    };
    frameStats: {
        deficit: number;
        nulled: number;
        sent: number;
    };
    memory: {
        allocated: number;
        free: number;
        reservable: number;
        used: number;
    };
    players: number;
    playingPlayers: number;
    uptime: number;
}

Properties

cpu: {
    cores: number;
    lavalinkLoad: number;
    systemLoad: number;
}

Type declaration

  • cores: number
  • lavalinkLoad: number
  • systemLoad: number
frameStats: {
    deficit: number;
    nulled: number;
    sent: number;
}

Type declaration

  • deficit: number
  • nulled: number
  • sent: number
memory: {
    allocated: number;
    free: number;
    reservable: number;
    used: number;
}

Type declaration

  • allocated: number
  • free: number
  • reservable: number
  • used: number
players: number
playingPlayers: number
uptime: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/node_Node.NonResumableHeaders.html b/docs/interfaces/node_Node.NonResumableHeaders.html new file mode 100644 index 00000000..339ed9f4 --- /dev/null +++ b/docs/interfaces/node_Node.NonResumableHeaders.html @@ -0,0 +1 @@ +NonResumableHeaders | shoukaku

Interface NonResumableHeaders

interface NonResumableHeaders {}

Hierarchy

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/node_Node.ResumableHeaders.html b/docs/interfaces/node_Node.ResumableHeaders.html new file mode 100644 index 00000000..f1d9af57 --- /dev/null +++ b/docs/interfaces/node_Node.ResumableHeaders.html @@ -0,0 +1,6 @@ +ResumableHeaders | shoukaku

Interface ResumableHeaders

interface ResumableHeaders {
    Authorization: string;
    Client-Name: string;
    Session-Id: string;
    User-Agent: string;
    User-Id: string;
    [key: string]: string;
}

Indexable

[key: string]: string

Properties

Authorization: string
Client-Name: string
Session-Id: string
User-Agent: string
User-Id: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/node_Rest.Address.html b/docs/interfaces/node_Rest.Address.html new file mode 100644 index 00000000..9603a29a --- /dev/null +++ b/docs/interfaces/node_Rest.Address.html @@ -0,0 +1,4 @@ +Address | shoukaku

Interface Address

interface Address {
    address: string;
    failingTime: string;
    failingTimestamp: number;
}

Properties

address: string
failingTime: string
failingTimestamp: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/node_Rest.EmptyResult.html b/docs/interfaces/node_Rest.EmptyResult.html new file mode 100644 index 00000000..7fbc755d --- /dev/null +++ b/docs/interfaces/node_Rest.EmptyResult.html @@ -0,0 +1,3 @@ +EmptyResult | shoukaku

Interface EmptyResult

interface EmptyResult {
    data: {};
    loadType: EMPTY;
}

Properties

Properties

data: {}

Type declaration

    loadType: EMPTY

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.ErrorResult.html b/docs/interfaces/node_Rest.ErrorResult.html new file mode 100644 index 00000000..9516dd8c --- /dev/null +++ b/docs/interfaces/node_Rest.ErrorResult.html @@ -0,0 +1,3 @@ +ErrorResult | shoukaku

    Interface ErrorResult

    interface ErrorResult {
        data: Exception;
        loadType: ERROR;
    }

    Properties

    Properties

    data: Exception
    loadType: ERROR

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.Exception.html b/docs/interfaces/node_Rest.Exception.html new file mode 100644 index 00000000..4f1dd426 --- /dev/null +++ b/docs/interfaces/node_Rest.Exception.html @@ -0,0 +1,4 @@ +Exception | shoukaku

    Interface Exception

    interface Exception {
        cause: string;
        message: string;
        severity: Severity;
    }

    Properties

    Properties

    cause: string
    message: string
    severity: Severity

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.LavalinkPlayer.html b/docs/interfaces/node_Rest.LavalinkPlayer.html new file mode 100644 index 00000000..f504c2e3 --- /dev/null +++ b/docs/interfaces/node_Rest.LavalinkPlayer.html @@ -0,0 +1,7 @@ +LavalinkPlayer | shoukaku

    Interface LavalinkPlayer

    interface LavalinkPlayer {
        filters: FilterOptions;
        guildId: string;
        paused: boolean;
        track?: Track;
        voice: LavalinkPlayerVoice;
        volume: number;
    }

    Properties

    filters: FilterOptions
    guildId: string
    paused: boolean
    track?: Track
    volume: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.LavalinkPlayerVoice.html b/docs/interfaces/node_Rest.LavalinkPlayerVoice.html new file mode 100644 index 00000000..d68a3445 --- /dev/null +++ b/docs/interfaces/node_Rest.LavalinkPlayerVoice.html @@ -0,0 +1,6 @@ +LavalinkPlayerVoice | shoukaku

    Interface LavalinkPlayerVoice

    interface LavalinkPlayerVoice {
        connected?: boolean;
        endpoint: string;
        ping?: number;
        sessionId: string;
        token: string;
    }

    Properties

    connected?: boolean
    endpoint: string
    ping?: number
    sessionId: string
    token: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.LavalinkPlayerVoiceOptions.html b/docs/interfaces/node_Rest.LavalinkPlayerVoiceOptions.html new file mode 100644 index 00000000..53a7fbd7 --- /dev/null +++ b/docs/interfaces/node_Rest.LavalinkPlayerVoiceOptions.html @@ -0,0 +1,4 @@ +LavalinkPlayerVoiceOptions | shoukaku

    Interface LavalinkPlayerVoiceOptions

    interface LavalinkPlayerVoiceOptions {
        endpoint: string;
        sessionId: string;
        token: string;
    }

    Hierarchy

    Properties

    Properties

    endpoint: string
    sessionId: string
    token: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.Playlist.html b/docs/interfaces/node_Rest.Playlist.html new file mode 100644 index 00000000..1751116c --- /dev/null +++ b/docs/interfaces/node_Rest.Playlist.html @@ -0,0 +1,5 @@ +Playlist | shoukaku

    Interface Playlist

    interface Playlist {
        encoded: string;
        info: {
            name: string;
            selectedTrack: number;
        };
        pluginInfo: unknown;
        tracks: Track[];
    }

    Properties

    Properties

    encoded: string
    info: {
        name: string;
        selectedTrack: number;
    }

    Type declaration

    • name: string
    • selectedTrack: number
    pluginInfo: unknown
    tracks: Track[]

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.PlaylistResult.html b/docs/interfaces/node_Rest.PlaylistResult.html new file mode 100644 index 00000000..56491be7 --- /dev/null +++ b/docs/interfaces/node_Rest.PlaylistResult.html @@ -0,0 +1,3 @@ +PlaylistResult | shoukaku

    Interface PlaylistResult

    interface PlaylistResult {
        data: Playlist;
        loadType: PLAYLIST;
    }

    Properties

    Properties

    data: Playlist
    loadType: PLAYLIST

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.RoutePlanner.html b/docs/interfaces/node_Rest.RoutePlanner.html new file mode 100644 index 00000000..00806a8c --- /dev/null +++ b/docs/interfaces/node_Rest.RoutePlanner.html @@ -0,0 +1,3 @@ +RoutePlanner | shoukaku

    Interface RoutePlanner

    interface RoutePlanner {
        class: null | "RotatingIpRoutePlanner" | "NanoIpRoutePlanner" | "RotatingNanoIpRoutePlanner" | "BalancingIpRoutePlanner";
        details: null | {
            blockIndex: string;
            currentAddress: string;
            currentAddressIndex: string;
            failingAddresses: Address[];
            ipBlock: {
                size: string;
                type: string;
            };
            ipIndex: string;
            rotateIndex: string;
        };
    }

    Properties

    Properties

    class: null | "RotatingIpRoutePlanner" | "NanoIpRoutePlanner" | "RotatingNanoIpRoutePlanner" | "BalancingIpRoutePlanner"
    details: null | {
        blockIndex: string;
        currentAddress: string;
        currentAddressIndex: string;
        failingAddresses: Address[];
        ipBlock: {
            size: string;
            type: string;
        };
        ipIndex: string;
        rotateIndex: string;
    }

    Type declaration

    • blockIndex: string
    • currentAddress: string
    • currentAddressIndex: string
    • failingAddresses: Address[]
    • ipBlock: {
          size: string;
          type: string;
      }
      • size: string
      • type: string
    • ipIndex: string
    • rotateIndex: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.SearchResult.html b/docs/interfaces/node_Rest.SearchResult.html new file mode 100644 index 00000000..5912b4f6 --- /dev/null +++ b/docs/interfaces/node_Rest.SearchResult.html @@ -0,0 +1,3 @@ +SearchResult | shoukaku

    Interface SearchResult

    interface SearchResult {
        data: Track[];
        loadType: SEARCH;
    }

    Properties

    Properties

    data: Track[]
    loadType: SEARCH

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.SessionInfo.html b/docs/interfaces/node_Rest.SessionInfo.html new file mode 100644 index 00000000..afdca1cf --- /dev/null +++ b/docs/interfaces/node_Rest.SessionInfo.html @@ -0,0 +1,3 @@ +SessionInfo | shoukaku

    Interface SessionInfo

    interface SessionInfo {
        resumingKey?: string;
        timeout: number;
    }

    Properties

    Properties

    resumingKey?: string
    timeout: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.Track.html b/docs/interfaces/node_Rest.Track.html new file mode 100644 index 00000000..83096486 --- /dev/null +++ b/docs/interfaces/node_Rest.Track.html @@ -0,0 +1,4 @@ +Track | shoukaku

    Interface Track

    interface Track {
        encoded: string;
        info: {
            artworkUrl?: string;
            author: string;
            identifier: string;
            isSeekable: boolean;
            isStream: boolean;
            isrc?: string;
            length: number;
            position: number;
            sourceName: string;
            title: string;
            uri?: string;
        };
        pluginInfo: unknown;
    }

    Properties

    Properties

    encoded: string
    info: {
        artworkUrl?: string;
        author: string;
        identifier: string;
        isSeekable: boolean;
        isStream: boolean;
        isrc?: string;
        length: number;
        position: number;
        sourceName: string;
        title: string;
        uri?: string;
    }

    Type declaration

    • Optional artworkUrl?: string
    • author: string
    • identifier: string
    • isSeekable: boolean
    • isStream: boolean
    • Optional isrc?: string
    • length: number
    • position: number
    • sourceName: string
    • title: string
    • Optional uri?: string
    pluginInfo: unknown

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.TrackResult.html b/docs/interfaces/node_Rest.TrackResult.html new file mode 100644 index 00000000..69447500 --- /dev/null +++ b/docs/interfaces/node_Rest.TrackResult.html @@ -0,0 +1,3 @@ +TrackResult | shoukaku

    Interface TrackResult

    interface TrackResult {
        data: Track;
        loadType: TRACK;
    }

    Properties

    Properties

    data: Track
    loadType: TRACK

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.UpdatePlayerInfo.html b/docs/interfaces/node_Rest.UpdatePlayerInfo.html new file mode 100644 index 00000000..0505ab5e --- /dev/null +++ b/docs/interfaces/node_Rest.UpdatePlayerInfo.html @@ -0,0 +1,4 @@ +UpdatePlayerInfo | shoukaku

    Interface UpdatePlayerInfo

    interface UpdatePlayerInfo {
        guildId: string;
        noReplace?: boolean;
        playerOptions: UpdatePlayerOptions;
    }

    Properties

    guildId: string
    noReplace?: boolean
    playerOptions: UpdatePlayerOptions

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/node_Rest.UpdatePlayerOptions.html b/docs/interfaces/node_Rest.UpdatePlayerOptions.html new file mode 100644 index 00000000..ff0da444 --- /dev/null +++ b/docs/interfaces/node_Rest.UpdatePlayerOptions.html @@ -0,0 +1,9 @@ +UpdatePlayerOptions | shoukaku

    Interface UpdatePlayerOptions

    interface UpdatePlayerOptions {
        encodedTrack?: null | string;
        endTime?: number;
        filters?: FilterOptions;
        identifier?: string;
        paused?: boolean;
        position?: number;
        voice?: LavalinkPlayerVoiceOptions;
        volume?: number;
    }

    Properties

    encodedTrack?: null | string
    endTime?: number
    filters?: FilterOptions
    identifier?: string
    paused?: boolean
    position?: number
    volume?: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/Constants.html b/docs/modules/Constants.html new file mode 100644 index 00000000..6390c539 --- /dev/null +++ b/docs/modules/Constants.html @@ -0,0 +1,7 @@ +Constants | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/Shoukaku.html b/docs/modules/Shoukaku.html new file mode 100644 index 00000000..4186a16e --- /dev/null +++ b/docs/modules/Shoukaku.html @@ -0,0 +1,6 @@ +Shoukaku | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/Utils.html b/docs/modules/Utils.html new file mode 100644 index 00000000..fc682e32 --- /dev/null +++ b/docs/modules/Utils.html @@ -0,0 +1,4 @@ +Utils | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/connectors_Connector.html b/docs/modules/connectors_Connector.html new file mode 100644 index 00000000..f9bcac41 --- /dev/null +++ b/docs/modules/connectors_Connector.html @@ -0,0 +1,4 @@ +connectors/Connector | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/connectors_libs.html b/docs/modules/connectors_libs.html new file mode 100644 index 00000000..c34e030d --- /dev/null +++ b/docs/modules/connectors_libs.html @@ -0,0 +1,4 @@ +connectors/libs | shoukaku

    Module connectors/libs

    References

    References

    Re-exports DiscordJS
    Re-exports Eris
    Re-exports OceanicJS

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/connectors_libs_DiscordJS.html b/docs/modules/connectors_libs_DiscordJS.html new file mode 100644 index 00000000..841d7b31 --- /dev/null +++ b/docs/modules/connectors_libs_DiscordJS.html @@ -0,0 +1,2 @@ +connectors/libs/DiscordJS | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/connectors_libs_Eris.html b/docs/modules/connectors_libs_Eris.html new file mode 100644 index 00000000..378f02e2 --- /dev/null +++ b/docs/modules/connectors_libs_Eris.html @@ -0,0 +1,2 @@ +connectors/libs/Eris | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/connectors_libs_OceanicJS.html b/docs/modules/connectors_libs_OceanicJS.html new file mode 100644 index 00000000..af6ab0a1 --- /dev/null +++ b/docs/modules/connectors_libs_OceanicJS.html @@ -0,0 +1,2 @@ +connectors/libs/OceanicJS | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/guild_Connection.html b/docs/modules/guild_Connection.html new file mode 100644 index 00000000..ee2c9b27 --- /dev/null +++ b/docs/modules/guild_Connection.html @@ -0,0 +1,4 @@ +guild/Connection | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/guild_Player.html b/docs/modules/guild_Player.html new file mode 100644 index 00000000..e514a1b2 --- /dev/null +++ b/docs/modules/guild_Player.html @@ -0,0 +1,22 @@ +guild/Player | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/node_Node.html b/docs/modules/node_Node.html new file mode 100644 index 00000000..6a6f6e5d --- /dev/null +++ b/docs/modules/node_Node.html @@ -0,0 +1,6 @@ +node/Node | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules/node_Rest.html b/docs/modules/node_Rest.html new file mode 100644 index 00000000..90552c9e --- /dev/null +++ b/docs/modules/node_Rest.html @@ -0,0 +1,21 @@ +node/Rest | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/Utils.Constructor.html b/docs/types/Utils.Constructor.html new file mode 100644 index 00000000..2e696317 --- /dev/null +++ b/docs/types/Utils.Constructor.html @@ -0,0 +1 @@ +Constructor | shoukaku

    Type alias Constructor<T>

    Constructor<T>: (new (...args) => T)

    Type Parameters

    • T

    Type declaration

      • new (...args): T
      • Parameters

        • Rest ...args: any[]

        Returns T

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/guild_Player.PlayerEventType.html b/docs/types/guild_Player.PlayerEventType.html new file mode 100644 index 00000000..8e30dd5c --- /dev/null +++ b/docs/types/guild_Player.PlayerEventType.html @@ -0,0 +1 @@ +PlayerEventType | shoukaku

    Type alias PlayerEventType

    PlayerEventType: "TrackStartEvent" | "TrackEndEvent" | "TrackExceptionEvent" | "TrackStuckEvent" | "WebSocketClosedEvent"

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/guild_Player.TrackEndReason.html b/docs/types/guild_Player.TrackEndReason.html new file mode 100644 index 00000000..42420485 --- /dev/null +++ b/docs/types/guild_Player.TrackEndReason.html @@ -0,0 +1 @@ +TrackEndReason | shoukaku

    Type alias TrackEndReason

    TrackEndReason: "finished" | "loadFailed" | "stopped" | "replaced" | "cleanup"

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/node_Node.NodeInfo.html b/docs/types/node_Node.NodeInfo.html new file mode 100644 index 00000000..54bda85f --- /dev/null +++ b/docs/types/node_Node.NodeInfo.html @@ -0,0 +1 @@ +NodeInfo | shoukaku

    Type alias NodeInfo

    NodeInfo: {
        buildTime: number;
        filters: string[];
        git: NodeInfoGit;
        jvm: string;
        lavaplayer: string;
        plugins: NodeInfoPlugin[];
        sourceManagers: string[];
        version: NodeInfoVersion;
    }

    Type declaration

    • buildTime: number
    • filters: string[]
    • git: NodeInfoGit
    • jvm: string
    • lavaplayer: string
    • plugins: NodeInfoPlugin[]
    • sourceManagers: string[]
    • version: NodeInfoVersion

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/node_Rest.LavalinkResponse.html b/docs/types/node_Rest.LavalinkResponse.html new file mode 100644 index 00000000..29ecd02d --- /dev/null +++ b/docs/types/node_Rest.LavalinkResponse.html @@ -0,0 +1 @@ +LavalinkResponse | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/node_Rest.Severity.html b/docs/types/node_Rest.Severity.html new file mode 100644 index 00000000..a58b13dd --- /dev/null +++ b/docs/types/node_Rest.Severity.html @@ -0,0 +1 @@ +Severity | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/Constants.NodeDefaults.html b/docs/variables/Constants.NodeDefaults.html new file mode 100644 index 00000000..6c5937bb --- /dev/null +++ b/docs/variables/Constants.NodeDefaults.html @@ -0,0 +1 @@ +NodeDefaults | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/Constants.ShoukakuDefaults.html b/docs/variables/Constants.ShoukakuDefaults.html new file mode 100644 index 00000000..051675df --- /dev/null +++ b/docs/variables/Constants.ShoukakuDefaults.html @@ -0,0 +1 @@ +ShoukakuDefaults | shoukaku

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/connectors_Connector.AllowedPackets.html b/docs/variables/connectors_Connector.AllowedPackets.html new file mode 100644 index 00000000..9d135807 --- /dev/null +++ b/docs/variables/connectors_Connector.AllowedPackets.html @@ -0,0 +1 @@ +AllowedPackets | shoukaku

    Generated using TypeDoc

    \ No newline at end of file