topsyde-utils 1.0.77 → 1.0.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/server/bun/websocket/Channel.d.ts +8 -8
- package/dist/server/bun/websocket/Channel.js +31 -13
- package/dist/server/bun/websocket/Channel.js.map +1 -1
- package/dist/server/bun/websocket/Client.d.ts +7 -7
- package/dist/server/bun/websocket/Client.js +14 -0
- package/dist/server/bun/websocket/Client.js.map +1 -1
- package/dist/server/bun/websocket/Websocket.d.ts +12 -5
- package/dist/server/bun/websocket/Websocket.js +26 -23
- package/dist/server/bun/websocket/Websocket.js.map +1 -1
- package/dist/server/bun/websocket/websocket.types.d.ts +11 -7
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
@@ -40,5 +40,6 @@ export { ClassConstructor, NonNullableType, ObjectKeys, KVObj, I_ApplicationResp
|
|
40
40
|
export { E_IS, E_ENVIRONMENTS } from "./enums";
|
41
41
|
export { ControllerResponse, ControllerAction, ControllerMap, ControllerOptions } from "./server/controller";
|
42
42
|
export { Routes } from "./server/bun/router/routes";
|
43
|
+
export { I_WebsocketConstructor } from "./server/bun/websocket/Websocket";
|
43
44
|
export { E_WebsocketMessageType } from "./server/bun/websocket/websocket.enums";
|
44
45
|
export { WebsocketMessage, WebsocketChannel, WebsocketStructuredMessage, WebsocketClientData, I_WebsocketEntity, I_WebsocketClient, I_WebsocketChannel, I_WebsocketInterface, } from "./server/bun/websocket/websocket.types";
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;;;;;;;;;;;;;;;AAEjC,qBAAqB;AACrB,2CAAyB;AACzB,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B;AAC9B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,sDAAoC;AACpC,6DAA2C;AAC3C,6DAA2C;AAC3C,sEAAoD;AACpD,0EAAwD;AACxD,gEAA8C;AAC9C,mEAAiD;AACjD,yEAAuD;AACvD,yEAAuD;AACvD,iEAA+C;AAC/C,iDAA+B;AAC/B,8CAA4B;AAC5B,kDAAgC;AAEhC,yBAAyB;AACzB,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,kDAA4D;AAAnD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,iHAAA,OAAO,OAAU;AAC1B,uEAAiF;AAAxE,mIAAA,OAAO,OAAmB;AACnC,wDAAkE;AAAzD,iHAAA,OAAO,OAAU;AAC1B,8DAAwE;AAA/D,uHAAA,OAAO,OAAa;AAC7B,0DAAoE;AAA3D,mHAAA,OAAO,OAAW;AAC3B,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,mCAA6C;AAApC,2GAAA,OAAO,OAAO;AACvB,2CAAqD;AAA5C,mHAAA,OAAO,OAAW;AAE3B,sDAAsD;AACtD,mCAAsE;AAA7D,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,uGAAA,aAAa,OAAA;AAEnD,6CAAuE;AAA9D,4GAAA,aAAa,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAC/C,mCAAyE;AAAhE,gHAAA,sBAAsB,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,mGAAA,SAAS,OAAA;AAEtD,iCAA+C;AAAtC,6FAAA,IAAI,OAAA;AAAE,uGAAA,cAAc,OAAA;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;;;;;;;;;;;;;;;AAEjC,qBAAqB;AACrB,2CAAyB;AACzB,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B;AAC9B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,0CAAwB;AACxB,sDAAoC;AACpC,6DAA2C;AAC3C,6DAA2C;AAC3C,sEAAoD;AACpD,0EAAwD;AACxD,gEAA8C;AAC9C,mEAAiD;AACjD,yEAAuD;AACvD,yEAAuD;AACvD,iEAA+C;AAC/C,iDAA+B;AAC/B,8CAA4B;AAC5B,kDAAgC;AAEhC,yBAAyB;AACzB,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,kDAA4D;AAAnD,yHAAA,OAAO,OAAc;AAC9B,qDAA+D;AAAtD,iHAAA,OAAO,OAAU;AAC1B,uEAAiF;AAAxE,mIAAA,OAAO,OAAmB;AACnC,wDAAkE;AAAzD,iHAAA,OAAO,OAAU;AAC1B,8DAAwE;AAA/D,uHAAA,OAAO,OAAa;AAC7B,0DAAoE;AAA3D,mHAAA,OAAO,OAAW;AAC3B,yCAAmD;AAA1C,iHAAA,OAAO,OAAU;AAC1B,mCAA6C;AAApC,2GAAA,OAAO,OAAO;AACvB,2CAAqD;AAA5C,mHAAA,OAAO,OAAW;AAE3B,sDAAsD;AACtD,mCAAsE;AAA7D,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,uGAAA,aAAa,OAAA;AAEnD,6CAAuE;AAA9D,4GAAA,aAAa,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAC/C,mCAAyE;AAAhE,gHAAA,sBAAsB,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,mGAAA,SAAS,OAAA;AAEtD,iCAA+C;AAAtC,6FAAA,IAAI,OAAA;AAAE,uGAAA,cAAc,OAAA;AAI7B,0EAAgF;AAAvE,yHAAA,sBAAsB,OAAA"}
|
@@ -1,19 +1,18 @@
|
|
1
|
-
import
|
2
|
-
import type { I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, WebsocketStructuredMessage } from "./websocket.types";
|
1
|
+
import type { I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, WebsocketChannel, WebsocketStructuredMessage } from "./websocket.types";
|
3
2
|
export default class Channel implements I_WebsocketChannel {
|
4
3
|
createdAt: Date;
|
5
4
|
id: string;
|
6
5
|
name: string;
|
7
6
|
limit: number;
|
8
|
-
members: Map<string,
|
7
|
+
members: Map<string, I_WebsocketClient>;
|
9
8
|
metadata: Record<string, string>;
|
10
|
-
constructor(id: string, name: string, limit?: number, members?: Map<string,
|
11
|
-
addMember(entity: I_WebsocketEntity): false | Client;
|
12
|
-
removeMember(entity: I_WebsocketEntity): false | Client;
|
9
|
+
constructor(id: string, name: string, limit?: number, members?: Map<string, I_WebsocketClient>, metadata?: Record<string, string>);
|
13
10
|
broadcast(message: WebsocketStructuredMessage): void;
|
14
11
|
hasMember(client: I_WebsocketEntity | string): boolean;
|
15
|
-
|
16
|
-
|
12
|
+
addMember(client: I_WebsocketClient): false | I_WebsocketClient;
|
13
|
+
removeMember(entity: I_WebsocketEntity): false | I_WebsocketClient;
|
14
|
+
getMember(client: I_WebsocketEntity | string): I_WebsocketClient | undefined;
|
15
|
+
getMembers(clients?: string[] | I_WebsocketEntity[]): I_WebsocketClient[];
|
17
16
|
getMetadata(): Record<string, string>;
|
18
17
|
getCreatedAt(): Date;
|
19
18
|
getId(): string;
|
@@ -21,4 +20,5 @@ export default class Channel implements I_WebsocketChannel {
|
|
21
20
|
getLimit(): number;
|
22
21
|
getSize(): number;
|
23
22
|
canAddMember(): boolean;
|
23
|
+
static GetChannelType(channels: WebsocketChannel<I_WebsocketChannel> | undefined): typeof Channel;
|
24
24
|
}
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const
|
6
|
+
const utils_1 = require("../../../utils");
|
7
7
|
const Websocket_1 = __importDefault(require("./Websocket"));
|
8
8
|
class Channel {
|
9
9
|
constructor(id, name, limit, members, metadata) {
|
@@ -14,10 +14,17 @@ class Channel {
|
|
14
14
|
this.members = members ?? new Map();
|
15
15
|
this.metadata = metadata ?? {};
|
16
16
|
}
|
17
|
-
|
17
|
+
broadcast(message) {
|
18
|
+
Websocket_1.default.Broadcast(this.id, message);
|
19
|
+
}
|
20
|
+
hasMember(client) {
|
21
|
+
if (typeof client === "string")
|
22
|
+
return this.members.has(client);
|
23
|
+
return this.members.has(client.id);
|
24
|
+
}
|
25
|
+
addMember(client) {
|
18
26
|
if (!this.canAddMember())
|
19
27
|
return false;
|
20
|
-
const client = new Client_1.default(entity);
|
21
28
|
this.members.set(client.id, client);
|
22
29
|
client.joinChannel(this);
|
23
30
|
return client;
|
@@ -32,21 +39,15 @@ class Channel {
|
|
32
39
|
this.members.delete(entity.id);
|
33
40
|
return client;
|
34
41
|
}
|
35
|
-
broadcast(message) {
|
36
|
-
Websocket_1.default.Broadcast(this.id, message);
|
37
|
-
}
|
38
|
-
hasMember(client) {
|
39
|
-
if (typeof client === "string")
|
40
|
-
return this.members.has(client);
|
41
|
-
return this.members.has(client.id);
|
42
|
-
}
|
43
42
|
getMember(client) {
|
44
43
|
if (typeof client === "string")
|
45
44
|
return this.members.get(client);
|
46
45
|
return this.members.get(client.id);
|
47
46
|
}
|
48
|
-
getMembers() {
|
49
|
-
|
47
|
+
getMembers(clients) {
|
48
|
+
if (!clients)
|
49
|
+
return Array.from(this.members.values());
|
50
|
+
return clients.map((client) => this.getMember(client)).filter((client) => client !== undefined);
|
50
51
|
}
|
51
52
|
getMetadata() {
|
52
53
|
return this.metadata;
|
@@ -70,6 +71,23 @@ class Channel {
|
|
70
71
|
const size = this.getSize();
|
71
72
|
return size < this.limit;
|
72
73
|
}
|
74
|
+
static GetChannelType(channels) {
|
75
|
+
if (!channels)
|
76
|
+
return Channel;
|
77
|
+
if (channels.size > 0) {
|
78
|
+
const firstChannel = channels.values().next().value;
|
79
|
+
if (firstChannel) {
|
80
|
+
return firstChannel.constructor;
|
81
|
+
}
|
82
|
+
else {
|
83
|
+
return Channel;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
else {
|
87
|
+
utils_1.Lib.Warn("Channels are empty, using default channel class");
|
88
|
+
return Channel;
|
89
|
+
}
|
90
|
+
}
|
73
91
|
}
|
74
92
|
exports.default = Channel;
|
75
93
|
//# sourceMappingURL=Channel.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":";;;;;AAAA,
|
1
|
+
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { ServerWebSocket } from "bun";
|
2
|
-
import
|
3
|
-
import type { I_WebsocketClient, WebsocketClientData, WebsocketChannel, WebsocketStructuredMessage, I_WebsocketEntity } from "./websocket.types";
|
2
|
+
import type { I_WebsocketClient, WebsocketClientData, WebsocketChannel, WebsocketStructuredMessage, I_WebsocketEntity, I_WebsocketChannel } from "./websocket.types";
|
4
3
|
export default class Client implements I_WebsocketClient {
|
5
4
|
private _id;
|
6
5
|
private _name;
|
@@ -13,12 +12,12 @@ export default class Client implements I_WebsocketClient {
|
|
13
12
|
get name(): string;
|
14
13
|
private set name(value);
|
15
14
|
private set channels(value);
|
16
|
-
get channels(): WebsocketChannel
|
15
|
+
get channels(): WebsocketChannel<I_WebsocketChannel>;
|
17
16
|
constructor(entity: I_WebsocketEntity);
|
18
|
-
joinChannel(channel:
|
19
|
-
leaveChannel(channel:
|
20
|
-
joinChannels(channels:
|
21
|
-
leaveChannels(channels?:
|
17
|
+
joinChannel(channel: I_WebsocketChannel, send?: boolean): void;
|
18
|
+
leaveChannel(channel: I_WebsocketChannel, send?: boolean): void;
|
19
|
+
joinChannels(channels: I_WebsocketChannel[], send?: boolean): void;
|
20
|
+
leaveChannels(channels?: I_WebsocketChannel[], send?: boolean): void;
|
22
21
|
whoami(): {
|
23
22
|
id: string;
|
24
23
|
name: string;
|
@@ -26,4 +25,5 @@ export default class Client implements I_WebsocketClient {
|
|
26
25
|
send(message: WebsocketStructuredMessage): void;
|
27
26
|
subscribe(channel: string): void;
|
28
27
|
unsubscribe(channel: string): void;
|
28
|
+
static GetClientType(clients: Map<string, I_WebsocketClient> | undefined): typeof Client;
|
29
29
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
const websocket_enums_1 = require("./websocket.enums");
|
4
|
+
const utils_1 = require("../../../utils");
|
4
5
|
class Client {
|
5
6
|
set ws(value) {
|
6
7
|
this._ws = value;
|
@@ -75,6 +76,19 @@ class Client {
|
|
75
76
|
unsubscribe(channel) {
|
76
77
|
this.ws.unsubscribe(channel);
|
77
78
|
}
|
79
|
+
static GetClientType(clients) {
|
80
|
+
if (!clients)
|
81
|
+
return Client;
|
82
|
+
if (clients.size > 0) {
|
83
|
+
const firstClient = clients.values().next().value;
|
84
|
+
if (firstClient) {
|
85
|
+
return firstClient.constructor;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
// Fallback to default Client class
|
89
|
+
utils_1.Lib.Warn("Clients map is empty, using default client class");
|
90
|
+
return Client;
|
91
|
+
}
|
78
92
|
}
|
79
93
|
exports.default = Client;
|
80
94
|
//# sourceMappingURL=Client.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Client.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Client.ts"],"names":[],"mappings":";;AAEA,uDAA2D;AAC3D,0CAAqC;AAErC,MAAqB,MAAM;IAM1B,IAAY,EAAE,CAAC,KAA2C;QACzD,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;IAClB,CAAC;IAED,IAAW,EAAE;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,IAAY,EAAE,CAAC,KAAa;QAC3B,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;IAClB,CAAC;IAED,IAAW,EAAE;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,IAAY,IAAI,CAAC,KAAa;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAY,QAAQ,CAAC,KAA2C;QAC/D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,YAAY,MAAyB;QACpC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5B,CAAC;IAEM,WAAW,CAAC,OAA2B,EAAE,OAAgB,IAAI;QACnE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wCAAsB,CAAC,mBAAmB,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACpG,CAAC;IAEM,YAAY,CAAC,OAA2B,EAAE,OAAgB,IAAI;QACpE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wCAAsB,CAAC,oBAAoB,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACrG,CAAC;IAEM,YAAY,CAAC,QAA8B,EAAE,OAAgB,IAAI;QACvE,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wCAAsB,CAAC,oBAAoB,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnG,CAAC;IAEM,aAAa,CAAC,QAA+B,EAAE,OAAgB,IAAI;QACzE,IAAI,CAAC,QAAQ;YAAE,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wCAAsB,CAAC,qBAAqB,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACpG,CAAC;IAEM,MAAM;QACZ,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAEM,IAAI,CAAC,OAAmC;QAC9C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,CAAC;IAEM,SAAS,CAAC,OAAe;QAC/B,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEM,WAAW,CAAC,OAAe;QACjC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,OAAmD;QAC9E,IAAI,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC;QAC5B,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAClD,IAAI,WAAW,EAAE,CAAC;gBACjB,OAAO,WAAW,CAAC,WAA4B,CAAC;YACjD,CAAC;QACF,CAAC;QAED,mCAAmC;QACnC,WAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAxGD,yBAwGC"}
|
@@ -1,27 +1,34 @@
|
|
1
1
|
import { Server, ServerWebSocket, WebSocketHandler } from "bun";
|
2
2
|
import Singleton from "../../../singleton";
|
3
3
|
import Channel from "./Channel";
|
4
|
+
import Client from "./Client";
|
4
5
|
import type { I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, I_WebsocketInterface, WebsocketChannel, WebsocketClientData, WebsocketMessage, WebsocketStructuredMessage } from "./websocket.types";
|
6
|
+
export interface I_WebsocketConstructor {
|
7
|
+
ws_interface?: I_WebsocketInterface;
|
8
|
+
channels?: WebsocketChannel;
|
9
|
+
clientClass?: typeof Client;
|
10
|
+
channelClass?: typeof Channel;
|
11
|
+
}
|
5
12
|
export default class Websocket extends Singleton {
|
6
13
|
protected _channels: WebsocketChannel;
|
7
14
|
protected _clients: Map<string, I_WebsocketClient>;
|
8
15
|
private _server;
|
9
16
|
private _channelClass;
|
17
|
+
private _clientClass;
|
10
18
|
private _ws_interface?;
|
11
|
-
protected constructor(options?:
|
12
|
-
ws_interface?: I_WebsocketInterface;
|
13
|
-
channels?: WebsocketChannel;
|
14
|
-
});
|
19
|
+
protected constructor(options?: I_WebsocketConstructor);
|
15
20
|
private set server(value);
|
16
21
|
get server(): Server;
|
17
22
|
set(server: Server): void;
|
18
23
|
createChannel(id: string, name: string, limit?: number): I_WebsocketChannel;
|
24
|
+
removeChannel(id: string): void;
|
19
25
|
static CreateChannel(id: string, name: string, limit?: number): I_WebsocketChannel;
|
20
26
|
setup(): WebSocketHandler<WebsocketClientData>;
|
21
27
|
private clientMessageReceived;
|
22
28
|
private handleHeartbeat;
|
23
29
|
private clientConnected;
|
24
30
|
private clientDisconnected;
|
31
|
+
protected createClient(entity: I_WebsocketEntity): I_WebsocketClient;
|
25
32
|
static Heartbeat(ws: ServerWebSocket<WebsocketClientData>, message: WebsocketMessage): boolean;
|
26
33
|
static Server(): Server;
|
27
34
|
static Broadcast(channel: string, message: WebsocketStructuredMessage): void;
|
@@ -34,5 +41,5 @@ export default class Websocket extends Singleton {
|
|
34
41
|
static GetClients(): I_WebsocketClient[];
|
35
42
|
static GetClientCount(): number;
|
36
43
|
static GetChannelCount(): number;
|
37
|
-
|
44
|
+
static CreateClient(entity: I_WebsocketEntity): I_WebsocketClient;
|
38
45
|
}
|
@@ -7,6 +7,7 @@ const singleton_1 = __importDefault(require("../../../singleton"));
|
|
7
7
|
const utils_1 = require("../../../utils");
|
8
8
|
const Console_1 = require("../../../utils/Console");
|
9
9
|
const Channel_1 = __importDefault(require("./Channel"));
|
10
|
+
const Client_1 = __importDefault(require("./Client"));
|
10
11
|
const websocket_enums_1 = require("./websocket.enums");
|
11
12
|
class Websocket extends singleton_1.default {
|
12
13
|
constructor(options) {
|
@@ -33,22 +34,25 @@ class Websocket extends singleton_1.default {
|
|
33
34
|
const global = this._channels.get("global");
|
34
35
|
if (!global)
|
35
36
|
throw new Error("Global channel not found");
|
36
|
-
const client =
|
37
|
-
if (!client)
|
38
|
-
throw new Error("Failed to add client to global channel");
|
37
|
+
const client = Websocket.CreateClient({ id: ws.data.id, ws: ws, name: ws.data.name });
|
39
38
|
this._clients.set(client.id, client);
|
39
|
+
global.addMember(client);
|
40
40
|
client.send({ type: websocket_enums_1.E_WebsocketMessageType.CLIENT_CONNECTED, content: { client: client.whoami() } });
|
41
41
|
};
|
42
42
|
this.clientDisconnected = (ws) => {
|
43
43
|
utils_1.Lib.Log("WebSocket connection closed");
|
44
|
+
const client = this._clients.get(ws.data.id);
|
45
|
+
if (!client)
|
46
|
+
return;
|
44
47
|
this._channels.forEach((channel) => {
|
45
|
-
channel.removeMember(
|
48
|
+
channel.removeMember(client);
|
46
49
|
});
|
47
50
|
this._clients.delete(ws.data.id);
|
48
51
|
};
|
49
52
|
this._ws_interface = options?.ws_interface;
|
50
53
|
this._channels = options?.channels ?? new Map();
|
51
|
-
this.
|
54
|
+
this._clientClass = options?.clientClass ?? Client_1.default;
|
55
|
+
this._channelClass = options?.channelClass ?? Channel_1.default.GetChannelType(options?.channels);
|
52
56
|
this.createChannel("global", "Global", 1000);
|
53
57
|
}
|
54
58
|
set server(value) {
|
@@ -68,6 +72,9 @@ class Websocket extends singleton_1.default {
|
|
68
72
|
this._channels.set(id, channel);
|
69
73
|
return channel;
|
70
74
|
}
|
75
|
+
removeChannel(id) {
|
76
|
+
this._channels.delete(id);
|
77
|
+
}
|
71
78
|
static CreateChannel(id, name, limit) {
|
72
79
|
const ws = this.GetInstance();
|
73
80
|
return ws.createChannel(id, name, limit);
|
@@ -79,6 +86,9 @@ class Websocket extends singleton_1.default {
|
|
79
86
|
close: this.clientDisconnected,
|
80
87
|
};
|
81
88
|
}
|
89
|
+
createClient(entity) {
|
90
|
+
return new this._clientClass(entity);
|
91
|
+
}
|
82
92
|
static Heartbeat(ws, message) {
|
83
93
|
const self = this.GetInstance();
|
84
94
|
return self.handleHeartbeat(ws, message);
|
@@ -100,11 +110,17 @@ class Websocket extends singleton_1.default {
|
|
100
110
|
}
|
101
111
|
static Join(channel, entity) {
|
102
112
|
const ws = this.GetInstance();
|
103
|
-
ws.
|
113
|
+
const client = ws._clients.get(entity.id);
|
114
|
+
if (!client)
|
115
|
+
return;
|
116
|
+
ws._channels.get(channel)?.addMember(client);
|
104
117
|
}
|
105
118
|
static Leave(channel, entity) {
|
106
119
|
const ws = this.GetInstance();
|
107
|
-
ws.
|
120
|
+
const client = ws._clients.get(entity.id);
|
121
|
+
if (!client)
|
122
|
+
return;
|
123
|
+
ws._channels.get(channel)?.removeMember(client);
|
108
124
|
}
|
109
125
|
static GetClient(id) {
|
110
126
|
const ws = this.GetInstance();
|
@@ -130,22 +146,9 @@ class Websocket extends singleton_1.default {
|
|
130
146
|
const ws = this.GetInstance();
|
131
147
|
return ws._channels.size;
|
132
148
|
}
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
if (channels.size > 0) {
|
137
|
-
const firstChannel = channels.values().next().value;
|
138
|
-
if (firstChannel) {
|
139
|
-
return firstChannel.constructor;
|
140
|
-
}
|
141
|
-
else {
|
142
|
-
return Channel_1.default;
|
143
|
-
}
|
144
|
-
}
|
145
|
-
else {
|
146
|
-
utils_1.Lib.Warn("Channels are empty, using default channel class");
|
147
|
-
return Channel_1.default;
|
148
|
-
}
|
149
|
+
static CreateClient(entity) {
|
150
|
+
const ws = this.GetInstance();
|
151
|
+
return ws.createClient(entity);
|
149
152
|
}
|
150
153
|
}
|
151
154
|
exports.default = Websocket;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":";;;;;AACA,mEAA2C;AAC3C,0CAAqC;AACrC,oDAAiD;AACjD,wDAAgC;
|
1
|
+
{"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":"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"}
|
@@ -18,10 +18,14 @@ export interface I_WebsocketEntity {
|
|
18
18
|
name: string;
|
19
19
|
}
|
20
20
|
export interface I_WebsocketClient extends I_WebsocketEntity {
|
21
|
-
channels: WebsocketChannel
|
22
|
-
send(message: WebsocketStructuredMessage):
|
23
|
-
subscribe(channel: string):
|
24
|
-
|
21
|
+
channels: WebsocketChannel<I_WebsocketChannel>;
|
22
|
+
send(message: WebsocketStructuredMessage): any;
|
23
|
+
subscribe(channel: string): any;
|
24
|
+
joinChannel(channel: I_WebsocketChannel, send?: boolean): void;
|
25
|
+
leaveChannel(channel: I_WebsocketChannel, send?: boolean): void;
|
26
|
+
joinChannels(channels: I_WebsocketChannel[], send?: boolean): void;
|
27
|
+
leaveChannels(channels?: I_WebsocketChannel[], send?: boolean): void;
|
28
|
+
unsubscribe(channel: string): any;
|
25
29
|
whoami(): WebsocketClientData;
|
26
30
|
}
|
27
31
|
export interface I_WebsocketChannel {
|
@@ -31,12 +35,12 @@ export interface I_WebsocketChannel {
|
|
31
35
|
members: Map<string, I_WebsocketClient>;
|
32
36
|
metadata: Record<string, string>;
|
33
37
|
createdAt: Date;
|
34
|
-
broadcast(message: WebsocketStructuredMessage):
|
38
|
+
broadcast(message: WebsocketStructuredMessage): any;
|
35
39
|
hasMember(client: I_WebsocketEntity | string): boolean;
|
36
|
-
addMember(entity:
|
40
|
+
addMember(entity: I_WebsocketClient): I_WebsocketClient | false;
|
37
41
|
removeMember(entity: I_WebsocketEntity): I_WebsocketClient | false;
|
38
42
|
getMember(client: I_WebsocketEntity | string): I_WebsocketClient | undefined;
|
39
|
-
getMembers(): I_WebsocketClient[];
|
43
|
+
getMembers(clients?: string[] | I_WebsocketEntity[]): I_WebsocketClient[];
|
40
44
|
getMetadata(): Record<string, string>;
|
41
45
|
getCreatedAt(): Date;
|
42
46
|
getId(): string;
|