topsyde-utils 1.0.72 → 1.0.74
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 -1
- package/dist/server/bun/websocket/Channel.d.ts +10 -10
- package/dist/server/bun/websocket/Channel.js.map +1 -1
- package/dist/server/bun/websocket/Websocket.d.ts +7 -3
- package/dist/server/bun/websocket/Websocket.js +31 -6
- package/dist/server/bun/websocket/Websocket.js.map +1 -1
- package/dist/server/bun/websocket/websocket.types.d.ts +22 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
@@ -39,4 +39,4 @@ export { ClassConstructor, NonNullableType, ObjectKeys, KVObj, I_ApplicationResp
|
|
39
39
|
export { E_IS, E_ENVIRONMENTS } from "./enums";
|
40
40
|
export { ControllerResponse, ControllerAction, ControllerMap, ControllerOptions } from "./server/controller";
|
41
41
|
export { Routes } from "./server/bun/router/routes";
|
42
|
-
export { WebsocketMessage, WebsocketChannel, WebsocketStructuredMessage, WebsocketClientData, I_WebsocketEntity, I_WebsocketClient, I_WebsocketInterface, } from "./server/bun/websocket/websocket.types";
|
42
|
+
export { WebsocketMessage, WebsocketChannel, WebsocketStructuredMessage, WebsocketClientData, I_WebsocketEntity, I_WebsocketClient, I_WebsocketChannel, I_WebsocketInterface, } from "./server/bun/websocket/websocket.types";
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import Client from "./Client";
|
2
|
-
import type { I_WebsocketClient, I_WebsocketEntity, WebsocketStructuredMessage } from "./websocket.types";
|
3
|
-
export default class Channel {
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
import type { I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, WebsocketStructuredMessage } from "./websocket.types";
|
3
|
+
export default class Channel implements I_WebsocketChannel {
|
4
|
+
createdAt: Date;
|
5
|
+
id: string;
|
6
|
+
name: string;
|
7
|
+
limit: number;
|
8
|
+
members: Map<string, Client>;
|
9
|
+
metadata: Record<string, string>;
|
10
10
|
constructor(id: string, name: string, limit?: number, members?: Map<string, Client>, metadata?: Record<string, string>);
|
11
11
|
addMember(entity: I_WebsocketEntity): false | Client;
|
12
12
|
removeMember(entity: I_WebsocketEntity): false | Client;
|
@@ -15,10 +15,10 @@ export default class Channel {
|
|
15
15
|
getMember(client: I_WebsocketEntity | string): Client | undefined;
|
16
16
|
getMembers(): I_WebsocketClient[];
|
17
17
|
getMetadata(): Record<string, string>;
|
18
|
-
getCreatedAt(): Date
|
18
|
+
getCreatedAt(): Date;
|
19
19
|
getId(): string;
|
20
20
|
getName(): string;
|
21
21
|
getLimit(): number;
|
22
22
|
getSize(): number;
|
23
|
-
|
23
|
+
canAddMember(): boolean;
|
24
24
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,4DAAoC;AAGpC,MAAqB,OAAO;IAQ3B,YAAY,EAAU,EAAE,IAAY,EAAE,KAAc,EAAE,OAA6B,EAAE,QAAiC;
|
1
|
+
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,4DAAoC;AAGpC,MAAqB,OAAO;IAQ3B,YAAY,EAAU,EAAE,IAAY,EAAE,KAAc,EAAE,OAA6B,EAAE,QAAiC;QAP/G,cAAS,GAAS,IAAI,IAAI,EAAE,CAAC;QAQnC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAChC,CAAC;IAEM,SAAS,CAAC,MAAyB;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO,KAAK,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,YAAY,CAAC,MAAyB;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,SAAS,CAAC,OAAmC;QACnD,mBAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEM,SAAS,CAAC,MAAkC;QAClD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,MAAkC;QAClD,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEM,UAAU;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEM,WAAW;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEM,YAAY;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAEM,KAAK;QACX,OAAO,IAAI,CAAC,EAAE,CAAC;IAChB,CAAC;IAEM,OAAO;QACb,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAEM,QAAQ;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAEM,OAAO;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1B,CAAC;IAEM,YAAY;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACD;AA/ED,0BA+EC"}
|
@@ -1,16 +1,19 @@
|
|
1
1
|
import { Server, ServerWebSocket, WebSocketHandler } from "bun";
|
2
2
|
import Singleton from "../../../singleton";
|
3
3
|
import Channel from "./Channel";
|
4
|
-
import type { I_WebsocketClient, I_WebsocketEntity, I_WebsocketInterface, WebsocketChannel, WebsocketClientData, WebsocketMessage, WebsocketStructuredMessage } from "./websocket.types";
|
4
|
+
import type { I_WebsocketChannel, I_WebsocketClient, I_WebsocketEntity, I_WebsocketInterface, WebsocketChannel, WebsocketClientData, WebsocketMessage, WebsocketStructuredMessage } from "./websocket.types";
|
5
5
|
export default class Websocket extends Singleton {
|
6
|
-
protected ws_interface?: I_WebsocketInterface | undefined;
|
7
6
|
protected _channels: WebsocketChannel;
|
8
7
|
protected _clients: Map<string, I_WebsocketClient>;
|
9
8
|
private _server;
|
10
|
-
|
9
|
+
private _channelClass;
|
10
|
+
private _ws_interface?;
|
11
|
+
protected constructor(ws_interface?: I_WebsocketInterface, channels?: WebsocketChannel);
|
11
12
|
private set server(value);
|
12
13
|
get server(): Server;
|
13
14
|
set(server: Server): void;
|
15
|
+
createChannel(id: string, name: string, limit?: number): I_WebsocketChannel;
|
16
|
+
static CreateChannel(id: string, name: string, limit?: number): I_WebsocketChannel;
|
14
17
|
setup(): WebSocketHandler<WebsocketClientData>;
|
15
18
|
private clientMessageReceived;
|
16
19
|
private handleHeartbeat;
|
@@ -28,4 +31,5 @@ export default class Websocket extends Singleton {
|
|
28
31
|
static GetClients(): I_WebsocketClient[];
|
29
32
|
static GetClientCount(): number;
|
30
33
|
static GetChannelCount(): number;
|
34
|
+
private getChannelClass;
|
31
35
|
}
|
@@ -8,15 +8,13 @@ const utils_1 = require("../../../utils");
|
|
8
8
|
const Console_1 = require("../../../utils/Console");
|
9
9
|
const Channel_1 = __importDefault(require("./Channel"));
|
10
10
|
class Websocket extends singleton_1.default {
|
11
|
-
constructor(ws_interface) {
|
11
|
+
constructor(ws_interface, channels) {
|
12
12
|
super();
|
13
|
-
this.ws_interface = ws_interface;
|
14
|
-
this._channels = new Map();
|
15
13
|
this._clients = new Map();
|
16
14
|
this.clientMessageReceived = (ws, message) => {
|
17
15
|
if (Websocket.Heartbeat(ws, message))
|
18
16
|
return;
|
19
|
-
const setup = this.
|
17
|
+
const setup = this._ws_interface?.setup(this._channels);
|
20
18
|
if (setup && setup.message)
|
21
19
|
return setup.message(ws, message);
|
22
20
|
ws.send("This is the message from the server: " + message);
|
@@ -47,8 +45,10 @@ class Websocket extends singleton_1.default {
|
|
47
45
|
});
|
48
46
|
this._clients.delete(ws.data.id);
|
49
47
|
};
|
50
|
-
|
51
|
-
this._channels
|
48
|
+
this._ws_interface = ws_interface;
|
49
|
+
this._channels = channels ?? new Map();
|
50
|
+
this._channelClass = this.getChannelClass(channels);
|
51
|
+
this.createChannel("global", "Global", 1000);
|
52
52
|
}
|
53
53
|
set server(value) {
|
54
54
|
this._server = value;
|
@@ -60,6 +60,17 @@ class Websocket extends singleton_1.default {
|
|
60
60
|
this.server = server;
|
61
61
|
Console_1.Console.success("Websocket server set");
|
62
62
|
}
|
63
|
+
createChannel(id, name, limit) {
|
64
|
+
if (this._channels.has(id))
|
65
|
+
return this._channels.get(id);
|
66
|
+
const channel = new this._channelClass(id, name, limit);
|
67
|
+
this._channels.set(id, channel);
|
68
|
+
return channel;
|
69
|
+
}
|
70
|
+
static CreateChannel(id, name, limit) {
|
71
|
+
const ws = this.GetInstance();
|
72
|
+
return ws.createChannel(id, name, limit);
|
73
|
+
}
|
63
74
|
setup() {
|
64
75
|
return {
|
65
76
|
open: this.clientConnected,
|
@@ -118,6 +129,20 @@ class Websocket extends singleton_1.default {
|
|
118
129
|
const ws = this.GetInstance();
|
119
130
|
return ws._channels.size;
|
120
131
|
}
|
132
|
+
getChannelClass(channels) {
|
133
|
+
if (channels && channels.size > 0) {
|
134
|
+
const firstChannel = channels.values().next().value;
|
135
|
+
if (firstChannel) {
|
136
|
+
return firstChannel.constructor;
|
137
|
+
}
|
138
|
+
else {
|
139
|
+
return Channel_1.default;
|
140
|
+
}
|
141
|
+
}
|
142
|
+
else {
|
143
|
+
return Channel_1.default;
|
144
|
+
}
|
145
|
+
}
|
121
146
|
}
|
122
147
|
exports.default = Websocket;
|
123
148
|
//# sourceMappingURL=Websocket.js.map
|
@@ -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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"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { ServerWebSocket, WebSocketHandler } from "bun";
|
2
2
|
import Channel from "./Channel";
|
3
3
|
export type WebsocketMessage = string | Buffer<ArrayBufferLike>;
|
4
|
-
export type WebsocketChannel<T extends
|
4
|
+
export type WebsocketChannel<T extends I_WebsocketChannel = Channel> = Map<string, T>;
|
5
5
|
export type WebsocketStructuredMessage = {
|
6
6
|
type: string;
|
7
7
|
content: any;
|
@@ -24,6 +24,27 @@ export interface I_WebsocketClient extends I_WebsocketEntity {
|
|
24
24
|
unsubscribe(channel: string): void;
|
25
25
|
whoami(): WebsocketClientData;
|
26
26
|
}
|
27
|
+
export interface I_WebsocketChannel {
|
28
|
+
id: string;
|
29
|
+
name: string;
|
30
|
+
limit: number;
|
31
|
+
members: Map<string, I_WebsocketClient>;
|
32
|
+
metadata: Record<string, string>;
|
33
|
+
createdAt: Date;
|
34
|
+
broadcast(message: WebsocketStructuredMessage): void;
|
35
|
+
hasMember(client: I_WebsocketEntity | string): boolean;
|
36
|
+
addMember(entity: I_WebsocketEntity): I_WebsocketClient | false;
|
37
|
+
removeMember(entity: I_WebsocketEntity): I_WebsocketClient | false;
|
38
|
+
getMember(client: I_WebsocketEntity | string): I_WebsocketClient | undefined;
|
39
|
+
getMembers(): I_WebsocketClient[];
|
40
|
+
getMetadata(): Record<string, string>;
|
41
|
+
getCreatedAt(): Date;
|
42
|
+
getId(): string;
|
43
|
+
getSize(): number;
|
44
|
+
getLimit(): number;
|
45
|
+
getName(): string;
|
46
|
+
canAddMember(): boolean;
|
47
|
+
}
|
27
48
|
export interface I_WebsocketInterface {
|
28
49
|
setup: (channels: WebsocketChannel) => Partial<WebSocketHandler<WebsocketClientData>>;
|
29
50
|
}
|