@desaubv/quik 0.0.81 → 0.1.0

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.
@@ -0,0 +1,85 @@
1
+ // src/socket.io/socket.ts
2
+ import {
3
+ Server as SocketIOServer
4
+ } from "socket.io";
5
+ var QuikSocketIO = class {
6
+ io;
7
+ connectHandler;
8
+ disconnectHandler;
9
+ events = /* @__PURE__ */ new Map();
10
+ started = false;
11
+ constructor() {
12
+ this.io = new SocketIOServer();
13
+ }
14
+ onConnect(handler) {
15
+ this.connectHandler = handler;
16
+ return this;
17
+ }
18
+ onDisconnect(handler) {
19
+ this.disconnectHandler = handler;
20
+ return this;
21
+ }
22
+ addEvent(keyword, handler) {
23
+ this.events.set(keyword, handler);
24
+ return this;
25
+ }
26
+ removeEvent(keyword) {
27
+ this.events.delete(keyword);
28
+ return this;
29
+ }
30
+ hasEvent(keyword) {
31
+ return this.events.has(keyword);
32
+ }
33
+ emit(keyword, ...args) {
34
+ this.io.emit(keyword, ...args);
35
+ return this;
36
+ }
37
+ emitTo(socket, keyword, ...args) {
38
+ socket.emit(keyword, ...args);
39
+ return this;
40
+ }
41
+ broadcast(socket, keyword, ...args) {
42
+ socket.broadcast.emit(keyword, ...args);
43
+ return this;
44
+ }
45
+ getIO() {
46
+ return this.io;
47
+ }
48
+ start(server) {
49
+ if (this.started) {
50
+ return this;
51
+ }
52
+ this.io.attach(server);
53
+ this.io.on("connection", (socket) => {
54
+ this.connectHandler?.(socket);
55
+ for (const [keyword, handler] of this.events) {
56
+ socket.on(keyword, (...args) => {
57
+ handler(socket, ...args);
58
+ });
59
+ }
60
+ socket.on("disconnect", (reason) => {
61
+ this.disconnectHandler?.(
62
+ socket,
63
+ reason
64
+ );
65
+ });
66
+ });
67
+ this.started = true;
68
+ return this;
69
+ }
70
+ close() {
71
+ if (!this.started) {
72
+ return this;
73
+ }
74
+ this.io.close();
75
+ this.started = false;
76
+ return this;
77
+ }
78
+ };
79
+ function Socket() {
80
+ return new QuikSocketIO();
81
+ }
82
+ export {
83
+ Socket
84
+ };
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/socket.io/socket.ts"],"sourcesContent":["import {\r\n Server as SocketIOServer,\r\n type Socket as SocketIOClient,\r\n} from \"socket.io\";\r\n\r\nimport type { Server as HTTPServer } from \"node:http\";\r\n\r\ntype SocketConnectHandler = (\r\n socket: SocketIOClient\r\n) => void;\r\n\r\ntype SocketDisconnectHandler = (\r\n socket: SocketIOClient,\r\n reason: string\r\n) => void;\r\n\r\ntype SocketEventHandler = (\r\n socket: SocketIOClient,\r\n ...args: unknown[]\r\n) => void;\r\n\r\nclass QuikSocketIO {\r\n private readonly io: SocketIOServer;\r\n\r\n private connectHandler?: SocketConnectHandler;\r\n private disconnectHandler?: SocketDisconnectHandler;\r\n\r\n private readonly events = new Map<\r\n string,\r\n SocketEventHandler\r\n >();\r\n\r\n private started = false;\r\n\r\n constructor() {\r\n this.io = new SocketIOServer();\r\n }\r\n\r\n onConnect(handler: SocketConnectHandler) {\r\n this.connectHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n onDisconnect(handler: SocketDisconnectHandler) {\r\n this.disconnectHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n addEvent(\r\n keyword: string,\r\n handler: SocketEventHandler\r\n ) {\r\n this.events.set(keyword, handler);\r\n\r\n return this;\r\n }\r\n\r\n removeEvent(keyword: string) {\r\n this.events.delete(keyword);\r\n\r\n return this;\r\n }\r\n\r\n hasEvent(keyword: string): boolean {\r\n return this.events.has(keyword);\r\n }\r\n\r\n emit(\r\n keyword: string,\r\n ...args: unknown[]\r\n ) {\r\n this.io.emit(keyword, ...args);\r\n\r\n return this;\r\n }\r\n\r\n emitTo(\r\n socket: SocketIOClient,\r\n keyword: string,\r\n ...args: unknown[]\r\n ) {\r\n socket.emit(keyword, ...args);\r\n\r\n return this;\r\n }\r\n\r\n broadcast(\r\n socket: SocketIOClient,\r\n keyword: string,\r\n ...args: unknown[]\r\n ) {\r\n socket.broadcast.emit(keyword, ...args);\r\n\r\n return this;\r\n }\r\n\r\n getIO(): SocketIOServer {\r\n return this.io;\r\n }\r\n\r\n start(server: HTTPServer) {\r\n if (this.started) {\r\n return this;\r\n }\r\n\r\n this.io.attach(server);\r\n\r\n this.io.on(\"connection\", (socket) => {\r\n this.connectHandler?.(socket);\r\n\r\n for (const [keyword, handler] of this.events) {\r\n socket.on(keyword, (...args) => {\r\n handler(socket, ...args);\r\n });\r\n }\r\n\r\n socket.on(\"disconnect\", (reason) => {\r\n this.disconnectHandler?.(\r\n socket,\r\n reason\r\n );\r\n });\r\n });\r\n\r\n this.started = true;\r\n\r\n return this;\r\n }\r\n\r\n close() {\r\n if (!this.started) {\r\n return this;\r\n }\r\n\r\n this.io.close();\r\n this.started = false;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nfunction Socket() {\r\n return new QuikSocketIO();\r\n}\r\n\r\nexport {\r\n Socket,\r\n QuikSocketIO,\r\n};"],"mappings":";AAAA;AAAA,EACI,UAAU;AAAA,OAEP;AAkBP,IAAM,eAAN,MAAmB;AAAA,EACE;AAAA,EAET;AAAA,EACA;AAAA,EAES,SAAS,oBAAI,IAG5B;AAAA,EAEM,UAAU;AAAA,EAElB,cAAc;AACV,SAAK,KAAK,IAAI,eAAe;AAAA,EACjC;AAAA,EAEA,UAAU,SAA+B;AACrC,SAAK,iBAAiB;AAEtB,WAAO;AAAA,EACX;AAAA,EAEA,aAAa,SAAkC;AAC3C,SAAK,oBAAoB;AAEzB,WAAO;AAAA,EACX;AAAA,EAEA,SACI,SACA,SACF;AACE,SAAK,OAAO,IAAI,SAAS,OAAO;AAEhC,WAAO;AAAA,EACX;AAAA,EAEA,YAAY,SAAiB;AACzB,SAAK,OAAO,OAAO,OAAO;AAE1B,WAAO;AAAA,EACX;AAAA,EAEA,SAAS,SAA0B;AAC/B,WAAO,KAAK,OAAO,IAAI,OAAO;AAAA,EAClC;AAAA,EAEA,KACI,YACG,MACL;AACE,SAAK,GAAG,KAAK,SAAS,GAAG,IAAI;AAE7B,WAAO;AAAA,EACX;AAAA,EAEA,OACI,QACA,YACG,MACL;AACE,WAAO,KAAK,SAAS,GAAG,IAAI;AAE5B,WAAO;AAAA,EACX;AAAA,EAEA,UACI,QACA,YACG,MACL;AACE,WAAO,UAAU,KAAK,SAAS,GAAG,IAAI;AAEtC,WAAO;AAAA,EACX;AAAA,EAEA,QAAwB;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,QAAoB;AACtB,QAAI,KAAK,SAAS;AACd,aAAO;AAAA,IACX;AAEA,SAAK,GAAG,OAAO,MAAM;AAErB,SAAK,GAAG,GAAG,cAAc,CAAC,WAAW;AACjC,WAAK,iBAAiB,MAAM;AAE5B,iBAAW,CAAC,SAAS,OAAO,KAAK,KAAK,QAAQ;AAC1C,eAAO,GAAG,SAAS,IAAI,SAAS;AAC5B,kBAAQ,QAAQ,GAAG,IAAI;AAAA,QAC3B,CAAC;AAAA,MACL;AAEA,aAAO,GAAG,cAAc,CAAC,WAAW;AAChC,aAAK;AAAA,UACD;AAAA,UACA;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAED,SAAK,UAAU;AAEf,WAAO;AAAA,EACX;AAAA,EAEA,QAAQ;AACJ,QAAI,CAAC,KAAK,SAAS;AACf,aAAO;AAAA,IACX;AAEA,SAAK,GAAG,MAAM;AACd,SAAK,UAAU;AAEf,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,SAAS;AACd,SAAO,IAAI,aAAa;AAC5B;","names":[]}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/ws/index.ts
21
+ var ws_exports = {};
22
+ __export(ws_exports, {
23
+ QuikWebSocket: () => QuikWebSocket,
24
+ WebSocket: () => WebSocket
25
+ });
26
+ module.exports = __toCommonJS(ws_exports);
27
+
28
+ // src/ws/websockets.ts
29
+ var import_ws = require("ws");
30
+ var QuikWebSocket = class {
31
+ server;
32
+ connectHandler;
33
+ messageHandler;
34
+ disconnectHandler;
35
+ errorHandler;
36
+ onConnect(handler) {
37
+ this.connectHandler = handler;
38
+ return this;
39
+ }
40
+ onMessage(handler) {
41
+ this.messageHandler = handler;
42
+ return this;
43
+ }
44
+ onDisconnect(handler) {
45
+ this.disconnectHandler = handler;
46
+ return this;
47
+ }
48
+ onError(handler) {
49
+ this.errorHandler = handler;
50
+ return this;
51
+ }
52
+ send(client, message) {
53
+ if (client.readyState === import_ws.WebSocket.OPEN) {
54
+ client.send(message);
55
+ }
56
+ return this;
57
+ }
58
+ broadcast(message) {
59
+ if (!this.server) {
60
+ throw new Error(
61
+ "WebSocket server has not been started."
62
+ );
63
+ }
64
+ for (const client of this.server.clients) {
65
+ if (client.readyState === import_ws.WebSocket.OPEN) {
66
+ client.send(message);
67
+ }
68
+ }
69
+ return this;
70
+ }
71
+ start(server) {
72
+ if (this.server) {
73
+ return this;
74
+ }
75
+ this.server = new import_ws.WebSocketServer({
76
+ server
77
+ });
78
+ this.server.on("connection", (client) => {
79
+ this.connectHandler?.(client);
80
+ client.on("message", (message) => {
81
+ this.messageHandler?.(
82
+ client,
83
+ message
84
+ );
85
+ });
86
+ client.on("close", () => {
87
+ this.disconnectHandler?.(client);
88
+ });
89
+ client.on("error", (error) => {
90
+ this.errorHandler?.(
91
+ client,
92
+ error
93
+ );
94
+ });
95
+ });
96
+ return this;
97
+ }
98
+ close() {
99
+ this.server?.close();
100
+ return this;
101
+ }
102
+ };
103
+ function WebSocket() {
104
+ return new QuikWebSocket();
105
+ }
106
+ // Annotate the CommonJS export names for ESM import in node:
107
+ 0 && (module.exports = {
108
+ QuikWebSocket,
109
+ WebSocket
110
+ });
111
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ws/index.ts","../../src/ws/websockets.ts"],"sourcesContent":["export { WebSocket, QuikWebSocket } from \"./websockets.js\";","import {\r\n WebSocketServer,\r\n WebSocket as WS,\r\n type RawData,\r\n} from \"ws\";\r\n\r\nimport type { Server as HTTPServer } from \"node:http\";\r\n\r\ntype WebSocketClient = WS;\r\n\r\ntype ConnectHandler = (\r\n client: WebSocketClient\r\n) => void;\r\n\r\ntype MessageHandler = (\r\n client: WebSocketClient,\r\n message: RawData\r\n) => void;\r\n\r\ntype DisconnectHandler = (\r\n client: WebSocketClient\r\n) => void;\r\n\r\ntype ErrorHandler = (\r\n client: WebSocketClient,\r\n error: Error\r\n) => void;\r\n\r\nclass QuikWebSocket {\r\n private server?: WebSocketServer;\r\n\r\n private connectHandler?: ConnectHandler;\r\n private messageHandler?: MessageHandler;\r\n private disconnectHandler?: DisconnectHandler;\r\n private errorHandler?: ErrorHandler;\r\n\r\n onConnect(handler: ConnectHandler) {\r\n this.connectHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n onMessage(handler: MessageHandler) {\r\n this.messageHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n onDisconnect(handler: DisconnectHandler) {\r\n this.disconnectHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n onError(handler: ErrorHandler) {\r\n this.errorHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n send(client: WebSocketClient,\r\n message: string | Buffer\r\n ) {\r\n if (client.readyState === WS.OPEN) {\r\n client.send(message);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n broadcast(message: string | Buffer) {\r\n if (!this.server) {\r\n throw new Error(\r\n \"WebSocket server has not been started.\"\r\n );\r\n }\r\n\r\n for (const client of this.server.clients) {\r\n if (client.readyState === WS.OPEN) {\r\n client.send(message);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n start(server: HTTPServer) {\r\n if (this.server) {\r\n return this;\r\n }\r\n\r\n this.server = new WebSocketServer({\r\n server,\r\n });\r\n\r\n this.server.on(\"connection\", (client) => {\r\n this.connectHandler?.(client);\r\n\r\n client.on(\"message\", (message) => {\r\n this.messageHandler?.(\r\n client,\r\n message\r\n );\r\n });\r\n\r\n client.on(\"close\", () => {\r\n this.disconnectHandler?.(client);\r\n });\r\n\r\n client.on(\"error\", (error) => {\r\n this.errorHandler?.(\r\n client,\r\n error\r\n );\r\n });\r\n });\r\n\r\n return this;\r\n }\r\n\r\n close() {\r\n this.server?.close();\r\n\r\n return this;\r\n }\r\n}\r\n\r\nfunction WebSocket() {\r\n return new QuikWebSocket();\r\n}\r\n\r\nexport {\r\n WebSocket,\r\n QuikWebSocket,\r\n};\r\n\r\nexport type {\r\n WebSocketClient,\r\n ConnectHandler,\r\n MessageHandler,\r\n DisconnectHandler,\r\n ErrorHandler,\r\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,gBAIO;AAwBP,IAAM,gBAAN,MAAoB;AAAA,EACR;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,UAAU,SAAyB;AAC/B,SAAK,iBAAiB;AAEtB,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,SAAyB;AAC/B,SAAK,iBAAiB;AAEtB,WAAO;AAAA,EACX;AAAA,EAEA,aAAa,SAA4B;AACrC,SAAK,oBAAoB;AAEzB,WAAO;AAAA,EACX;AAAA,EAEA,QAAQ,SAAuB;AAC3B,SAAK,eAAe;AAEpB,WAAO;AAAA,EACX;AAAA,EAEA,KAAK,QACD,SACF;AACE,QAAI,OAAO,eAAe,UAAAA,UAAG,MAAM;AAC/B,aAAO,KAAK,OAAO;AAAA,IACvB;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,SAA0B;AAChC,QAAI,CAAC,KAAK,QAAQ;AACd,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AAEA,eAAW,UAAU,KAAK,OAAO,SAAS;AACtC,UAAI,OAAO,eAAe,UAAAA,UAAG,MAAM;AAC/B,eAAO,KAAK,OAAO;AAAA,MACvB;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,QAAoB;AACtB,QAAI,KAAK,QAAQ;AACb,aAAO;AAAA,IACX;AAEA,SAAK,SAAS,IAAI,0BAAgB;AAAA,MAC9B;AAAA,IACJ,CAAC;AAED,SAAK,OAAO,GAAG,cAAc,CAAC,WAAW;AACrC,WAAK,iBAAiB,MAAM;AAE5B,aAAO,GAAG,WAAW,CAAC,YAAY;AAC9B,aAAK;AAAA,UACD;AAAA,UACA;AAAA,QACJ;AAAA,MACJ,CAAC;AAED,aAAO,GAAG,SAAS,MAAM;AACrB,aAAK,oBAAoB,MAAM;AAAA,MACnC,CAAC;AAED,aAAO,GAAG,SAAS,CAAC,UAAU;AAC1B,aAAK;AAAA,UACD;AAAA,UACA;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAED,WAAO;AAAA,EACX;AAAA,EAEA,QAAQ;AACJ,SAAK,QAAQ,MAAM;AAEnB,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,YAAY;AACjB,SAAO,IAAI,cAAc;AAC7B;","names":["WS"]}
@@ -0,0 +1,26 @@
1
+ import { WebSocket as WebSocket$1, RawData } from 'ws';
2
+ import { Server } from 'node:http';
3
+
4
+ type WebSocketClient = WebSocket$1;
5
+ type ConnectHandler = (client: WebSocketClient) => void;
6
+ type MessageHandler = (client: WebSocketClient, message: RawData) => void;
7
+ type DisconnectHandler = (client: WebSocketClient) => void;
8
+ type ErrorHandler = (client: WebSocketClient, error: Error) => void;
9
+ declare class QuikWebSocket {
10
+ private server?;
11
+ private connectHandler?;
12
+ private messageHandler?;
13
+ private disconnectHandler?;
14
+ private errorHandler?;
15
+ onConnect(handler: ConnectHandler): this;
16
+ onMessage(handler: MessageHandler): this;
17
+ onDisconnect(handler: DisconnectHandler): this;
18
+ onError(handler: ErrorHandler): this;
19
+ send(client: WebSocketClient, message: string | Buffer): this;
20
+ broadcast(message: string | Buffer): this;
21
+ start(server: Server): this;
22
+ close(): this;
23
+ }
24
+ declare function WebSocket(): QuikWebSocket;
25
+
26
+ export { QuikWebSocket, WebSocket };
@@ -0,0 +1,26 @@
1
+ import { WebSocket as WebSocket$1, RawData } from 'ws';
2
+ import { Server } from 'node:http';
3
+
4
+ type WebSocketClient = WebSocket$1;
5
+ type ConnectHandler = (client: WebSocketClient) => void;
6
+ type MessageHandler = (client: WebSocketClient, message: RawData) => void;
7
+ type DisconnectHandler = (client: WebSocketClient) => void;
8
+ type ErrorHandler = (client: WebSocketClient, error: Error) => void;
9
+ declare class QuikWebSocket {
10
+ private server?;
11
+ private connectHandler?;
12
+ private messageHandler?;
13
+ private disconnectHandler?;
14
+ private errorHandler?;
15
+ onConnect(handler: ConnectHandler): this;
16
+ onMessage(handler: MessageHandler): this;
17
+ onDisconnect(handler: DisconnectHandler): this;
18
+ onError(handler: ErrorHandler): this;
19
+ send(client: WebSocketClient, message: string | Buffer): this;
20
+ broadcast(message: string | Buffer): this;
21
+ start(server: Server): this;
22
+ close(): this;
23
+ }
24
+ declare function WebSocket(): QuikWebSocket;
25
+
26
+ export { QuikWebSocket, WebSocket };
@@ -0,0 +1,86 @@
1
+ // src/ws/websockets.ts
2
+ import {
3
+ WebSocketServer,
4
+ WebSocket as WS
5
+ } from "ws";
6
+ var QuikWebSocket = class {
7
+ server;
8
+ connectHandler;
9
+ messageHandler;
10
+ disconnectHandler;
11
+ errorHandler;
12
+ onConnect(handler) {
13
+ this.connectHandler = handler;
14
+ return this;
15
+ }
16
+ onMessage(handler) {
17
+ this.messageHandler = handler;
18
+ return this;
19
+ }
20
+ onDisconnect(handler) {
21
+ this.disconnectHandler = handler;
22
+ return this;
23
+ }
24
+ onError(handler) {
25
+ this.errorHandler = handler;
26
+ return this;
27
+ }
28
+ send(client, message) {
29
+ if (client.readyState === WS.OPEN) {
30
+ client.send(message);
31
+ }
32
+ return this;
33
+ }
34
+ broadcast(message) {
35
+ if (!this.server) {
36
+ throw new Error(
37
+ "WebSocket server has not been started."
38
+ );
39
+ }
40
+ for (const client of this.server.clients) {
41
+ if (client.readyState === WS.OPEN) {
42
+ client.send(message);
43
+ }
44
+ }
45
+ return this;
46
+ }
47
+ start(server) {
48
+ if (this.server) {
49
+ return this;
50
+ }
51
+ this.server = new WebSocketServer({
52
+ server
53
+ });
54
+ this.server.on("connection", (client) => {
55
+ this.connectHandler?.(client);
56
+ client.on("message", (message) => {
57
+ this.messageHandler?.(
58
+ client,
59
+ message
60
+ );
61
+ });
62
+ client.on("close", () => {
63
+ this.disconnectHandler?.(client);
64
+ });
65
+ client.on("error", (error) => {
66
+ this.errorHandler?.(
67
+ client,
68
+ error
69
+ );
70
+ });
71
+ });
72
+ return this;
73
+ }
74
+ close() {
75
+ this.server?.close();
76
+ return this;
77
+ }
78
+ };
79
+ function WebSocket() {
80
+ return new QuikWebSocket();
81
+ }
82
+ export {
83
+ QuikWebSocket,
84
+ WebSocket
85
+ };
86
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ws/websockets.ts"],"sourcesContent":["import {\r\n WebSocketServer,\r\n WebSocket as WS,\r\n type RawData,\r\n} from \"ws\";\r\n\r\nimport type { Server as HTTPServer } from \"node:http\";\r\n\r\ntype WebSocketClient = WS;\r\n\r\ntype ConnectHandler = (\r\n client: WebSocketClient\r\n) => void;\r\n\r\ntype MessageHandler = (\r\n client: WebSocketClient,\r\n message: RawData\r\n) => void;\r\n\r\ntype DisconnectHandler = (\r\n client: WebSocketClient\r\n) => void;\r\n\r\ntype ErrorHandler = (\r\n client: WebSocketClient,\r\n error: Error\r\n) => void;\r\n\r\nclass QuikWebSocket {\r\n private server?: WebSocketServer;\r\n\r\n private connectHandler?: ConnectHandler;\r\n private messageHandler?: MessageHandler;\r\n private disconnectHandler?: DisconnectHandler;\r\n private errorHandler?: ErrorHandler;\r\n\r\n onConnect(handler: ConnectHandler) {\r\n this.connectHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n onMessage(handler: MessageHandler) {\r\n this.messageHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n onDisconnect(handler: DisconnectHandler) {\r\n this.disconnectHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n onError(handler: ErrorHandler) {\r\n this.errorHandler = handler;\r\n\r\n return this;\r\n }\r\n\r\n send(client: WebSocketClient,\r\n message: string | Buffer\r\n ) {\r\n if (client.readyState === WS.OPEN) {\r\n client.send(message);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n broadcast(message: string | Buffer) {\r\n if (!this.server) {\r\n throw new Error(\r\n \"WebSocket server has not been started.\"\r\n );\r\n }\r\n\r\n for (const client of this.server.clients) {\r\n if (client.readyState === WS.OPEN) {\r\n client.send(message);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n start(server: HTTPServer) {\r\n if (this.server) {\r\n return this;\r\n }\r\n\r\n this.server = new WebSocketServer({\r\n server,\r\n });\r\n\r\n this.server.on(\"connection\", (client) => {\r\n this.connectHandler?.(client);\r\n\r\n client.on(\"message\", (message) => {\r\n this.messageHandler?.(\r\n client,\r\n message\r\n );\r\n });\r\n\r\n client.on(\"close\", () => {\r\n this.disconnectHandler?.(client);\r\n });\r\n\r\n client.on(\"error\", (error) => {\r\n this.errorHandler?.(\r\n client,\r\n error\r\n );\r\n });\r\n });\r\n\r\n return this;\r\n }\r\n\r\n close() {\r\n this.server?.close();\r\n\r\n return this;\r\n }\r\n}\r\n\r\nfunction WebSocket() {\r\n return new QuikWebSocket();\r\n}\r\n\r\nexport {\r\n WebSocket,\r\n QuikWebSocket,\r\n};\r\n\r\nexport type {\r\n WebSocketClient,\r\n ConnectHandler,\r\n MessageHandler,\r\n DisconnectHandler,\r\n ErrorHandler,\r\n};"],"mappings":";AAAA;AAAA,EACI;AAAA,EACA,aAAa;AAAA,OAEV;AAwBP,IAAM,gBAAN,MAAoB;AAAA,EACR;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,UAAU,SAAyB;AAC/B,SAAK,iBAAiB;AAEtB,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,SAAyB;AAC/B,SAAK,iBAAiB;AAEtB,WAAO;AAAA,EACX;AAAA,EAEA,aAAa,SAA4B;AACrC,SAAK,oBAAoB;AAEzB,WAAO;AAAA,EACX;AAAA,EAEA,QAAQ,SAAuB;AAC3B,SAAK,eAAe;AAEpB,WAAO;AAAA,EACX;AAAA,EAEA,KAAK,QACD,SACF;AACE,QAAI,OAAO,eAAe,GAAG,MAAM;AAC/B,aAAO,KAAK,OAAO;AAAA,IACvB;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,SAA0B;AAChC,QAAI,CAAC,KAAK,QAAQ;AACd,YAAM,IAAI;AAAA,QACN;AAAA,MACJ;AAAA,IACJ;AAEA,eAAW,UAAU,KAAK,OAAO,SAAS;AACtC,UAAI,OAAO,eAAe,GAAG,MAAM;AAC/B,eAAO,KAAK,OAAO;AAAA,MACvB;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,QAAoB;AACtB,QAAI,KAAK,QAAQ;AACb,aAAO;AAAA,IACX;AAEA,SAAK,SAAS,IAAI,gBAAgB;AAAA,MAC9B;AAAA,IACJ,CAAC;AAED,SAAK,OAAO,GAAG,cAAc,CAAC,WAAW;AACrC,WAAK,iBAAiB,MAAM;AAE5B,aAAO,GAAG,WAAW,CAAC,YAAY;AAC9B,aAAK;AAAA,UACD;AAAA,UACA;AAAA,QACJ;AAAA,MACJ,CAAC;AAED,aAAO,GAAG,SAAS,MAAM;AACrB,aAAK,oBAAoB,MAAM;AAAA,MACnC,CAAC;AAED,aAAO,GAAG,SAAS,CAAC,UAAU;AAC1B,aAAK;AAAA,UACD;AAAA,UACA;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAED,WAAO;AAAA,EACX;AAAA,EAEA,QAAQ;AACJ,SAAK,QAAQ,MAAM;AAEnB,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,YAAY;AACjB,SAAO,IAAI,cAAc;AAC7B;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@desaubv/quik",
3
- "version": "0.0.81",
3
+ "version": "0.1.0",
4
4
  "description": "Quik is an Express-based library designed to simplify the creation of modern backends. It allows you to build APIs quickly, reducing repetitive code through clean syntax and intuitive tools.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -26,14 +26,21 @@
26
26
  "types": "./dist/ws/index.d.ts",
27
27
  "import": "./dist/ws/index.js",
28
28
  "require": "./dist/ws/index.cjs"
29
+ },
30
+ "./socket.io": {
31
+ "types": "./dist/socket.io/index.d.ts",
32
+ "import": "./dist/socket.io/index.js",
33
+ "require": "./dist/socket.io/index.cjs"
29
34
  }
35
+
30
36
  },
31
37
  "files": [
32
38
  "dist"
33
39
  ],
34
40
  "scripts": {
35
41
  "build": "tsup",
36
- "dev": "tsup --watch"
42
+ "dev": "tsup --watch",
43
+ "publish": "npm publish --access public --tag latest"
37
44
  },
38
45
  "keywords": [
39
46
  "quik",
@@ -65,6 +72,7 @@
65
72
  "dependencies": {
66
73
  "express": "^5.2.1",
67
74
  "node-cron": "^4.6.0",
68
- "socket.io": "^4.8.3"
75
+ "socket.io": "^4.8.3",
76
+ "ws": "^8.21.3"
69
77
  }
70
78
  }