topsyde-utils 1.0.22 → 1.0.24
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 +3 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/server/bun/index.d.ts +2 -0
- package/dist/server/bun/index.js +26 -0
- package/dist/server/bun/index.js.map +1 -0
- package/dist/server/bun/websocket/Channel.d.ts +24 -0
- package/dist/server/bun/websocket/Channel.js +65 -0
- package/dist/server/bun/websocket/Channel.js.map +1 -0
- package/dist/server/bun/websocket/Websocket.d.ts +14 -0
- package/dist/server/bun/websocket/Websocket.js +53 -0
- package/dist/server/bun/websocket/Websocket.js.map +1 -0
- package/dist/server/bun/websocket/WebsocketClient.d.ts +13 -0
- package/dist/server/bun/websocket/WebsocketClient.js +25 -0
- package/dist/server/bun/websocket/WebsocketClient.js.map +1 -0
- package/dist/server/bun/websocket/index.d.ts +7 -0
- package/dist/server/bun/websocket/index.js +33 -0
- package/dist/server/bun/websocket/index.js.map +1 -0
- package/dist/server/bun/websocket/websocket.types.d.ts +15 -0
- package/dist/server/bun/websocket/websocket.types.js +3 -0
- package/dist/server/bun/websocket/websocket.types.js.map +1 -0
- package/dist/server/index.d.ts +0 -2
- package/dist/server/index.js +1 -4
- package/dist/server/index.js.map +1 -1
- package/package.json +8 -1
- package/dist/server/websocket.d.ts +0 -2
- package/dist/server/websocket.js +0 -6
- package/dist/server/websocket.js.map +0 -1
package/dist/index.d.ts
CHANGED
@@ -4,8 +4,10 @@ export { default as Initializable } from "./initializable";
|
|
4
4
|
export { default as Lib } from "./lib";
|
5
5
|
export { default as Router_internal } from "./router/router.internal";
|
6
6
|
export { default as Router } from "./router/router";
|
7
|
+
export { default as Channel } from "./server/bun/websocket/Channel";
|
8
|
+
export { default as Websocket } from "./server/bun/websocket/Websocket";
|
9
|
+
export { default as WebsocketClient } from "./server/bun/websocket/WebsocketClient";
|
7
10
|
export { default as Controller } from "./server/controller";
|
8
|
-
export { default as Websocket } from "./server/websocket";
|
9
11
|
export { default as Singleton } from "./singleton";
|
10
12
|
export { default as Throwable } from "./throwable";
|
11
13
|
export { RESPONSE_INIT, RESPONSE_METHOD_OPTIONS } from "./application";
|
package/dist/index.js
CHANGED
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
6
6
|
};
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
8
|
-
exports.WS_ERROR_CODE = exports.HTTP_ERROR_CODE = exports.ERROR_CODE = exports.E_ENVIRONMENTS = exports.E_IS = exports.LOG_COLORS = exports.DEFAULT_FALSE_RESPONSE = exports.RESPONSE_METHOD_OPTIONS = exports.RESPONSE_INIT = exports.Throwable = exports.Singleton = exports.Websocket = exports.
|
8
|
+
exports.WS_ERROR_CODE = exports.HTTP_ERROR_CODE = exports.ERROR_CODE = exports.E_ENVIRONMENTS = exports.E_IS = exports.LOG_COLORS = exports.DEFAULT_FALSE_RESPONSE = exports.RESPONSE_METHOD_OPTIONS = exports.RESPONSE_INIT = exports.Throwable = exports.Singleton = exports.Controller = exports.WebsocketClient = exports.Websocket = exports.Channel = exports.Router = exports.Router_internal = exports.Lib = exports.Initializable = exports.Guards = exports.Application = void 0;
|
9
9
|
// Export all modules
|
10
10
|
// Export default classes
|
11
11
|
var application_1 = require("./application");
|
@@ -20,10 +20,14 @@ var router_internal_1 = require("./router/router.internal");
|
|
20
20
|
Object.defineProperty(exports, "Router_internal", { enumerable: true, get: function () { return __importDefault(router_internal_1).default; } });
|
21
21
|
var router_1 = require("./router/router");
|
22
22
|
Object.defineProperty(exports, "Router", { enumerable: true, get: function () { return __importDefault(router_1).default; } });
|
23
|
+
var Channel_1 = require("./server/bun/websocket/Channel");
|
24
|
+
Object.defineProperty(exports, "Channel", { enumerable: true, get: function () { return __importDefault(Channel_1).default; } });
|
25
|
+
var Websocket_1 = require("./server/bun/websocket/Websocket");
|
26
|
+
Object.defineProperty(exports, "Websocket", { enumerable: true, get: function () { return __importDefault(Websocket_1).default; } });
|
27
|
+
var WebsocketClient_1 = require("./server/bun/websocket/WebsocketClient");
|
28
|
+
Object.defineProperty(exports, "WebsocketClient", { enumerable: true, get: function () { return __importDefault(WebsocketClient_1).default; } });
|
23
29
|
var controller_1 = require("./server/controller");
|
24
30
|
Object.defineProperty(exports, "Controller", { enumerable: true, get: function () { return __importDefault(controller_1).default; } });
|
25
|
-
var websocket_1 = require("./server/websocket");
|
26
|
-
Object.defineProperty(exports, "Websocket", { enumerable: true, get: function () { return __importDefault(websocket_1).default; } });
|
27
31
|
var singleton_1 = require("./singleton");
|
28
32
|
Object.defineProperty(exports, "Singleton", { enumerable: true, get: function () { return __importDefault(singleton_1).default; } });
|
29
33
|
var throwable_1 = require("./throwable");
|
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;AAErB,yBAAyB;AACzB,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,6BAAuC;AAA9B,2GAAA,OAAO,OAAO;AACvB,4DAAsE;AAA7D,mIAAA,OAAO,OAAmB;AACnC,0CAAoD;AAA3C,iHAAA,OAAO,OAAU;AAC1B,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;AAEjC,qBAAqB;AAErB,yBAAyB;AACzB,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,6BAAuC;AAA9B,2GAAA,OAAO,OAAO;AACvB,4DAAsE;AAA7D,mIAAA,OAAO,OAAmB;AACnC,0CAAoD;AAA3C,iHAAA,OAAO,OAAU;AAC1B,0DAAoE;AAA3D,mHAAA,OAAO,OAAW;AAC3B,8DAAwE;AAA/D,uHAAA,OAAO,OAAa;AAC7B,0EAAoF;AAA3E,mIAAA,OAAO,OAAmB;AACnC,kDAA4D;AAAnD,yHAAA,OAAO,OAAc;AAC9B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAE7B,sDAAsD;AACtD,6CAAuE;AAA9D,4GAAA,aAAa,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAC/C,mCAA8D;AAArD,gHAAA,sBAAsB,OAAA;AAAE,oGAAA,UAAU,OAAA;AAC3C,iCAA+C;AAAtC,6FAAA,IAAI,OAAA;AAAE,uGAAA,cAAc,OAAA;AAC7B,mCAAsE;AAA7D,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,uGAAA,aAAa,OAAA"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
// This file is auto-generated by scripts/generate-indexes.sh
|
3
|
+
// Do not edit this file directly
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
5
|
+
if (k2 === undefined) k2 = k;
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
9
|
+
}
|
10
|
+
Object.defineProperty(o, k2, desc);
|
11
|
+
}) : (function(o, m, k, k2) {
|
12
|
+
if (k2 === undefined) k2 = k;
|
13
|
+
o[k2] = m[k];
|
14
|
+
}));
|
15
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
16
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
17
|
+
};
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
20
|
+
};
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
22
|
+
exports.Websocket = void 0;
|
23
|
+
__exportStar(require("./websocket/Websocket"), exports);
|
24
|
+
var Websocket_1 = require("./websocket/Websocket");
|
25
|
+
Object.defineProperty(exports, "Websocket", { enumerable: true, get: function () { return __importDefault(Websocket_1).default; } });
|
26
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/bun/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;;;;;;;;;;;;;;;AAEjC,wDAAsC;AACtC,mDAA6D;AAApD,uHAAA,OAAO,OAAa"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import type { WebsocketStructuredMessage, I_WebsocketClient } from "./websocket.types";
|
2
|
+
import WebsocketClient from "./WebsocketClient";
|
3
|
+
export default class Channel {
|
4
|
+
private createdAt?;
|
5
|
+
private id;
|
6
|
+
private name;
|
7
|
+
private limit;
|
8
|
+
private members;
|
9
|
+
private metadata;
|
10
|
+
constructor(id: string, name: string, limit?: number, members?: Map<string, WebsocketClient>, metadata?: Record<string, string>);
|
11
|
+
addMember(client: WebsocketClient): void;
|
12
|
+
removeMember(client: WebsocketClient): void;
|
13
|
+
broadcast(message: WebsocketStructuredMessage, exclude?: string[] | I_WebsocketClient[]): void;
|
14
|
+
hasMember(client: I_WebsocketClient | string): void;
|
15
|
+
getMember(client: I_WebsocketClient | string): void;
|
16
|
+
getMembers(): WebsocketClient[];
|
17
|
+
getMetadata(): Record<string, string>;
|
18
|
+
getCreatedAt(): Date | undefined;
|
19
|
+
getId(): string;
|
20
|
+
getName(): string;
|
21
|
+
getLimit(): number;
|
22
|
+
getSize(): number;
|
23
|
+
private canAddMember;
|
24
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const Websocket_1 = __importDefault(require("./Websocket"));
|
7
|
+
class Channel {
|
8
|
+
constructor(id, name, limit, members, metadata) {
|
9
|
+
this.createdAt = new Date();
|
10
|
+
this.id = id;
|
11
|
+
this.name = name;
|
12
|
+
this.limit = limit ?? 5;
|
13
|
+
this.members = members ?? new Map();
|
14
|
+
this.metadata = metadata ?? {};
|
15
|
+
}
|
16
|
+
addMember(client) {
|
17
|
+
if (this.canAddMember()) {
|
18
|
+
this.members.set(client.getId(), client);
|
19
|
+
client.joinChannel(this);
|
20
|
+
}
|
21
|
+
this.broadcast({
|
22
|
+
type: "channel.member.added",
|
23
|
+
data: {
|
24
|
+
channelId: this.id,
|
25
|
+
clientId: client.getId(),
|
26
|
+
},
|
27
|
+
});
|
28
|
+
}
|
29
|
+
removeMember(client) {
|
30
|
+
this.members.delete(client.getId());
|
31
|
+
client.leaveChannel(this);
|
32
|
+
}
|
33
|
+
broadcast(message, exclude) {
|
34
|
+
Websocket_1.default.Server().publish(this.id, JSON.stringify(message));
|
35
|
+
}
|
36
|
+
hasMember(client) { }
|
37
|
+
getMember(client) { }
|
38
|
+
getMembers() {
|
39
|
+
return Array.from(this.members.values());
|
40
|
+
}
|
41
|
+
getMetadata() {
|
42
|
+
return this.metadata;
|
43
|
+
}
|
44
|
+
getCreatedAt() {
|
45
|
+
return this.createdAt;
|
46
|
+
}
|
47
|
+
getId() {
|
48
|
+
return this.id;
|
49
|
+
}
|
50
|
+
getName() {
|
51
|
+
return this.name;
|
52
|
+
}
|
53
|
+
getLimit() {
|
54
|
+
return this.limit;
|
55
|
+
}
|
56
|
+
getSize() {
|
57
|
+
return this.members.size;
|
58
|
+
}
|
59
|
+
canAddMember() {
|
60
|
+
const size = this.getSize();
|
61
|
+
return size < this.limit;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
exports.default = Channel;
|
65
|
+
//# sourceMappingURL=Channel.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AAIpC,MAAqB,OAAO;IAQ3B,YAAY,EAAU,EAAE,IAAY,EAAE,KAAc,EAAE,OAAsC,EAAE,QAAiC;QAPvH,cAAS,GAAU,IAAI,IAAI,EAAE,CAAC;QAQrC,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,MAAuB;QACvC,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;YACzC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,SAAS,CAAC;YACd,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE;gBACL,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE;aACxB;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,YAAY,CAAC,MAAuB;QAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,OAAmC,EAAE,OAAwC;QAC7F,mBAAS,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,SAAS,CAAC,MAAkC,IAAG,CAAC;IAChD,SAAS,CAAC,MAAkC,IAAG,CAAC;IAChD,UAAU;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IACM,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;IACO,YAAY;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;CACD;AAxED,0BAwEC"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { Server, WebSocketHandler } from "bun";
|
2
|
+
import Singleton from "../../../singleton";
|
3
|
+
import type { WebsocketClientData } from "./websocket.types";
|
4
|
+
export default class Websocket extends Singleton {
|
5
|
+
private channels;
|
6
|
+
private server;
|
7
|
+
private constructor();
|
8
|
+
set(server: Server): void;
|
9
|
+
static Server(): Server;
|
10
|
+
setup(): WebSocketHandler<WebsocketClientData>;
|
11
|
+
private messageReceived;
|
12
|
+
private clientConnected;
|
13
|
+
private clientDisconnected;
|
14
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
"use strict";
|
2
|
+
/* Hey, we're working on a game, today we're going to implement the first few steps
|
3
|
+
|
4
|
+
we will start with a websocket implementation - an abstraction of bun's websocket functioanlity, here are the docs@https://bun.sh/docs/api/websockets
|
5
|
+
|
6
|
+
lets start simple, I want an abstraction interface for the handlers, suggest a strategy */
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
9
|
+
};
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
11
|
+
const Channel_1 = __importDefault(require("./Channel"));
|
12
|
+
const WebsocketClient_1 = __importDefault(require("./WebsocketClient"));
|
13
|
+
const singleton_1 = __importDefault(require("../../../singleton"));
|
14
|
+
class Websocket extends singleton_1.default {
|
15
|
+
constructor() {
|
16
|
+
super();
|
17
|
+
this.channels = new Map();
|
18
|
+
this.messageReceived = (ws, message) => {
|
19
|
+
console.log("Received message:", message);
|
20
|
+
if (message === "ping")
|
21
|
+
ws.send("pong");
|
22
|
+
else
|
23
|
+
ws.send(message);
|
24
|
+
};
|
25
|
+
this.clientConnected = (ws) => {
|
26
|
+
console.log("WebSocket connection opened");
|
27
|
+
const global = this.channels.get("global");
|
28
|
+
const client = new WebsocketClient_1.default(ws.data.id, ws);
|
29
|
+
if (global)
|
30
|
+
global.addMember(client);
|
31
|
+
};
|
32
|
+
this.clientDisconnected = (ws) => {
|
33
|
+
console.log("WebSocket connection closed");
|
34
|
+
};
|
35
|
+
const global = new Channel_1.default("global", "Global Channel", 1000);
|
36
|
+
this.channels.set("global", global);
|
37
|
+
}
|
38
|
+
set(server) {
|
39
|
+
this.server = server;
|
40
|
+
}
|
41
|
+
static Server() {
|
42
|
+
return Websocket.GetInstance().server;
|
43
|
+
}
|
44
|
+
setup() {
|
45
|
+
return {
|
46
|
+
message: this.messageReceived,
|
47
|
+
open: this.clientConnected,
|
48
|
+
close: this.clientDisconnected,
|
49
|
+
};
|
50
|
+
}
|
51
|
+
}
|
52
|
+
exports.default = Websocket;
|
53
|
+
//# sourceMappingURL=Websocket.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Websocket.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Websocket.ts"],"names":[],"mappings":";AAAA;;;;0FAI0F;;;;;AAG1F,wDAAgC;AAChC,wEAAgD;AAChD,mEAA2C;AAI3C,MAAqB,SAAU,SAAQ,mBAAS;IAG/C;QACC,KAAK,EAAE,CAAC;QAHD,aAAQ,GAAqB,IAAI,GAAG,EAAE,CAAC;QAwBvC,oBAAe,GAAG,CAAC,EAAwC,EAAE,OAAyB,EAAE,EAAE;YACjG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;YAC1C,IAAI,OAAO,KAAK,MAAM;gBAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;gBACnC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC;QAEM,oBAAe,GAAG,CAAC,EAAwC,EAAE,EAAE;YACtE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,yBAAe,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,MAAM;gBAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,EAAwC,EAAE,EAAE;YACzE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC5C,CAAC,CAAC;QAnCD,MAAM,MAAM,GAAG,IAAI,iBAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,GAAG,CAAC,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,MAAM;QACnB,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;IACvC,CAAC;IAEM,KAAK;QACX,OAAO;YACN,OAAO,EAAE,IAAI,CAAC,eAAe;YAC7B,IAAI,EAAE,IAAI,CAAC,eAAe;YAC1B,KAAK,EAAE,IAAI,CAAC,kBAAkB;SAC9B,CAAC;IACH,CAAC;CAkBD;AAzCD,4BAyCC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { ServerWebSocket } from "bun";
|
2
|
+
import Channel from "./Channel";
|
3
|
+
import type { I_WebsocketClient, WebsocketClientData, WebsocketChannel } from "./websocket.types";
|
4
|
+
export default class WebsocketClient implements I_WebsocketClient {
|
5
|
+
id: string;
|
6
|
+
ws: ServerWebSocket<WebsocketClientData>;
|
7
|
+
private channels;
|
8
|
+
constructor(id: string, ws: ServerWebSocket<WebsocketClientData>);
|
9
|
+
joinChannel(channel: Channel): void;
|
10
|
+
leaveChannel(channel: Channel): void;
|
11
|
+
getChannels(): WebsocketChannel;
|
12
|
+
getId(): string;
|
13
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
class WebsocketClient {
|
4
|
+
constructor(id, ws) {
|
5
|
+
this.channels = new Map();
|
6
|
+
this.id = id;
|
7
|
+
this.ws = ws;
|
8
|
+
}
|
9
|
+
joinChannel(channel) {
|
10
|
+
this.channels.set(channel.getId(), channel);
|
11
|
+
this.ws.subscribe(channel.getId());
|
12
|
+
}
|
13
|
+
leaveChannel(channel) {
|
14
|
+
this.channels.delete(channel.getId());
|
15
|
+
this.ws.unsubscribe(channel.getId());
|
16
|
+
}
|
17
|
+
getChannels() {
|
18
|
+
return this.channels;
|
19
|
+
}
|
20
|
+
getId() {
|
21
|
+
return this.id;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
exports.default = WebsocketClient;
|
25
|
+
//# sourceMappingURL=WebsocketClient.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"WebsocketClient.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/WebsocketClient.ts"],"names":[],"mappings":";;AAIA,MAAqB,eAAe;IAKnC,YAAY,EAAU,EAAE,EAAwC;QAFxD,aAAQ,GAAqB,IAAI,GAAG,EAAE,CAAC;QAG9C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,CAAC;IAEM,WAAW,CAAC,OAAgB;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACpC,CAAC;IAEM,YAAY,CAAC,OAAgB;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IAEM,WAAW;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEM,KAAK;QACX,OAAO,IAAI,CAAC,EAAE,CAAC;IAChB,CAAC;CACD;AA3BD,kCA2BC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
export * from './Websocket';
|
2
|
+
export { default as Websocket } from './Websocket';
|
3
|
+
export * from './WebsocketClient';
|
4
|
+
export { default as WebsocketClient } from './WebsocketClient';
|
5
|
+
export * from './websocket.types';
|
6
|
+
export * from './Channel';
|
7
|
+
export { default as Channel } from './Channel';
|
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
// This file is auto-generated by scripts/generate-indexes.sh
|
3
|
+
// Do not edit this file directly
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
5
|
+
if (k2 === undefined) k2 = k;
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
9
|
+
}
|
10
|
+
Object.defineProperty(o, k2, desc);
|
11
|
+
}) : (function(o, m, k, k2) {
|
12
|
+
if (k2 === undefined) k2 = k;
|
13
|
+
o[k2] = m[k];
|
14
|
+
}));
|
15
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
16
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
17
|
+
};
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
20
|
+
};
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
22
|
+
exports.Channel = exports.WebsocketClient = exports.Websocket = void 0;
|
23
|
+
__exportStar(require("./Websocket"), exports);
|
24
|
+
var Websocket_1 = require("./Websocket");
|
25
|
+
Object.defineProperty(exports, "Websocket", { enumerable: true, get: function () { return __importDefault(Websocket_1).default; } });
|
26
|
+
__exportStar(require("./WebsocketClient"), exports);
|
27
|
+
var WebsocketClient_1 = require("./WebsocketClient");
|
28
|
+
Object.defineProperty(exports, "WebsocketClient", { enumerable: true, get: function () { return __importDefault(WebsocketClient_1).default; } });
|
29
|
+
__exportStar(require("./websocket.types"), exports);
|
30
|
+
__exportStar(require("./Channel"), exports);
|
31
|
+
var Channel_1 = require("./Channel");
|
32
|
+
Object.defineProperty(exports, "Channel", { enumerable: true, get: function () { return __importDefault(Channel_1).default; } });
|
33
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;;;;;;;;;;;;;;;AAEjC,8CAA4B;AAC5B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,oDAAkC;AAClC,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AACnC,oDAAkC;AAClC,4CAA0B;AAC1B,qCAA+C;AAAtC,mHAAA,OAAO,OAAW"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { ServerWebSocket } from "bun";
|
2
|
+
import Channel from "./Channel";
|
3
|
+
export interface I_WebsocketClient {
|
4
|
+
ws: ServerWebSocket<WebsocketClientData>;
|
5
|
+
id: string;
|
6
|
+
}
|
7
|
+
export type WebsocketClientData = {
|
8
|
+
id: string;
|
9
|
+
};
|
10
|
+
export type WebsocketMessage = string | Buffer<ArrayBufferLike>;
|
11
|
+
export type WebsocketStructuredMessage = {
|
12
|
+
type: string;
|
13
|
+
data: any;
|
14
|
+
};
|
15
|
+
export type WebsocketChannel<T extends Channel = Channel> = Map<string, T>;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"websocket.types.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/websocket.types.ts"],"names":[],"mappings":""}
|
package/dist/server/index.d.ts
CHANGED
package/dist/server/index.js
CHANGED
@@ -19,10 +19,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
19
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
20
20
|
};
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
22
|
-
exports.Controller =
|
23
|
-
__exportStar(require("./websocket"), exports);
|
24
|
-
var websocket_1 = require("./websocket");
|
25
|
-
Object.defineProperty(exports, "Websocket", { enumerable: true, get: function () { return __importDefault(websocket_1).default; } });
|
22
|
+
exports.Controller = void 0;
|
26
23
|
__exportStar(require("./controller"), exports);
|
27
24
|
var controller_1 = require("./controller");
|
28
25
|
Object.defineProperty(exports, "Controller", { enumerable: true, get: function () { return __importDefault(controller_1).default; } });
|
package/dist/server/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;;;;;;;;;;;;;;;AAEjC
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,iCAAiC;;;;;;;;;;;;;;;;;;;;AAEjC,+CAA6B;AAC7B,2CAAqD;AAA5C,yHAAA,OAAO,OAAc"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "topsyde-utils",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.24",
|
4
4
|
"description": "A bundle of TypeScript utility classes and functions",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
@@ -20,6 +20,10 @@
|
|
20
20
|
"./server": {
|
21
21
|
"types": "./dist/server/index.d.ts",
|
22
22
|
"default": "./dist/server/index.js"
|
23
|
+
},
|
24
|
+
"./server/bun/websocket": {
|
25
|
+
"types": "./dist/server/bun/websocket/index.d.ts",
|
26
|
+
"default": "./dist/server/bun/websocket/index.js"
|
23
27
|
}
|
24
28
|
},
|
25
29
|
"typesVersions": {
|
@@ -29,6 +33,9 @@
|
|
29
33
|
],
|
30
34
|
"server": [
|
31
35
|
"./dist/server/index.d.ts"
|
36
|
+
],
|
37
|
+
"server/bun/websocket": [
|
38
|
+
"./dist/server/bun/websocket/index.d.ts"
|
32
39
|
]
|
33
40
|
}
|
34
41
|
},
|
package/dist/server/websocket.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/server/websocket.ts"],"names":[],"mappings":";;AAAA,MAAqB,SAAS;CAAG;AAAjC,4BAAiC"}
|