topsyde-utils 1.0.88 → 1.0.90
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
CHANGED
@@ -42,4 +42,4 @@ export { ControllerResponse, ControllerAction, ControllerMap, ControllerOptions
|
|
42
42
|
export { Routes } from "./server/bun/router/routes";
|
43
43
|
export { I_WebsocketConstructor } from "./server/bun/websocket/Websocket";
|
44
44
|
export { E_WebsocketMessageType } from "./server/bun/websocket/websocket.enums";
|
45
|
-
export { WebsocketMessage, WebsocketChannel, WebsocketStructuredMessage, WebsocketEntityData, I_WebsocketEntity, I_WebsocketClient, I_WebsocketChannelEntity, BroadcastOptions, I_WebsocketChannel, I_WebsocketInterface, } from "./server/bun/websocket/websocket.types";
|
45
|
+
export { WebsocketMessage, WebsocketChannel, WebsocketStructuredMessage, WebsocketEntityId, WebsocketEntityName, WebsocketEntityData, I_WebsocketEntity, I_WebsocketClient, I_WebsocketChannelEntity, BroadcastOptions, I_WebsocketChannel, I_WebsocketInterface, } from "./server/bun/websocket/websocket.types";
|
@@ -12,10 +12,10 @@ class Channel {
|
|
12
12
|
this.ws = ws;
|
13
13
|
// Initialize message template
|
14
14
|
this.messageTemplate = {
|
15
|
-
type:
|
15
|
+
type: "",
|
16
16
|
content: {},
|
17
17
|
channel: this.id,
|
18
|
-
timestamp:
|
18
|
+
timestamp: "",
|
19
19
|
};
|
20
20
|
}
|
21
21
|
broadcast(message, options) {
|
@@ -53,9 +53,7 @@ class Channel {
|
|
53
53
|
}
|
54
54
|
// Include channel metadata if requested
|
55
55
|
if (options.includeMetadata) {
|
56
|
-
output.metadata = options.includeMetadata === true ?
|
57
|
-
this.getMetadata() :
|
58
|
-
this.getFilteredMetadata(options.includeMetadata);
|
56
|
+
output.metadata = options.includeMetadata === true ? this.getMetadata() : this.getFilteredMetadata(options.includeMetadata);
|
59
57
|
}
|
60
58
|
// Add timestamp if requested (default: true)
|
61
59
|
if (options.includeTimestamp !== false) {
|
@@ -65,6 +63,28 @@ class Channel {
|
|
65
63
|
// Remove timestamp if explicitly disabled
|
66
64
|
delete output.timestamp;
|
67
65
|
}
|
66
|
+
// Add sender information if requested
|
67
|
+
if (options.includeSender) {
|
68
|
+
if (typeof options.includeSender === "boolean") {
|
69
|
+
// Use channel as client
|
70
|
+
output.client = {
|
71
|
+
id: this.id,
|
72
|
+
name: this.name,
|
73
|
+
};
|
74
|
+
}
|
75
|
+
else {
|
76
|
+
// Use provided sender object as client
|
77
|
+
output.client = options.includeSender;
|
78
|
+
}
|
79
|
+
}
|
80
|
+
// Add priority if specified
|
81
|
+
if (options.priority !== undefined) {
|
82
|
+
output.priority = options.priority;
|
83
|
+
}
|
84
|
+
// Add expiration if specified
|
85
|
+
if (options.expiresAt !== undefined) {
|
86
|
+
output.expiresAt = options.expiresAt;
|
87
|
+
}
|
68
88
|
// Add any custom fields to the root of the message
|
69
89
|
if (options.customFields) {
|
70
90
|
Object.assign(output, options.customFields);
|
@@ -76,6 +96,20 @@ class Channel {
|
|
76
96
|
this.ws.server.publish(this.id, JSON.stringify(transformed));
|
77
97
|
return;
|
78
98
|
}
|
99
|
+
// Handle excluded clients if needed
|
100
|
+
if (options.excludeClients && options.excludeClients.length > 0) {
|
101
|
+
// For large channels with many excluded clients, it might be more efficient
|
102
|
+
// to send directly to each client instead of using channel publish
|
103
|
+
if (this.members.size > 10 && options.excludeClients.length > this.members.size / 3) {
|
104
|
+
const serializedMessage = JSON.stringify(output);
|
105
|
+
for (const [clientId, client] of this.members) {
|
106
|
+
if (!options.excludeClients.includes(clientId)) {
|
107
|
+
client.ws.send(serializedMessage);
|
108
|
+
}
|
109
|
+
}
|
110
|
+
return;
|
111
|
+
}
|
112
|
+
}
|
79
113
|
}
|
80
114
|
else {
|
81
115
|
// Default timestamp behavior when no options provided
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":";;AAAA,0CAAqC;AAWrC,MAAqB,OAAO;IAW3B,YAAY,EAAU,EAAE,IAAY,EAAE,EAAK,EAAE,KAAc,EAAE,OAAwC,EAAE,QAAiC;QAVjI,cAAS,GAAS,IAAI,IAAI,EAAE,CAAC;QAWnC,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;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,8BAA8B;QAC9B,IAAI,CAAC,eAAe,GAAG;YACtB,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,EAAE;SACb,CAAC;IACH,CAAC;IAEM,SAAS,CAAC,OAAmC,EAAE,OAA0B;QAC/E,wDAAwD;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEvD,8CAA8C;QAC9C,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;QAEzB,wCAAwC;QACxC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC5E,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACzC,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,+CAA+C;QAC/C,IAAI,OAAO,EAAE,CAAC;YACb,uBAAuB;YACvB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/F,iCAAiC;oBACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACP,uCAAuC;oBACvC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACpC,CAAC;YACF,CAAC;YAED,qCAAqC;YACrC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACxC,CAAC;YAED,wCAAwC;YACxC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC7B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC
|
1
|
+
{"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/Channel.ts"],"names":[],"mappings":"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"}
|
@@ -4,19 +4,52 @@ import Websocket from "./Websocket";
|
|
4
4
|
export type WebsocketMessage = string | Buffer<ArrayBufferLike>;
|
5
5
|
export type WebsocketChannel<T extends I_WebsocketChannel = Channel> = Map<string, T>;
|
6
6
|
export type WebsocketStructuredMessage<T = any> = {
|
7
|
+
/**
|
8
|
+
* Message type identifier used for client-side routing
|
9
|
+
*/
|
7
10
|
type: string;
|
11
|
+
/**
|
12
|
+
* Message content - can be any data structure
|
13
|
+
* If a string is provided, it will be wrapped in {message: string}
|
14
|
+
*/
|
8
15
|
content: T;
|
16
|
+
/**
|
17
|
+
* Optional channel identifier
|
18
|
+
* If not provided, the channel ID will be added automatically during broadcast
|
19
|
+
*/
|
9
20
|
channel?: string;
|
21
|
+
/**
|
22
|
+
* Optional metadata key-value pairs
|
23
|
+
* Can be used to add additional context to the message
|
24
|
+
*/
|
10
25
|
metadata?: Record<string, string>;
|
26
|
+
/**
|
27
|
+
* Optional timestamp
|
28
|
+
* If not provided, it will be added automatically during broadcast
|
29
|
+
*/
|
30
|
+
timestamp?: string;
|
31
|
+
/**
|
32
|
+
* Optional sender information
|
33
|
+
* Can be used to identify the source of the message
|
34
|
+
*/
|
35
|
+
client?: {
|
36
|
+
id: string;
|
37
|
+
name?: string;
|
38
|
+
[key: string]: any;
|
39
|
+
};
|
40
|
+
/**
|
41
|
+
* Any additional custom fields
|
42
|
+
*/
|
43
|
+
[key: string]: any;
|
11
44
|
};
|
45
|
+
export type WebsocketEntityId = string;
|
46
|
+
export type WebsocketEntityName = string;
|
12
47
|
export type WebsocketEntityData = {
|
13
|
-
id:
|
14
|
-
name:
|
48
|
+
id: WebsocketEntityId;
|
49
|
+
name: WebsocketEntityName;
|
15
50
|
};
|
16
|
-
export interface I_WebsocketEntity {
|
51
|
+
export interface I_WebsocketEntity extends WebsocketEntityData {
|
17
52
|
ws: ServerWebSocket<WebsocketEntityData>;
|
18
|
-
id: string;
|
19
|
-
name: string;
|
20
53
|
}
|
21
54
|
export interface I_WebsocketClient extends I_WebsocketEntity {
|
22
55
|
channels: WebsocketChannel<I_WebsocketChannel>;
|
@@ -33,15 +66,65 @@ export interface I_WebsocketChannelEntity<T extends Websocket = Websocket> exten
|
|
33
66
|
ws: T;
|
34
67
|
}
|
35
68
|
export type BroadcastOptions = {
|
69
|
+
/**
|
70
|
+
* Additional data to include in the message content
|
71
|
+
* If an object is provided, it will be merged with the content
|
72
|
+
* If a primitive value is provided, it will be added as content.data
|
73
|
+
*/
|
36
74
|
data?: any;
|
75
|
+
/**
|
76
|
+
* Client information to include in the message
|
77
|
+
* Will be added as content.client
|
78
|
+
*/
|
37
79
|
client?: Partial<WebsocketEntityData> & {
|
38
80
|
[key: string]: any;
|
39
81
|
};
|
82
|
+
/**
|
83
|
+
* Channel metadata to include in the message
|
84
|
+
* If true, all metadata will be included
|
85
|
+
* If an array of strings, only the specified keys will be included
|
86
|
+
*/
|
40
87
|
includeMetadata?: boolean | string[];
|
88
|
+
/**
|
89
|
+
* Client IDs to exclude from receiving the broadcast
|
90
|
+
* Useful for sending messages to all clients except the sender
|
91
|
+
*/
|
41
92
|
excludeClients?: string[];
|
93
|
+
/**
|
94
|
+
* Whether to include timestamp in the message
|
95
|
+
* Defaults to true
|
96
|
+
*/
|
42
97
|
includeTimestamp?: boolean;
|
98
|
+
/**
|
99
|
+
* Custom fields to add to the root of the message
|
100
|
+
* These will be merged with the message object
|
101
|
+
*/
|
43
102
|
customFields?: Record<string, any>;
|
103
|
+
/**
|
104
|
+
* Transform function to modify the final message before sending
|
105
|
+
* This is applied after all other processing
|
106
|
+
*/
|
44
107
|
transform?: (message: any) => any;
|
108
|
+
/**
|
109
|
+
* Whether to include sender information in the message
|
110
|
+
* If true, the channel's ID and name will be added as client
|
111
|
+
* If an object, it will be used as the client value
|
112
|
+
*/
|
113
|
+
includeSender?: boolean | {
|
114
|
+
id: string;
|
115
|
+
name?: string;
|
116
|
+
[key: string]: any;
|
117
|
+
};
|
118
|
+
/**
|
119
|
+
* Priority of the message (higher numbers = higher priority)
|
120
|
+
* Can be used by clients to determine processing order
|
121
|
+
*/
|
122
|
+
priority?: number;
|
123
|
+
/**
|
124
|
+
* Message expiration time in milliseconds since epoch
|
125
|
+
* Can be used by clients to ignore outdated messages
|
126
|
+
*/
|
127
|
+
expiresAt?: number;
|
45
128
|
};
|
46
129
|
export interface I_WebsocketChannel<T extends Websocket = Websocket> extends I_WebsocketChannelEntity<T> {
|
47
130
|
limit: number;
|