@manonero/chat-client-sdk 1.0.0-beta.1 → 1.0.0-beta.11
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/README.md +386 -81
- package/dist/ChatClient.d.ts +67 -8
- package/dist/ChatClient.d.ts.map +1 -1
- package/dist/ChatClient.js +82 -9
- package/dist/ChatClient.js.map +1 -1
- package/dist/errors/ChatApiError.d.ts +21 -4
- package/dist/errors/ChatApiError.d.ts.map +1 -1
- package/dist/errors/ChatApiError.js +12 -6
- package/dist/errors/ChatApiError.js.map +1 -1
- package/dist/http/BotApi.d.ts +6 -13
- package/dist/http/BotApi.d.ts.map +1 -1
- package/dist/http/BotApi.js +4 -11
- package/dist/http/BotApi.js.map +1 -1
- package/dist/http/ConversationApi.d.ts +38 -5
- package/dist/http/ConversationApi.d.ts.map +1 -1
- package/dist/http/ConversationApi.js +55 -7
- package/dist/http/ConversationApi.js.map +1 -1
- package/dist/http/FileApi.d.ts +16 -4
- package/dist/http/FileApi.d.ts.map +1 -1
- package/dist/http/FileApi.js +29 -6
- package/dist/http/FileApi.js.map +1 -1
- package/dist/http/HttpClient.d.ts +20 -2
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +76 -14
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/MessageApi.d.ts +2 -1
- package/dist/http/MessageApi.d.ts.map +1 -1
- package/dist/http/MessageApi.js +15 -3
- package/dist/http/MessageApi.js.map +1 -1
- package/dist/http/ProxyApi.d.ts +18 -2
- package/dist/http/ProxyApi.d.ts.map +1 -1
- package/dist/http/ProxyApi.js +33 -6
- package/dist/http/ProxyApi.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/realtime/ChatHubClient.d.ts +58 -1
- package/dist/realtime/ChatHubClient.d.ts.map +1 -1
- package/dist/realtime/ChatHubClient.js +202 -15
- package/dist/realtime/ChatHubClient.js.map +1 -1
- package/dist/realtime/NotificationHubClient.d.ts +43 -1
- package/dist/realtime/NotificationHubClient.d.ts.map +1 -1
- package/dist/realtime/NotificationHubClient.js +134 -29
- package/dist/realtime/NotificationHubClient.js.map +1 -1
- package/dist/realtime/ReconnectionManager.d.ts +2 -1
- package/dist/realtime/ReconnectionManager.d.ts.map +1 -1
- package/dist/realtime/ReconnectionManager.js +13 -3
- package/dist/realtime/ReconnectionManager.js.map +1 -1
- package/dist/types/auth.d.ts +2 -2
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/block.d.ts +16 -1
- package/dist/types/block.d.ts.map +1 -1
- package/dist/types/block.js +30 -0
- package/dist/types/block.js.map +1 -1
- package/dist/types/bot.d.ts +2 -8
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/chat-events.d.ts +29 -3
- package/dist/types/chat-events.d.ts.map +1 -1
- package/dist/types/common.d.ts +19 -0
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/conversation.d.ts +58 -8
- package/dist/types/conversation.d.ts.map +1 -1
- package/dist/types/message.d.ts +9 -5
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/notification-events.d.ts +34 -7
- package/dist/types/notification-events.d.ts.map +1 -1
- package/dist/types/participant.d.ts +2 -2
- package/dist/types/participant.d.ts.map +1 -1
- package/dist/types/signalr.d.ts +4 -1
- package/dist/types/signalr.d.ts.map +1 -1
- package/package.json +4 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HubConnectionState, LogLevel } from '@microsoft/signalr';
|
|
2
2
|
import type { Unsubscribe } from '../utils/TypedEventEmitter.js';
|
|
3
|
-
import type { PresenceStateItem, PresenceChangedDto, NewMessageNotificationDto, MentionedNotificationDto, UnreadCountChangedDto, ConversationCreatedDto, ConversationUpdatedDto, ParticipantJoinedDto, ParticipantLeftDto, ConversationPinnedDto, ConversationUnpinnedDto, ReadStatusChangedDto } from '../types/notification-events.js';
|
|
3
|
+
import type { PresenceStateItem, PresenceChangedDto, NewMessageNotificationDto, MentionedNotificationDto, UnreadCountChangedDto, ConversationCreatedDto, ConversationUpdatedDto, ParticipantJoinedDto, ParticipantLeftDto, ConversationPinnedDto, ConversationUnpinnedDto, ReadStatusChangedDto, ConversationDeletedDto, ConversationRestoredDto } from '../types/notification-events.js';
|
|
4
4
|
import type { HubErrorDto } from '../types/signalr.js';
|
|
5
5
|
export interface NotificationHubEventMap {
|
|
6
6
|
presenceState: PresenceStateItem[];
|
|
@@ -15,6 +15,8 @@ export interface NotificationHubEventMap {
|
|
|
15
15
|
conversationPinned: ConversationPinnedDto;
|
|
16
16
|
conversationUnpinned: ConversationUnpinnedDto;
|
|
17
17
|
readStatusChanged: ReadStatusChangedDto;
|
|
18
|
+
conversationDeleted: ConversationDeletedDto;
|
|
19
|
+
conversationRestored: ConversationRestoredDto;
|
|
18
20
|
error: HubErrorDto;
|
|
19
21
|
reconnecting: Error | undefined;
|
|
20
22
|
reconnected: string | undefined;
|
|
@@ -41,31 +43,71 @@ export declare class NotificationHubClient {
|
|
|
41
43
|
private readonly options;
|
|
42
44
|
private connection;
|
|
43
45
|
private readonly emitter;
|
|
46
|
+
/** In-flight connect Promise, used to dedupe concurrent connect() calls. */
|
|
47
|
+
private connectingPromise;
|
|
48
|
+
/**
|
|
49
|
+
* True after a user-initiated disconnect() until the next connect() begins.
|
|
50
|
+
* ReconnectionManager uses this to skip auto-reconnect when the close was
|
|
51
|
+
* intentional rather than caused by a transport failure.
|
|
52
|
+
*/
|
|
53
|
+
private _intentionallyClosed;
|
|
44
54
|
/** Set of participantIds currently subscribed to presence updates */
|
|
45
55
|
readonly subscribedPresenceIds: Set<string>;
|
|
56
|
+
/** Server-imposed maximum batch size for SubscribeToPresence / UnsubscribeFromPresence. */
|
|
57
|
+
private static readonly PRESENCE_BATCH_SIZE;
|
|
58
|
+
/** Server→client method names registered via conn.on() — used for cleanup. */
|
|
59
|
+
private static readonly HUB_EVENT_NAMES;
|
|
46
60
|
constructor(options: NotificationHubClientOptions);
|
|
47
61
|
get state(): HubConnectionState;
|
|
62
|
+
/**
|
|
63
|
+
* True after a user-initiated disconnect() and until the next connect() starts.
|
|
64
|
+
* ReconnectionManager honors this to avoid reconnecting after an intentional close.
|
|
65
|
+
*/
|
|
66
|
+
get intentionallyClosed(): boolean;
|
|
48
67
|
/** Build a new HubConnection using the latest token from tokenProvider */
|
|
49
68
|
private buildConnection;
|
|
50
69
|
/** Attach SignalR server→client event handlers to the connection */
|
|
51
70
|
private attachHandlers;
|
|
52
71
|
/**
|
|
53
72
|
* Connect to NotificationHub. If already connected, resolves immediately.
|
|
73
|
+
* Concurrent calls share a single in-flight Promise — building two
|
|
74
|
+
* connections at once would leak handlers.
|
|
54
75
|
* Connecting automatically marks the user as online on the server.
|
|
76
|
+
*
|
|
77
|
+
* Throws synchronously when no authentication token is available so the
|
|
78
|
+
* caller gets a clear error rather than a malformed Authorization header.
|
|
55
79
|
*/
|
|
56
80
|
connect(): Promise<void>;
|
|
57
81
|
/**
|
|
58
82
|
* Disconnect from NotificationHub. Automatically marks user as offline (server-side).
|
|
83
|
+
* If a connect is in flight, it is awaited first so we always tear down a
|
|
84
|
+
* fully-formed connection (not a half-built one).
|
|
85
|
+
*
|
|
86
|
+
* Sets `intentionallyClosed` so ReconnectionManager skips its reconnect
|
|
87
|
+
* attempt for the resulting `disconnected` event.
|
|
59
88
|
*/
|
|
60
89
|
disconnect(): Promise<void>;
|
|
90
|
+
/** Detach all server→client method handlers registered via attachHandlers(). */
|
|
91
|
+
private detachHandlers;
|
|
61
92
|
private safeStop;
|
|
62
93
|
/**
|
|
63
94
|
* Re-subscribe to all tracked presence participant IDs.
|
|
64
95
|
* Called internally after reconnect. Also callable by ReconnectionManager.
|
|
96
|
+
* Best-effort — never throws.
|
|
65
97
|
*/
|
|
66
98
|
resubscribePresence(): Promise<void>;
|
|
67
99
|
private invokeHub;
|
|
100
|
+
/**
|
|
101
|
+
* Subscribe to presence updates for the given participants.
|
|
102
|
+
* Auto-batches in chunks of 200 to respect the server limit; if a batch
|
|
103
|
+
* fails partway through, prior batches remain subscribed and the error is
|
|
104
|
+
* propagated to the caller.
|
|
105
|
+
*/
|
|
68
106
|
subscribeToPresence(participantIds: string[]): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Unsubscribe from presence updates for the given participants.
|
|
109
|
+
* Auto-batches in chunks of 200 to respect the server limit.
|
|
110
|
+
*/
|
|
69
111
|
unsubscribeFromPresence(participantIds: string[]): Promise<void>;
|
|
70
112
|
on<K extends keyof NotificationHubEventMap>(event: K, handler: (payload: NotificationHubEventMap[K]) => void): Unsubscribe;
|
|
71
113
|
off<K extends keyof NotificationHubEventMap>(event: K, handler: (payload: NotificationHubEventMap[K]) => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationHubClient.d.ts","sourceRoot":"","sources":["../../src/realtime/NotificationHubClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,kBAAkB,EAClB,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAqB,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"NotificationHubClient.d.ts","sourceRoot":"","sources":["../../src/realtime/NotificationHubClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,14 @@ import { TypedEventEmitter as EventEmitter } from '../utils/TypedEventEmitter.js
|
|
|
16
16
|
export class NotificationHubClient {
|
|
17
17
|
constructor(options) {
|
|
18
18
|
this.connection = null;
|
|
19
|
+
/** In-flight connect Promise, used to dedupe concurrent connect() calls. */
|
|
20
|
+
this.connectingPromise = null;
|
|
21
|
+
/**
|
|
22
|
+
* True after a user-initiated disconnect() until the next connect() begins.
|
|
23
|
+
* ReconnectionManager uses this to skip auto-reconnect when the close was
|
|
24
|
+
* intentional rather than caused by a transport failure.
|
|
25
|
+
*/
|
|
26
|
+
this._intentionallyClosed = false;
|
|
19
27
|
/** Set of participantIds currently subscribed to presence updates */
|
|
20
28
|
this.subscribedPresenceIds = new Set();
|
|
21
29
|
this.options = options;
|
|
@@ -27,6 +35,13 @@ export class NotificationHubClient {
|
|
|
27
35
|
get state() {
|
|
28
36
|
return this.connection?.state ?? HubConnectionState.Disconnected;
|
|
29
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* True after a user-initiated disconnect() and until the next connect() starts.
|
|
40
|
+
* ReconnectionManager honors this to avoid reconnecting after an intentional close.
|
|
41
|
+
*/
|
|
42
|
+
get intentionallyClosed() {
|
|
43
|
+
return this._intentionallyClosed;
|
|
44
|
+
}
|
|
30
45
|
// ---------------------------------------------------------------------------
|
|
31
46
|
// Connection management
|
|
32
47
|
// ---------------------------------------------------------------------------
|
|
@@ -35,7 +50,15 @@ export class NotificationHubClient {
|
|
|
35
50
|
const { hubUrl, tokenProvider, logLevel = LogLevel.Warning } = this.options;
|
|
36
51
|
return new HubConnectionBuilder()
|
|
37
52
|
.withUrl(hubUrl, {
|
|
38
|
-
|
|
53
|
+
// Throw rather than return '' so SignalR fails the request loudly with
|
|
54
|
+
// a useful error instead of sending an empty `Authorization: Bearer ` header.
|
|
55
|
+
accessTokenFactory: () => {
|
|
56
|
+
const t = tokenProvider();
|
|
57
|
+
if (!t) {
|
|
58
|
+
throw new Error('NotificationHub: no authentication token available');
|
|
59
|
+
}
|
|
60
|
+
return t;
|
|
61
|
+
},
|
|
39
62
|
})
|
|
40
63
|
.withAutomaticReconnect()
|
|
41
64
|
.configureLogging(logLevel)
|
|
@@ -58,6 +81,9 @@ export class NotificationHubClient {
|
|
|
58
81
|
conn.on('ConversationPinned', (dto) => this.emitter.emit('conversationPinned', dto));
|
|
59
82
|
conn.on('ConversationUnpinned', (dto) => this.emitter.emit('conversationUnpinned', dto));
|
|
60
83
|
conn.on('ReadStatusChanged', (dto) => this.emitter.emit('readStatusChanged', dto));
|
|
84
|
+
// Conversation delete/restore
|
|
85
|
+
conn.on('ConversationDeleted', (dto) => this.emitter.emit('conversationDeleted', dto));
|
|
86
|
+
conn.on('ConversationRestored', (dto) => this.emitter.emit('conversationRestored', dto));
|
|
61
87
|
// Hub errors (server→client)
|
|
62
88
|
conn.on('Error', (error) => this.emitter.emit('error', error));
|
|
63
89
|
// Connection lifecycle
|
|
@@ -73,32 +99,83 @@ export class NotificationHubClient {
|
|
|
73
99
|
}
|
|
74
100
|
/**
|
|
75
101
|
* Connect to NotificationHub. If already connected, resolves immediately.
|
|
102
|
+
* Concurrent calls share a single in-flight Promise — building two
|
|
103
|
+
* connections at once would leak handlers.
|
|
76
104
|
* Connecting automatically marks the user as online on the server.
|
|
105
|
+
*
|
|
106
|
+
* Throws synchronously when no authentication token is available so the
|
|
107
|
+
* caller gets a clear error rather than a malformed Authorization header.
|
|
77
108
|
*/
|
|
78
109
|
async connect() {
|
|
79
110
|
if (this.connection && this.connection.state === HubConnectionState.Connected) {
|
|
80
111
|
return;
|
|
81
112
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
113
|
+
if (this.connectingPromise) {
|
|
114
|
+
return this.connectingPromise;
|
|
115
|
+
}
|
|
116
|
+
if (!this.options.tokenProvider()) {
|
|
117
|
+
throw new Error('NotificationHubClient.connect(): no authentication token available. ' +
|
|
118
|
+
'Provide one via ChatClient.setToken() or the tokenProvider option.');
|
|
85
119
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this.
|
|
89
|
-
|
|
120
|
+
// The user is explicitly opening a connection — clear any prior
|
|
121
|
+
// intentional-close flag so ReconnectionManager will manage future drops.
|
|
122
|
+
this._intentionallyClosed = false;
|
|
123
|
+
const promise = (async () => {
|
|
124
|
+
try {
|
|
125
|
+
// Disconnect existing stale connection cleanly
|
|
126
|
+
if (this.connection) {
|
|
127
|
+
await this.safeStop();
|
|
128
|
+
}
|
|
129
|
+
const conn = this.buildConnection();
|
|
130
|
+
this.attachHandlers(conn);
|
|
131
|
+
this.connection = conn;
|
|
132
|
+
await conn.start();
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
this.connectingPromise = null;
|
|
136
|
+
}
|
|
137
|
+
})();
|
|
138
|
+
this.connectingPromise = promise;
|
|
139
|
+
return promise;
|
|
90
140
|
}
|
|
91
141
|
/**
|
|
92
142
|
* Disconnect from NotificationHub. Automatically marks user as offline (server-side).
|
|
143
|
+
* If a connect is in flight, it is awaited first so we always tear down a
|
|
144
|
+
* fully-formed connection (not a half-built one).
|
|
145
|
+
*
|
|
146
|
+
* Sets `intentionallyClosed` so ReconnectionManager skips its reconnect
|
|
147
|
+
* attempt for the resulting `disconnected` event.
|
|
93
148
|
*/
|
|
94
149
|
async disconnect() {
|
|
150
|
+
// Mark intentional BEFORE awaiting the in-flight connect so any
|
|
151
|
+
// disconnected events that fire during teardown are not auto-reconnected.
|
|
152
|
+
this._intentionallyClosed = true;
|
|
153
|
+
if (this.connectingPromise) {
|
|
154
|
+
try {
|
|
155
|
+
await this.connectingPromise;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// The connect failed — there's nothing established to tear down,
|
|
159
|
+
// but still proceed to clear local state below.
|
|
160
|
+
}
|
|
161
|
+
}
|
|
95
162
|
this.subscribedPresenceIds.clear();
|
|
96
163
|
await this.safeStop();
|
|
97
164
|
this.connection = null;
|
|
98
165
|
}
|
|
166
|
+
/** Detach all server→client method handlers registered via attachHandlers(). */
|
|
167
|
+
detachHandlers(conn) {
|
|
168
|
+
for (const name of NotificationHubClient.HUB_EVENT_NAMES) {
|
|
169
|
+
conn.off(name);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
99
172
|
async safeStop() {
|
|
173
|
+
if (!this.connection)
|
|
174
|
+
return;
|
|
175
|
+
// Detach handlers first so any late events on this connection are dropped.
|
|
176
|
+
this.detachHandlers(this.connection);
|
|
100
177
|
try {
|
|
101
|
-
await this.connection
|
|
178
|
+
await this.connection.stop();
|
|
102
179
|
}
|
|
103
180
|
catch {
|
|
104
181
|
// Ignore errors during stop
|
|
@@ -107,19 +184,17 @@ export class NotificationHubClient {
|
|
|
107
184
|
/**
|
|
108
185
|
* Re-subscribe to all tracked presence participant IDs.
|
|
109
186
|
* Called internally after reconnect. Also callable by ReconnectionManager.
|
|
187
|
+
* Best-effort — never throws.
|
|
110
188
|
*/
|
|
111
189
|
async resubscribePresence() {
|
|
112
190
|
const ids = Array.from(this.subscribedPresenceIds);
|
|
113
191
|
if (ids.length === 0)
|
|
114
192
|
return;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
catch {
|
|
121
|
-
// Best-effort
|
|
122
|
-
}
|
|
193
|
+
try {
|
|
194
|
+
await this.subscribeToPresence(ids);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// Best-effort
|
|
123
198
|
}
|
|
124
199
|
}
|
|
125
200
|
// ---------------------------------------------------------------------------
|
|
@@ -131,22 +206,32 @@ export class NotificationHubClient {
|
|
|
131
206
|
}
|
|
132
207
|
return this.connection.invoke(method, ...args);
|
|
133
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Subscribe to presence updates for the given participants.
|
|
211
|
+
* Auto-batches in chunks of 200 to respect the server limit; if a batch
|
|
212
|
+
* fails partway through, prior batches remain subscribed and the error is
|
|
213
|
+
* propagated to the caller.
|
|
214
|
+
*/
|
|
134
215
|
async subscribeToPresence(participantIds) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
216
|
+
const batchSize = NotificationHubClient.PRESENCE_BATCH_SIZE;
|
|
217
|
+
for (let i = 0; i < participantIds.length; i += batchSize) {
|
|
218
|
+
const batch = participantIds.slice(i, i + batchSize);
|
|
219
|
+
await this.invokeHub('SubscribeToPresence', batch);
|
|
220
|
+
for (const id of batch)
|
|
221
|
+
this.subscribedPresenceIds.add(id);
|
|
141
222
|
}
|
|
142
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Unsubscribe from presence updates for the given participants.
|
|
226
|
+
* Auto-batches in chunks of 200 to respect the server limit.
|
|
227
|
+
*/
|
|
143
228
|
async unsubscribeFromPresence(participantIds) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
229
|
+
const batchSize = NotificationHubClient.PRESENCE_BATCH_SIZE;
|
|
230
|
+
for (let i = 0; i < participantIds.length; i += batchSize) {
|
|
231
|
+
const batch = participantIds.slice(i, i + batchSize);
|
|
232
|
+
await this.invokeHub('UnsubscribeFromPresence', batch);
|
|
233
|
+
for (const id of batch)
|
|
234
|
+
this.subscribedPresenceIds.delete(id);
|
|
150
235
|
}
|
|
151
236
|
}
|
|
152
237
|
// ---------------------------------------------------------------------------
|
|
@@ -159,4 +244,24 @@ export class NotificationHubClient {
|
|
|
159
244
|
this.emitter.off(event, handler);
|
|
160
245
|
}
|
|
161
246
|
}
|
|
247
|
+
/** Server-imposed maximum batch size for SubscribeToPresence / UnsubscribeFromPresence. */
|
|
248
|
+
NotificationHubClient.PRESENCE_BATCH_SIZE = 200;
|
|
249
|
+
/** Server→client method names registered via conn.on() — used for cleanup. */
|
|
250
|
+
NotificationHubClient.HUB_EVENT_NAMES = [
|
|
251
|
+
'PresenceState',
|
|
252
|
+
'PresenceChanged',
|
|
253
|
+
'NewMessageNotification',
|
|
254
|
+
'MentionedNotification',
|
|
255
|
+
'UnreadCountChanged',
|
|
256
|
+
'ConversationCreated',
|
|
257
|
+
'ConversationUpdated',
|
|
258
|
+
'ParticipantJoined',
|
|
259
|
+
'ParticipantLeft',
|
|
260
|
+
'ConversationPinned',
|
|
261
|
+
'ConversationUnpinned',
|
|
262
|
+
'ReadStatusChanged',
|
|
263
|
+
'ConversationDeleted',
|
|
264
|
+
'ConversationRestored',
|
|
265
|
+
'Error',
|
|
266
|
+
];
|
|
162
267
|
//# sourceMappingURL=NotificationHubClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationHubClient.js","sourceRoot":"","sources":["../../src/realtime/NotificationHubClient.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"NotificationHubClient.js","sourceRoot":"","sources":["../../src/realtime/NotificationHubClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,8 @@ export declare class ReconnectionManager {
|
|
|
53
53
|
private handleNotificationDisconnected;
|
|
54
54
|
/**
|
|
55
55
|
* Determine if the disconnect error is likely due to token expiry (HTTP 401).
|
|
56
|
-
* SignalR surfaces
|
|
56
|
+
* SignalR surfaces these conditions only as text in the error message, so this
|
|
57
|
+
* is a best-effort heuristic that matches the most common phrasings.
|
|
57
58
|
*/
|
|
58
59
|
private isTokenExpiredError;
|
|
59
60
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReconnectionManager.d.ts","sourceRoot":"","sources":["../../src/realtime/ReconnectionManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,WAAW,0BAA0B;IACzC,+BAA+B;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,uCAAuC;IACvC,eAAe,EAAE,qBAAqB,CAAC;IACvC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAA+B;IAE/D,OAAO,CAAC,2BAA2B,CAAC,CAAa;IACjD,OAAO,CAAC,mCAAmC,CAAC,CAAa;IAEzD,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,0BAA0B;IAM/C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAeb;;OAEG;IACH,IAAI,IAAI,IAAI;YAYE,sBAAsB;
|
|
1
|
+
{"version":3,"file":"ReconnectionManager.d.ts","sourceRoot":"","sources":["../../src/realtime/ReconnectionManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,WAAW,0BAA0B;IACzC,+BAA+B;IAC/B,OAAO,EAAE,aAAa,CAAC;IACvB,uCAAuC;IACvC,eAAe,EAAE,qBAAqB,CAAC;IACvC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAA+B;IAE/D,OAAO,CAAC,2BAA2B,CAAC,CAAa;IACjD,OAAO,CAAC,mCAAmC,CAAC,CAAa;IAEzD,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,0BAA0B;IAM/C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAeb;;OAEG;IACH,IAAI,IAAI,IAAI;YAYE,sBAAsB;YAmBtB,8BAA8B;IAoB5C;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;;OAGG;YACW,YAAY;CA2B3B"}
|
|
@@ -51,6 +51,9 @@ export class ReconnectionManager {
|
|
|
51
51
|
async handleChatDisconnected(err) {
|
|
52
52
|
if (!this.active)
|
|
53
53
|
return;
|
|
54
|
+
// Skip reconnect when the user (or ChatClient.disconnect/logout) closed it.
|
|
55
|
+
if (this.chatHub.intentionallyClosed)
|
|
56
|
+
return;
|
|
54
57
|
// withAutomaticReconnect already tried — this is a terminal disconnect.
|
|
55
58
|
// Attempt one more manual reconnect after optional token refresh.
|
|
56
59
|
if (this.isTokenExpiredError(err)) {
|
|
@@ -63,6 +66,8 @@ export class ReconnectionManager {
|
|
|
63
66
|
async handleNotificationDisconnected(err) {
|
|
64
67
|
if (!this.active)
|
|
65
68
|
return;
|
|
69
|
+
if (this.notificationHub.intentionallyClosed)
|
|
70
|
+
return;
|
|
66
71
|
if (this.isTokenExpiredError(err)) {
|
|
67
72
|
const newToken = await this.onTokenExpired?.();
|
|
68
73
|
if (!newToken)
|
|
@@ -75,13 +80,18 @@ export class ReconnectionManager {
|
|
|
75
80
|
// ---------------------------------------------------------------------------
|
|
76
81
|
/**
|
|
77
82
|
* Determine if the disconnect error is likely due to token expiry (HTTP 401).
|
|
78
|
-
* SignalR surfaces
|
|
83
|
+
* SignalR surfaces these conditions only as text in the error message, so this
|
|
84
|
+
* is a best-effort heuristic that matches the most common phrasings.
|
|
79
85
|
*/
|
|
80
86
|
isTokenExpiredError(err) {
|
|
81
87
|
if (!err)
|
|
82
88
|
return false;
|
|
83
|
-
const msg = err.message ?? '';
|
|
84
|
-
return msg.includes('401') ||
|
|
89
|
+
const msg = (err.message ?? '').toLowerCase();
|
|
90
|
+
return (msg.includes('401') ||
|
|
91
|
+
msg.includes('unauthorized') ||
|
|
92
|
+
msg.includes('expired') ||
|
|
93
|
+
msg.includes('invalid_token') ||
|
|
94
|
+
msg.includes('invalid token'));
|
|
85
95
|
}
|
|
86
96
|
/**
|
|
87
97
|
* Attempt to reconnect a hub with exponential backoff (max 3 retries).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReconnectionManager.js","sourceRoot":"","sources":["../../src/realtime/ReconnectionManager.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAoBxD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,mBAAmB;IAW9B,YAAY,OAAmC;QAH/C,6DAA6D;QACrD,WAAM,GAAG,KAAK,CAAC;QAGrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAChD,cAAc,EACd,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAC/C,CAAC;QAEF,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAChE,cAAc,EACd,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,CACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,mCAAmC,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,2BAA2B,GAAG,SAAS,CAAC;QAC7C,IAAI,CAAC,mCAAmC,GAAG,SAAS,CAAC;IACvD,CAAC;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,8EAA8E;IAEtE,KAAK,CAAC,sBAAsB,CAAC,GAAsB;QACzD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"ReconnectionManager.js","sourceRoot":"","sources":["../../src/realtime/ReconnectionManager.ts"],"names":[],"mappings":"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"}
|
package/dist/types/auth.d.ts
CHANGED
|
@@ -22,8 +22,8 @@ export interface AuthUserInfo {
|
|
|
22
22
|
id: string;
|
|
23
23
|
uniqueName: string;
|
|
24
24
|
fullName: string;
|
|
25
|
-
/** Plain URL string, not MediaReference */
|
|
26
|
-
avatar?: string;
|
|
25
|
+
/** Plain URL string, not MediaReference. Server may return `null` explicitly when no avatar exists. */
|
|
26
|
+
avatar?: string | null;
|
|
27
27
|
/** Role of the user, e.g. 'dev'. null for Google/DsAccount users. */
|
|
28
28
|
role?: string | null;
|
|
29
29
|
}
|
package/dist/types/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAExF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAExF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,uGAAuG;IACvG,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB"}
|
package/dist/types/block.d.ts
CHANGED
|
@@ -93,7 +93,7 @@ export interface CardField {
|
|
|
93
93
|
export interface ActionButton {
|
|
94
94
|
label: string;
|
|
95
95
|
action: ButtonAction;
|
|
96
|
-
value
|
|
96
|
+
value?: string | null;
|
|
97
97
|
style: ButtonStyle;
|
|
98
98
|
}
|
|
99
99
|
export interface CardBlock {
|
|
@@ -145,4 +145,19 @@ export declare function isCardBlock(b: Block): b is CardBlock;
|
|
|
145
145
|
export declare function isCarouselBlock(b: Block): b is CarouselBlock;
|
|
146
146
|
export declare function isDividerBlock(b: Block): b is DividerBlock;
|
|
147
147
|
export declare function isCustomBlock(b: Block): b is CustomBlock;
|
|
148
|
+
/**
|
|
149
|
+
* Re-construct a block object with `$type` as the first property.
|
|
150
|
+
*
|
|
151
|
+
* The server's polymorphic deserializer requires `$type` to appear as the
|
|
152
|
+
* first property in every block JSON payload (gateway spec §13). JavaScript
|
|
153
|
+
* engines preserve insertion order for string keys (ES2015+), so reassembling
|
|
154
|
+
* via destructure-then-spread guarantees the correct serialization order.
|
|
155
|
+
*
|
|
156
|
+
* `CarouselBlock` is the only block type containing nested blocks (its `cards`
|
|
157
|
+
* array of `CardBlock`); each nested card is recursively normalized so the
|
|
158
|
+
* spec rule holds at every level.
|
|
159
|
+
*/
|
|
160
|
+
export declare function withTypeFirst<T extends Block>(block: T): T;
|
|
161
|
+
/** Apply {@link withTypeFirst} to every block in an array. */
|
|
162
|
+
export declare function normalizeBlocksForSend<T extends Block>(blocks: T[]): T[];
|
|
148
163
|
//# sourceMappingURL=block.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/types/block.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/types/block.ts"],"names":[],"mappings":"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"}
|
package/dist/types/block.js
CHANGED
|
@@ -44,4 +44,34 @@ export function isDividerBlock(b) {
|
|
|
44
44
|
export function isCustomBlock(b) {
|
|
45
45
|
return b.$type === 'custom';
|
|
46
46
|
}
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Block serialization helpers
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* Re-construct a block object with `$type` as the first property.
|
|
52
|
+
*
|
|
53
|
+
* The server's polymorphic deserializer requires `$type` to appear as the
|
|
54
|
+
* first property in every block JSON payload (gateway spec §13). JavaScript
|
|
55
|
+
* engines preserve insertion order for string keys (ES2015+), so reassembling
|
|
56
|
+
* via destructure-then-spread guarantees the correct serialization order.
|
|
57
|
+
*
|
|
58
|
+
* `CarouselBlock` is the only block type containing nested blocks (its `cards`
|
|
59
|
+
* array of `CardBlock`); each nested card is recursively normalized so the
|
|
60
|
+
* spec rule holds at every level.
|
|
61
|
+
*/
|
|
62
|
+
export function withTypeFirst(block) {
|
|
63
|
+
const { $type, ...rest } = block;
|
|
64
|
+
if (block.$type === 'carousel') {
|
|
65
|
+
return {
|
|
66
|
+
$type,
|
|
67
|
+
...rest,
|
|
68
|
+
cards: block.cards.map((card) => withTypeFirst(card)),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return { $type, ...rest };
|
|
72
|
+
}
|
|
73
|
+
/** Apply {@link withTypeFirst} to every block in an array. */
|
|
74
|
+
export function normalizeBlocksForSend(blocks) {
|
|
75
|
+
return blocks.map(withTypeFirst);
|
|
76
|
+
}
|
|
47
77
|
//# sourceMappingURL=block.js.map
|
package/dist/types/block.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/types/block.ts"],"names":[],"mappings":"AAAA,uDAAuD;AA2KvD,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAQ;IACzC,OAAO,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAQ;IACtC,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAQ;IACrC,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAQ;IACpC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAQ;IACtC,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAQ;IACrC,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAQ;IACpC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/types/block.ts"],"names":[],"mappings":"AAAA,uDAAuD;AA2KvD,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAQ;IACzC,OAAO,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAQ;IACtC,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAQ;IACrC,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAQ;IACpC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAQ;IACtC,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAQ;IACrC,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAQ;IACpC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAkB,KAAQ;IACrD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACjC,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK;YACL,GAAG,IAAI;YACP,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACjD,CAAC;IACT,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAO,CAAC;AACjC,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,sBAAsB,CAAkB,MAAW;IACjE,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/types/bot.d.ts
CHANGED
|
@@ -11,11 +11,10 @@ import type { MediaReference } from './common.js';
|
|
|
11
11
|
export interface BotDto {
|
|
12
12
|
id: string;
|
|
13
13
|
participantId: string;
|
|
14
|
-
description?: string;
|
|
15
|
-
metadata?: Record<string, unknown
|
|
14
|
+
description?: string | null;
|
|
15
|
+
metadata?: Record<string, unknown> | null;
|
|
16
16
|
kafkaTopic: string;
|
|
17
17
|
isActive: boolean;
|
|
18
|
-
rateLimitPerSecond: number;
|
|
19
18
|
listenAllGroupMessages: boolean;
|
|
20
19
|
createdBy: string;
|
|
21
20
|
/** ISO 8601 */
|
|
@@ -30,7 +29,6 @@ export interface CreateBotRequest {
|
|
|
30
29
|
description?: string;
|
|
31
30
|
metadata?: Record<string, unknown>;
|
|
32
31
|
kafkaTopic: string;
|
|
33
|
-
rateLimitPerSecond?: number;
|
|
34
32
|
listenAllGroupMessages?: boolean;
|
|
35
33
|
}
|
|
36
34
|
export interface UpdateBotRequest {
|
|
@@ -39,10 +37,6 @@ export interface UpdateBotRequest {
|
|
|
39
37
|
avatar?: MediaReference;
|
|
40
38
|
description?: string;
|
|
41
39
|
metadata?: Record<string, unknown>;
|
|
42
|
-
rateLimitPerSecond?: number;
|
|
43
40
|
listenAllGroupMessages?: boolean;
|
|
44
41
|
}
|
|
45
|
-
export interface RegenerateKeyResponse {
|
|
46
|
-
apiKey: string;
|
|
47
|
-
}
|
|
48
42
|
//# sourceMappingURL=bot.d.ts.map
|
package/dist/types/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/types/bot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/types/bot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB,EAAE,OAAO,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAElC"}
|