@manonero/chat-client-sdk 1.0.0-beta.5 → 1.0.0-beta.6
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 +35 -16
- package/dist/errors/ChatApiError.d.ts +7 -1
- package/dist/errors/ChatApiError.d.ts.map +1 -1
- package/dist/errors/ChatApiError.js +5 -4
- package/dist/errors/ChatApiError.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/types/auth.d.ts +2 -2
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/bot.d.ts +2 -2
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/conversation.d.ts +6 -5
- package/dist/types/conversation.d.ts.map +1 -1
- package/dist/types/message.d.ts +5 -2
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/participant.d.ts +2 -2
- package/dist/types/participant.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -335,8 +335,8 @@ interface AuthUserInfo {
|
|
|
335
335
|
id: string;
|
|
336
336
|
uniqueName: string;
|
|
337
337
|
fullName: string;
|
|
338
|
-
avatar?: string;
|
|
339
|
-
role?: string | null;
|
|
338
|
+
avatar?: string | null; // URL thuần (KHÔNG phải MediaReference); server có thể trả null
|
|
339
|
+
role?: string | null; // 'dev' với dev users; null với Google/DsAccount users
|
|
340
340
|
}
|
|
341
341
|
```
|
|
342
342
|
|
|
@@ -389,8 +389,8 @@ interface ParticipantDto {
|
|
|
389
389
|
id: string;
|
|
390
390
|
uniqueName: string;
|
|
391
391
|
fullName: string;
|
|
392
|
-
avatar?: MediaReference;
|
|
393
|
-
gender?: string;
|
|
392
|
+
avatar?: MediaReference | null; // hỗ trợ cả internal storageKey lẫn external URL; server có thể trả null
|
|
393
|
+
gender?: string | null;
|
|
394
394
|
isBot: boolean;
|
|
395
395
|
isOnline: boolean;
|
|
396
396
|
lastSeenAt?: string | null; // ISO 8601, null khi đang online
|
|
@@ -591,8 +591,8 @@ type ConversationType = 'Group' | 'OneToOne' | 'Self';
|
|
|
591
591
|
interface ConversationDto {
|
|
592
592
|
id: string;
|
|
593
593
|
type: ConversationType;
|
|
594
|
-
name?: string;
|
|
595
|
-
avatar?: MediaReference;
|
|
594
|
+
name?: string | null; // Tên nhóm (chỉ Group); null cho OneToOne/Self
|
|
595
|
+
avatar?: MediaReference | null;
|
|
596
596
|
ownerId: string;
|
|
597
597
|
lastMessageAt?: string | null; // ISO 8601, null khi chưa có tin nhắn
|
|
598
598
|
lastMessageId?: string | null; // null khi chưa có tin nhắn
|
|
@@ -616,8 +616,8 @@ interface ConversationParticipantDto {
|
|
|
616
616
|
interface ConversationListItemDto {
|
|
617
617
|
id: string;
|
|
618
618
|
type: ConversationType;
|
|
619
|
-
name?: string;
|
|
620
|
-
avatar?: MediaReference;
|
|
619
|
+
name?: string | null; // null cho OneToOne/Self
|
|
620
|
+
avatar?: MediaReference | null;
|
|
621
621
|
lastMessageAt?: string | null; // ISO 8601
|
|
622
622
|
lastMessageId?: string | null;
|
|
623
623
|
lastMessage?: MessageDto | null; // Preview tin nhắn cuối, null khi chưa có tin nhắn
|
|
@@ -881,18 +881,35 @@ const result = await client.files.upload(uploadUrl, file, (loaded, total) => {
|
|
|
881
881
|
|
|
882
882
|
> Khi có `onProgress`, SDK dùng XHR thay vì fetch (vì fetch không hỗ trợ upload progress events).
|
|
883
883
|
|
|
884
|
-
### `getDownloadUrl(storageKey
|
|
884
|
+
### `getDownloadUrl(storageKey, signed?): string`
|
|
885
885
|
|
|
886
886
|
Tạo URL tải file tuyệt đối (dùng để hiển thị ảnh, tải xuống, v.v.).
|
|
887
887
|
|
|
888
888
|
```ts
|
|
889
|
+
// URL public (mặc định)
|
|
889
890
|
const url = client.files.getDownloadUrl('01HXABCDEF/photo.jpg');
|
|
890
891
|
// → "https://chat-api.example.com/api/files/01HXABCDEF/photo.jpg"
|
|
891
892
|
```
|
|
892
893
|
|
|
894
|
+
#### Signed URL (kiểm soát truy cập)
|
|
895
|
+
|
|
896
|
+
Khi server bật signed download (kiểm soát truy cập có thời hạn), truyền `expires` + `sig` ở tham số thứ hai:
|
|
897
|
+
|
|
898
|
+
```ts
|
|
899
|
+
const url = client.files.getDownloadUrl('01HXABCDEF/photo.jpg', {
|
|
900
|
+
expires: '2026-03-26T13:00:00.0000000Z',
|
|
901
|
+
sig: 'abc123...',
|
|
902
|
+
});
|
|
903
|
+
// → ".../api/files/01HXABCDEF/photo.jpg?expires=...&sig=abc123..."
|
|
904
|
+
```
|
|
905
|
+
|
|
906
|
+
> Server trả `400 Bad Request` (title `Invalid Signature`) nếu URL bị sửa hoặc đã hết hạn. `expires` và `sig` thường lấy từ nguồn server-issued tương ứng (không tự ghép).
|
|
907
|
+
|
|
908
|
+
> **Encoding:** `storageKey` có thể chứa `/` — SDK giữ `/` làm phân cách path; các ký tự đặc biệt khác (space, `?`, `#`, `%`...) tự động được percent-encode theo từng segment.
|
|
909
|
+
|
|
893
910
|
### `delete(storageKey: string): Promise<void>`
|
|
894
911
|
|
|
895
|
-
Xóa file. Chỉ người upload mới có thể xóa. `
|
|
912
|
+
Xóa file. Chỉ người upload mới có thể xóa. Cùng quy tắc encoding như `getDownloadUrl()`: `/` được giữ, ký tự đặc biệt khác tự động percent-encoded.
|
|
896
913
|
|
|
897
914
|
```ts
|
|
898
915
|
await client.files.delete('01HXABCDEF/photo.jpg');
|
|
@@ -1006,8 +1023,8 @@ await client.bots.delete('bot-id');
|
|
|
1006
1023
|
interface BotDto {
|
|
1007
1024
|
id: string;
|
|
1008
1025
|
participantId: string; // Dùng để lấy name/avatar từ ParticipantApi
|
|
1009
|
-
description?: string;
|
|
1010
|
-
metadata?: Record<string, unknown
|
|
1026
|
+
description?: string | null;
|
|
1027
|
+
metadata?: Record<string, unknown> | null;
|
|
1011
1028
|
kafkaTopic: string; // KHÔNG thể thay đổi sau khi tạo
|
|
1012
1029
|
isActive: boolean;
|
|
1013
1030
|
rateLimitPerSecond: number;
|
|
@@ -1997,8 +2014,9 @@ interface SystemEventInfo {
|
|
|
1997
2014
|
type: SystemEventType;
|
|
1998
2015
|
actorId?: string | null; // null/undefined khi không có actor (vd. MemberLeft tự rời)
|
|
1999
2016
|
targetIds?: string[];
|
|
2000
|
-
// Tất cả giá trị đều là string (vd. ConversationRenamed → { newName: "Team Beta" })
|
|
2001
|
-
metadata
|
|
2017
|
+
// Tất cả giá trị đều là string (vd. ConversationRenamed → { newName: "Team Beta" }).
|
|
2018
|
+
// Server có thể trả null cho event không kèm metadata (vd. MemberAdded thuần).
|
|
2019
|
+
metadata?: Record<string, string> | null;
|
|
2002
2020
|
}
|
|
2003
2021
|
|
|
2004
2022
|
// SignalR (ChatHub) version — kế thừa SystemEventInfo, thêm display names
|
|
@@ -2160,10 +2178,11 @@ try {
|
|
|
2160
2178
|
| `status` | `number` | HTTP status code |
|
|
2161
2179
|
| `title` | `string` | Tiêu đề lỗi (từ RFC 7807 `title`) |
|
|
2162
2180
|
| `detail` | `string \| undefined` | Chi tiết lỗi (từ RFC 7807 `detail`) |
|
|
2181
|
+
| `type` | `string \| undefined` | URI tham chiếu RFC 7807 `type` (nếu server gửi). `undefined` cho proxy errors và lỗi sinh nội bộ (timeout/network/parse) |
|
|
2163
2182
|
| `message` | `string` | `detail ?? title` (kế thừa từ `Error`) |
|
|
2164
2183
|
| `name` | `string` | Luôn là `"ChatApiError"` |
|
|
2165
2184
|
|
|
2166
|
-
Server trả lỗi dạng RFC 7807: `{ status, title, detail }`. Endpoint proxy trả `{ detail }` đơn giản hơn — SDK xử lý cả hai.
|
|
2185
|
+
Server trả lỗi dạng RFC 7807: `{ type?, status, title, detail }`. Endpoint proxy trả `{ detail }` đơn giản hơn — SDK xử lý cả hai.
|
|
2167
2186
|
|
|
2168
2187
|
### Static methods
|
|
2169
2188
|
|
|
@@ -2194,7 +2213,7 @@ interface ProblemDetails {
|
|
|
2194
2213
|
status: number;
|
|
2195
2214
|
title: string;
|
|
2196
2215
|
detail?: string;
|
|
2197
|
-
type?: string; // URI
|
|
2216
|
+
type?: string; // URI tham chiếu (RFC 7807) — `ChatApiError.fromProblemDetails` sẽ forward sang `error.type`
|
|
2198
2217
|
}
|
|
2199
2218
|
```
|
|
2200
2219
|
|
|
@@ -10,7 +10,13 @@ export declare class ChatApiError extends Error {
|
|
|
10
10
|
readonly status: number;
|
|
11
11
|
readonly title: string;
|
|
12
12
|
readonly detail: string | undefined;
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* RFC 7807 problem `type` URI (e.g. "https://tools.ietf.org/html/rfc9110#section-15.5.1").
|
|
15
|
+
* Set when the server emits a typed problem document; `undefined` for proxy errors
|
|
16
|
+
* and synthetic SDK errors (timeouts, network failures, parse errors).
|
|
17
|
+
*/
|
|
18
|
+
readonly type: string | undefined;
|
|
19
|
+
constructor(status: number, title: string, detail?: string, type?: string);
|
|
14
20
|
/**
|
|
15
21
|
* Parse a ChatApiError from a failed HTTP response.
|
|
16
22
|
* Tries to parse the body as JSON; falls back to status text.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatApiError.d.ts","sourceRoot":"","sources":["../../src/errors/ChatApiError.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatApiError.d.ts","sourceRoot":"","sources":["../../src/errors/ChatApiError.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEtB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAWzE;;;OAGG;WACU,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IA+BpE,gEAAgE;IAChE,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,cAAc,GAAG,YAAY;CAG5D"}
|
|
@@ -7,12 +7,13 @@
|
|
|
7
7
|
* 2. Proxy error simple: { detail } — /api/proxy/* endpoints
|
|
8
8
|
*/
|
|
9
9
|
export class ChatApiError extends Error {
|
|
10
|
-
constructor(status, title, detail) {
|
|
10
|
+
constructor(status, title, detail, type) {
|
|
11
11
|
super(detail ?? title);
|
|
12
12
|
this.name = 'ChatApiError';
|
|
13
13
|
this.status = status;
|
|
14
14
|
this.title = title;
|
|
15
15
|
this.detail = detail;
|
|
16
|
+
this.type = type;
|
|
16
17
|
// Maintain proper prototype chain for instanceof checks
|
|
17
18
|
Object.setPrototypeOf(this, ChatApiError.prototype);
|
|
18
19
|
}
|
|
@@ -31,9 +32,9 @@ export class ChatApiError extends Error {
|
|
|
31
32
|
}
|
|
32
33
|
if (body !== null && typeof body === 'object') {
|
|
33
34
|
const obj = body;
|
|
34
|
-
// RFC 7807 full format: { status, title, detail }
|
|
35
|
+
// RFC 7807 full format: { type?, status, title, detail }
|
|
35
36
|
if (typeof obj['title'] === 'string') {
|
|
36
|
-
return new ChatApiError(typeof obj['status'] === 'number' ? obj['status'] : response.status, obj['title'], typeof obj['detail'] === 'string' ? obj['detail'] : undefined);
|
|
37
|
+
return new ChatApiError(typeof obj['status'] === 'number' ? obj['status'] : response.status, obj['title'], typeof obj['detail'] === 'string' ? obj['detail'] : undefined, typeof obj['type'] === 'string' ? obj['type'] : undefined);
|
|
37
38
|
}
|
|
38
39
|
// Proxy error simple format: { detail }
|
|
39
40
|
if (typeof obj['detail'] === 'string') {
|
|
@@ -44,7 +45,7 @@ export class ChatApiError extends Error {
|
|
|
44
45
|
}
|
|
45
46
|
/** Convenience: create from a ProblemDetails object directly */
|
|
46
47
|
static fromProblemDetails(pd) {
|
|
47
|
-
return new ChatApiError(pd.status, pd.title, pd.detail);
|
|
48
|
+
return new ChatApiError(pd.status, pd.title, pd.detail, pd.type);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
//# sourceMappingURL=ChatApiError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatApiError.js","sourceRoot":"","sources":["../../src/errors/ChatApiError.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAI7D;;;;;;GAMG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"ChatApiError.js","sourceRoot":"","sources":["../../src/errors/ChatApiError.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAI7D;;;;;;GAMG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAWrC,YAAY,MAAc,EAAE,KAAa,EAAE,MAAe,EAAE,IAAa;QACvE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,wDAAwD;QACxD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAAkB;QAC1C,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;YAC9C,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAA+B,CAAC;YAE5C,yDAAyD;YACzD,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,IAAI,YAAY,CACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EACnE,GAAG,CAAC,OAAO,CAAC,EACZ,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAC1D,CAAC;YACJ,CAAC;YAED,wCAAwC;YACxC,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACtC,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,kBAAkB,CAAC,EAAkB;QAC1C,OAAO,IAAI,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;CACF"}
|
package/dist/http/FileApi.d.ts
CHANGED
|
@@ -28,14 +28,26 @@ export declare class FileApi {
|
|
|
28
28
|
upload(uploadUrl: string, file: File | Blob, onProgress?: UploadProgressCallback): Promise<UploadResponse>;
|
|
29
29
|
/**
|
|
30
30
|
* Returns the absolute download URL for a given storageKey.
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
*
|
|
32
|
+
* Default download is public — no auth required:
|
|
33
|
+
* getDownloadUrl("01HXABCDEF/photo.jpg")
|
|
34
|
+
* → "{baseUrl}/api/files/01HXABCDEF/photo.jpg"
|
|
35
|
+
*
|
|
36
|
+
* Pass `signed` to build a signed URL (spec §8.3) when the server enforces
|
|
37
|
+
* controlled access. Both `expires` and `sig` must be supplied — typically
|
|
38
|
+
* forwarded from the upload-url response or another server-issued source.
|
|
39
|
+
* Server returns 400 Bad Request (title `Invalid Signature`) if the URL has
|
|
40
|
+
* been tampered with or has expired.
|
|
33
41
|
*/
|
|
34
|
-
getDownloadUrl(storageKey: string
|
|
42
|
+
getDownloadUrl(storageKey: string, signed?: {
|
|
43
|
+
expires: string;
|
|
44
|
+
sig: string;
|
|
45
|
+
}): string;
|
|
35
46
|
/**
|
|
36
47
|
* DELETE /api/files/{storageKey}
|
|
37
48
|
* Delete an uploaded file. Only the uploader can delete.
|
|
38
|
-
* storageKey may contain path separators (e.g. "01HXABCDEF/photo.jpg") —
|
|
49
|
+
* storageKey may contain path separators (e.g. "01HXABCDEF/photo.jpg") — `/`
|
|
50
|
+
* is preserved as a path delimiter; other special characters are percent-encoded.
|
|
39
51
|
*/
|
|
40
52
|
delete(storageKey: string): Promise<void>;
|
|
41
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileApi.d.ts","sourceRoot":"","sources":["../../src/http/FileApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,IAAI,EAAE,UAAU;IAI5B;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIlF;;;;;;;;;OASG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,UAAU,CAAC,EAAE,sBAAsB,GAClC,OAAO,CAAC,cAAc,CAAC;IAS1B
|
|
1
|
+
{"version":3,"file":"FileApi.d.ts","sourceRoot":"","sources":["../../src/http/FileApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,IAAI,EAAE,UAAU;IAI5B;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIlF;;;;;;;;;OASG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,UAAU,CAAC,EAAE,sBAAsB,GAClC,OAAO,CAAC,cAAc,CAAC;IAS1B;;;;;;;;;;;;OAYG;IACH,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GACxC,MAAM;IAOT;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;;;;OAIG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;CAQ3F"}
|
package/dist/http/FileApi.js
CHANGED
|
@@ -37,19 +37,32 @@ export class FileApi {
|
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Returns the absolute download URL for a given storageKey.
|
|
40
|
-
*
|
|
41
|
-
*
|
|
40
|
+
*
|
|
41
|
+
* Default download is public — no auth required:
|
|
42
|
+
* getDownloadUrl("01HXABCDEF/photo.jpg")
|
|
43
|
+
* → "{baseUrl}/api/files/01HXABCDEF/photo.jpg"
|
|
44
|
+
*
|
|
45
|
+
* Pass `signed` to build a signed URL (spec §8.3) when the server enforces
|
|
46
|
+
* controlled access. Both `expires` and `sig` must be supplied — typically
|
|
47
|
+
* forwarded from the upload-url response or another server-issued source.
|
|
48
|
+
* Server returns 400 Bad Request (title `Invalid Signature`) if the URL has
|
|
49
|
+
* been tampered with or has expired.
|
|
42
50
|
*/
|
|
43
|
-
getDownloadUrl(storageKey) {
|
|
44
|
-
|
|
51
|
+
getDownloadUrl(storageKey, signed) {
|
|
52
|
+
const path = `/api/files/${encodeStorageKeyPath(storageKey)}`;
|
|
53
|
+
if (!signed)
|
|
54
|
+
return `${this.http.baseUrl}${path}`;
|
|
55
|
+
const qs = new URLSearchParams({ expires: signed.expires, sig: signed.sig });
|
|
56
|
+
return `${this.http.baseUrl}${path}?${qs.toString()}`;
|
|
45
57
|
}
|
|
46
58
|
/**
|
|
47
59
|
* DELETE /api/files/{storageKey}
|
|
48
60
|
* Delete an uploaded file. Only the uploader can delete.
|
|
49
|
-
* storageKey may contain path separators (e.g. "01HXABCDEF/photo.jpg") —
|
|
61
|
+
* storageKey may contain path separators (e.g. "01HXABCDEF/photo.jpg") — `/`
|
|
62
|
+
* is preserved as a path delimiter; other special characters are percent-encoded.
|
|
50
63
|
*/
|
|
51
64
|
delete(storageKey) {
|
|
52
|
-
return this.http.delete(`/api/files/${storageKey}`);
|
|
65
|
+
return this.http.delete(`/api/files/${encodeStorageKeyPath(storageKey)}`);
|
|
53
66
|
}
|
|
54
67
|
/**
|
|
55
68
|
* Convenience method: create upload URL then immediately upload the file.
|
|
@@ -65,4 +78,14 @@ export class FileApi {
|
|
|
65
78
|
return this.upload(uploadUrl, file, onProgress);
|
|
66
79
|
}
|
|
67
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Percent-encode each segment of a storage key while preserving `/` as the
|
|
83
|
+
* path separator. The server's catch-all route accepts the unencoded key it
|
|
84
|
+
* generated, but a key containing characters like spaces, `?`, `#`, or `%`
|
|
85
|
+
* would otherwise corrupt the URL. Pure pass-through (the previous behaviour)
|
|
86
|
+
* is preserved for the common case where keys are ULID/filename-safe.
|
|
87
|
+
*/
|
|
88
|
+
function encodeStorageKeyPath(storageKey) {
|
|
89
|
+
return storageKey.split('/').map(encodeURIComponent).join('/');
|
|
90
|
+
}
|
|
68
91
|
//# sourceMappingURL=FileApi.js.map
|
package/dist/http/FileApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileApi.js","sourceRoot":"","sources":["../../src/http/FileApi.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C;;;;GAIG;AACH,MAAM,OAAO,OAAO;IAGlB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAA+B;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0B,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CACJ,SAAiB,EACjB,IAAiB,EACjB,UAAmC;QAEnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAiB,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAiB,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"FileApi.js","sourceRoot":"","sources":["../../src/http/FileApi.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C;;;;GAIG;AACH,MAAM,OAAO,OAAO;IAGlB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAA+B;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0B,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CACJ,SAAiB,EACjB,IAAiB,EACjB,UAAmC;QAEnC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAiB,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAiB,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CACZ,UAAkB,EAClB,MAAyC;QAEzC,MAAM,IAAI,GAAG,cAAc,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,MAAM;YAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7E,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAkB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,cAAc,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,IAAU,EAAE,UAAmC;QAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;YAC/C,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,QAAQ,EAAE,IAAI,CAAC,IAAI;SACpB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC"}
|
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/bot.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ 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
18
|
rateLimitPerSecond: number;
|
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,kBAAkB,EAAE,MAAM,CAAC;IAC3B,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,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,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,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAElC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -21,9 +21,9 @@ export interface ConversationParticipantDto {
|
|
|
21
21
|
export interface ConversationDto {
|
|
22
22
|
id: string;
|
|
23
23
|
type: ConversationType;
|
|
24
|
-
/** Name (applicable for Group conversations) */
|
|
25
|
-
name?: string;
|
|
26
|
-
avatar?: MediaReference;
|
|
24
|
+
/** Name (applicable for Group conversations). Server returns `null` for OneToOne/Self. */
|
|
25
|
+
name?: string | null;
|
|
26
|
+
avatar?: MediaReference | null;
|
|
27
27
|
ownerId: string;
|
|
28
28
|
/** ISO 8601, null when no messages yet */
|
|
29
29
|
lastMessageAt?: string | null;
|
|
@@ -38,8 +38,9 @@ export interface ConversationDto {
|
|
|
38
38
|
export interface ConversationListItemDto {
|
|
39
39
|
id: string;
|
|
40
40
|
type: ConversationType;
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
/** Server returns `null` for OneToOne/Self conversations. */
|
|
42
|
+
name?: string | null;
|
|
43
|
+
avatar?: MediaReference | null;
|
|
43
44
|
/** ISO 8601, null when conversation has no messages yet */
|
|
44
45
|
lastMessageAt?: string | null;
|
|
45
46
|
/** null when conversation has no messages yet */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/types/conversation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7D,wDAAwD;AACxD,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/types/conversation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7D,wDAAwD;AACxD,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,0BAA0B,EAAE,CAAC;CAC5C;AAED,gDAAgD;AAChD,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,+EAA+E;IAC/E,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,8CAA8C;AAC9C,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wFAAwF;AACxF,MAAM,MAAM,2BAA2B,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;AAExE,0EAA0E;AAC1E,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,MAAM,CAAC;AAE1D,+CAA+C;AAC/C,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAE9F;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,0BAA0B,CAAC;IACtC,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAElB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGxB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAG7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B"}
|
package/dist/types/message.d.ts
CHANGED
|
@@ -7,8 +7,11 @@ export interface SystemEventInfo {
|
|
|
7
7
|
/** null when there is no actor (e.g. MemberLeft — user left voluntarily) */
|
|
8
8
|
actorId?: string | null;
|
|
9
9
|
targetIds?: string[];
|
|
10
|
-
/**
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* All values are strings per spec (e.g. ConversationRenamed → { newName: "..." }).
|
|
12
|
+
* Server may emit `null` (e.g. MemberAdded with no extra metadata).
|
|
13
|
+
*/
|
|
14
|
+
metadata?: Record<string, string> | null;
|
|
12
15
|
}
|
|
13
16
|
/** Reaction on a single emoji (REST API version — flat array item) */
|
|
14
17
|
export interface ReactionGroup {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnD,MAAM,MAAM,eAAe,GACvB,qBAAqB,GACrB,eAAe,GACf,aAAa,GACb,eAAe,GACf,YAAY,GACZ,QAAQ,CAAC;AAEb,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnD,MAAM,MAAM,eAAe,GACvB,qBAAqB,GACrB,eAAe,GACf,aAAa,GACb,eAAe,GACf,YAAY,GACZ,QAAQ,CAAC;AAEb,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC1C;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC3B,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gDAAgD;IAChD,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;CACrC;AAED,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -4,8 +4,8 @@ export interface ParticipantDto {
|
|
|
4
4
|
uniqueName: string;
|
|
5
5
|
fullName: string;
|
|
6
6
|
/** Supports both internal storage and external URL */
|
|
7
|
-
avatar?: MediaReference;
|
|
8
|
-
gender?: string;
|
|
7
|
+
avatar?: MediaReference | null;
|
|
8
|
+
gender?: string | null;
|
|
9
9
|
isBot: boolean;
|
|
10
10
|
isOnline: boolean;
|
|
11
11
|
/** ISO 8601, null when online */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"participant.d.ts","sourceRoot":"","sources":["../../src/types/participant.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,MAAM,CAAC,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"participant.d.ts","sourceRoot":"","sources":["../../src/types/participant.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gCAAgC;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|