@zap-socket/server 0.0.7 → 0.0.8
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/server.d.ts +4 -4
- package/dist/server.js +33 -25
- package/package.json +2 -2
package/dist/server.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { WebSocketServer, WebSocket } from "ws";
|
2
|
-
import type { EventMap, ZapServerEvent } from "@zap-socket/types";
|
2
|
+
import type { EventMap, ZapEvent, ZapServerEvent } from "@zap-socket/types";
|
3
3
|
interface ZapServerConstructorT {
|
4
4
|
port: number;
|
5
5
|
events?: EventMap;
|
@@ -21,9 +21,9 @@ export declare class ZapServer<T extends EventMap> {
|
|
21
21
|
broadcastRaw(data: any): void;
|
22
22
|
broadcast(event: keyof T, data: any): void;
|
23
23
|
selectiveBroascast(event: string, data: any, connections: string[]): void;
|
24
|
-
get
|
25
|
-
send: (clientId: string, data?: (T[K] extends ZapServerEvent<any> ? T[K]["data"] : never)) => void;
|
26
|
-
broadcast: (data?: (T[K] extends ZapServerEvent<any> ? T[K]["data"] : never)) => void;
|
24
|
+
get events(): { [K in keyof T as T[K] extends ZapServerEvent<any> | ZapEvent<any, any> ? K : never]: {
|
25
|
+
send: (clientId: string, data?: (T[K] extends ZapServerEvent<any> ? T[K]["data"] : T[K] extends ZapEvent<any, any> ? ReturnType<T[K]["process"]> : never)) => void;
|
26
|
+
broadcast: (data?: (T[K] extends ZapServerEvent<any> ? T[K]["data"] : T[K] extends ZapEvent<any, any> ? ReturnType<T[K]["process"]> : never)) => void;
|
27
27
|
}; };
|
28
28
|
get clients(): Set<string>;
|
29
29
|
get socketMap(): Map<string, WebSocket>;
|
package/dist/server.js
CHANGED
@@ -40,7 +40,7 @@ export class ZapServer {
|
|
40
40
|
const parsedMessage = deserialize(message.toString());
|
41
41
|
if (!parsedMessage)
|
42
42
|
return;
|
43
|
-
const { event, stream, data, requestId, streamId } = parsedMessage;
|
43
|
+
const { event, stream, data, requestId, streamId, batch } = parsedMessage;
|
44
44
|
const key = event || stream;
|
45
45
|
const eventObj = this._events[key];
|
46
46
|
if (!eventObj || !isClientEvent(eventObj))
|
@@ -68,7 +68,17 @@ export class ZapServer {
|
|
68
68
|
// All middleware passed
|
69
69
|
const context = { server: this, id: this.wsToId.get(ws), buffer: ctx };
|
70
70
|
if (requestId) { // req-res premitive
|
71
|
-
|
71
|
+
let result;
|
72
|
+
if (batch) {
|
73
|
+
if (!data) {
|
74
|
+
ws.send("ACK " + requestId);
|
75
|
+
return;
|
76
|
+
}
|
77
|
+
result = data.map((part) => process(part, context));
|
78
|
+
}
|
79
|
+
else {
|
80
|
+
result = process(data, context);
|
81
|
+
}
|
72
82
|
if (result === undefined) { // just ACK the request process returns nothing
|
73
83
|
ws.send("ACK " + requestId);
|
74
84
|
return;
|
@@ -169,30 +179,28 @@ export class ZapServer {
|
|
169
179
|
ws.send(serializedPacket);
|
170
180
|
});
|
171
181
|
}
|
172
|
-
get
|
182
|
+
get events() {
|
173
183
|
return Object.fromEntries(Object.keys(this._events).map((eventName) => {
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
return null;
|
195
|
-
}).filter(entry => entry !== null));
|
184
|
+
return [
|
185
|
+
eventName,
|
186
|
+
{
|
187
|
+
send: (clientId, data) => {
|
188
|
+
const packet = {
|
189
|
+
event: eventName,
|
190
|
+
data
|
191
|
+
};
|
192
|
+
this.sendMessageRaw(clientId, packet);
|
193
|
+
},
|
194
|
+
broadcast: (data) => {
|
195
|
+
const packet = {
|
196
|
+
event: eventName,
|
197
|
+
data
|
198
|
+
};
|
199
|
+
this.broadcastRaw(packet);
|
200
|
+
}
|
201
|
+
}
|
202
|
+
];
|
203
|
+
}));
|
196
204
|
}
|
197
205
|
get clients() {
|
198
206
|
return new Set(this.idToWs.keys());
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@zap-socket/server",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.8",
|
4
4
|
"description": "A fully typesafe tRPC-inspired WebSocket library with Zod validation, req-res model, and native subscriptions.",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
@@ -23,7 +23,7 @@
|
|
23
23
|
"vitest": "^3.0.9"
|
24
24
|
},
|
25
25
|
"dependencies": {
|
26
|
-
"@zap-socket/types": "^0.0.
|
26
|
+
"@zap-socket/types": "^0.0.4",
|
27
27
|
"zod": "^3.24.2"
|
28
28
|
}
|
29
29
|
}
|