Skip to content

Commit 3c3dbe5

Browse files
author
Will Nelson
committed
feat(typings): add node type parameters
1 parent ea3fe5b commit 3c3dbe5

File tree

4 files changed

+12
-12
lines changed

4 files changed

+12
-12
lines changed

Diff for: src/base/Node.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export default abstract class BaseNode extends EventEmitter {
4141
public shardCount?: number;
4242

4343
public connection?: Connection;
44-
public players: PlayerStore = new PlayerStore(this);
44+
public players: PlayerStore<this> = new PlayerStore(this);
4545
public http?: Http;
4646

4747
public voiceStates: Map<string, string> = new Map();

Diff for: src/core/Connection.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ export interface Options extends WebSocket.ClientOptions {
2121
resumeTimeout?: number;
2222
}
2323

24-
export default class Connection {
25-
public readonly node: Node;
24+
export default class Connection<T extends Node = Node> {
25+
public readonly node: T;
2626
public url: string;
2727
public options: Options;
2828
public resumeKey?: string;
@@ -68,8 +68,8 @@ export default class Connection {
6868

6969
private _queue: Array<Sendable> = [];
7070

71-
constructor(client: Node, url: string, options: Options = {}) {
72-
this.node = client;
71+
constructor(node: T, url: string, options: Options = {}) {
72+
this.node = node;
7373
this.url = url;
7474
this.options = options;
7575
this.resumeKey = options.resumeKey;

Diff for: src/core/Player.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ export interface JoinOptions {
3535
deaf?: boolean;
3636
}
3737

38-
export default class Player extends EventEmitter {
39-
public readonly node: Node;
38+
export default class Player<T extends Node = Node> extends EventEmitter {
39+
public readonly node: T;
4040
public guildID: string;
4141
public status: Status = Status.INSTANTIATED;
4242

43-
constructor(node: Node, guildID: string) {
43+
constructor(node: T, guildID: string) {
4444
super();
4545
this.node = node;
4646
this.guildID = guildID;

Diff for: src/core/PlayerStore.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import Player from './Player';
22
import Node from '../base/Node';
33

4-
export default class PlayerStore extends Map<string, Player> {
5-
public readonly node: Node;
4+
export default class PlayerStore<T extends Node = Node> extends Map<string, Player<T>> {
5+
public readonly node: T;
66

7-
constructor(node: Node) {
7+
constructor(node: T) {
88
super();
99
this.node = node;
1010
}
1111

12-
public get(key: string): Player {
12+
public get(key: string): Player<T> {
1313
let player = super.get(key);
1414
if (!player) {
1515
player = new Player(this.node, key);

0 commit comments

Comments
 (0)