@scalemule/chat 0.0.8 → 0.0.9
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/ChatClient-DQPHdUHX.d.cts +107 -0
- package/dist/ChatClient-DtUKF-4c.d.ts +107 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/core/ChatClient.d.ts +96 -0
- package/dist/core/ChatClient.d.ts.map +1 -0
- package/dist/core/EventEmitter.d.ts +11 -0
- package/dist/core/EventEmitter.d.ts.map +1 -0
- package/dist/core/MessageCache.d.ts +18 -0
- package/dist/core/MessageCache.d.ts.map +1 -0
- package/dist/core/OfflineQueue.d.ts +19 -0
- package/dist/core/OfflineQueue.d.ts.map +1 -0
- package/dist/element.d.cts +2 -0
- package/dist/element.d.ts +2 -0
- package/dist/element.d.ts.map +1 -0
- package/dist/embed/index.d.ts +2 -0
- package/dist/embed/index.d.ts.map +1 -0
- package/dist/factory.d.ts +8 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/iframe.d.cts +17 -0
- package/dist/iframe.d.ts +15 -0
- package/dist/iframe.d.ts.map +1 -0
- package/dist/index.d.cts +166 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/react-components/ChatInput.d.ts +24 -0
- package/dist/react-components/ChatInput.d.ts.map +1 -0
- package/dist/react-components/ChatMessageItem.d.ts +24 -0
- package/dist/react-components/ChatMessageItem.d.ts.map +1 -0
- package/dist/react-components/ChatMessageList.d.ts +31 -0
- package/dist/react-components/ChatMessageList.d.ts.map +1 -0
- package/dist/react-components/ChatThread.d.ts +19 -0
- package/dist/react-components/ChatThread.d.ts.map +1 -0
- package/dist/react-components/ConversationList.d.ts +13 -0
- package/dist/react-components/ConversationList.d.ts.map +1 -0
- package/dist/react-components/EmojiPicker.d.ts +15 -0
- package/dist/react-components/EmojiPicker.d.ts.map +1 -0
- package/dist/react-components/ReactionBar.d.ts +10 -0
- package/dist/react-components/ReactionBar.d.ts.map +1 -0
- package/dist/react-components/ReportDialog.d.ts +30 -0
- package/dist/react-components/ReportDialog.d.ts.map +1 -0
- package/dist/react-components/index.d.ts +10 -0
- package/dist/react-components/index.d.ts.map +1 -0
- package/dist/react-components/theme.d.ts +19 -0
- package/dist/react-components/theme.d.ts.map +1 -0
- package/dist/react-components/utils.d.ts +4 -0
- package/dist/react-components/utils.d.ts.map +1 -0
- package/dist/react.cjs +1833 -459
- package/dist/react.d.cts +229 -0
- package/dist/react.d.ts +72 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +1832 -461
- package/dist/shared/ChatController.d.ts +65 -0
- package/dist/shared/ChatController.d.ts.map +1 -0
- package/dist/shared/upload.d.ts +3 -0
- package/dist/shared/upload.d.ts.map +1 -0
- package/dist/support-widget.global.js +50 -25
- package/dist/support.d.ts +99 -0
- package/dist/support.d.ts.map +1 -0
- package/dist/transport/HttpTransport.d.ts +20 -0
- package/dist/transport/HttpTransport.d.ts.map +1 -0
- package/dist/transport/WebSocketTransport.d.ts +78 -0
- package/dist/transport/WebSocketTransport.d.ts.map +1 -0
- package/dist/types-COPVrm3K.d.cts +256 -0
- package/dist/types-COPVrm3K.d.ts +256 -0
- package/dist/types.d.ts +271 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/umd.d.ts +6 -0
- package/dist/umd.d.ts.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/widget/icons.d.ts +8 -0
- package/dist/widget/icons.d.ts.map +1 -0
- package/dist/widget/index.d.ts +2 -0
- package/dist/widget/index.d.ts.map +1 -0
- package/dist/widget/storage.d.ts +5 -0
- package/dist/widget/storage.d.ts.map +1 -0
- package/dist/widget/styles.d.ts +3 -0
- package/dist/widget/styles.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ApiResponse } from '../types';
|
|
2
|
+
export interface HttpTransportConfig {
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
apiKey?: string;
|
|
5
|
+
getToken?: () => Promise<string | null>;
|
|
6
|
+
timeout?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class HttpTransport {
|
|
9
|
+
private baseUrl;
|
|
10
|
+
private apiKey?;
|
|
11
|
+
private getToken?;
|
|
12
|
+
private timeout;
|
|
13
|
+
constructor(config: HttpTransportConfig);
|
|
14
|
+
get<T>(path: string): Promise<ApiResponse<T>>;
|
|
15
|
+
post<T>(path: string, body?: unknown): Promise<ApiResponse<T>>;
|
|
16
|
+
patch<T>(path: string, body?: unknown): Promise<ApiResponse<T>>;
|
|
17
|
+
del<T>(path: string): Promise<ApiResponse<T>>;
|
|
18
|
+
private request;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=HttpTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpTransport.d.ts","sourceRoot":"","sources":["../../src/transport/HttpTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,UAAU,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,CAA+B;IAChD,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,mBAAmB;IAOjC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI7C,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI9D,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI/D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAIrC,OAAO;CAyDtB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { EventEmitter } from '../core/EventEmitter';
|
|
2
|
+
import type { ConnectionStatus, PresenceMember } from '../types';
|
|
3
|
+
interface WsEventMap {
|
|
4
|
+
status: ConnectionStatus;
|
|
5
|
+
reconnecting: {
|
|
6
|
+
attempt: number;
|
|
7
|
+
};
|
|
8
|
+
message: {
|
|
9
|
+
channel: string;
|
|
10
|
+
data: unknown;
|
|
11
|
+
};
|
|
12
|
+
'presence:state': {
|
|
13
|
+
channel: string;
|
|
14
|
+
members: PresenceMember[];
|
|
15
|
+
};
|
|
16
|
+
'presence:join': {
|
|
17
|
+
channel: string;
|
|
18
|
+
user: PresenceMember;
|
|
19
|
+
};
|
|
20
|
+
'presence:leave': {
|
|
21
|
+
channel: string;
|
|
22
|
+
userId: string;
|
|
23
|
+
};
|
|
24
|
+
'presence:update': {
|
|
25
|
+
channel: string;
|
|
26
|
+
userId: string;
|
|
27
|
+
status: string;
|
|
28
|
+
userData?: unknown;
|
|
29
|
+
};
|
|
30
|
+
error: {
|
|
31
|
+
message: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export interface WebSocketTransportConfig {
|
|
35
|
+
baseUrl: string;
|
|
36
|
+
wsUrl?: string;
|
|
37
|
+
apiKey?: string;
|
|
38
|
+
getToken?: () => Promise<string | null>;
|
|
39
|
+
reconnect?: {
|
|
40
|
+
maxRetries?: number;
|
|
41
|
+
baseDelay?: number;
|
|
42
|
+
maxDelay?: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export declare class WebSocketTransport extends EventEmitter<WsEventMap> {
|
|
46
|
+
private ws;
|
|
47
|
+
private status;
|
|
48
|
+
private subscriptions;
|
|
49
|
+
private presenceChannels;
|
|
50
|
+
private reconnectAttempt;
|
|
51
|
+
private reconnectTimer;
|
|
52
|
+
private heartbeatTimer;
|
|
53
|
+
private config;
|
|
54
|
+
private maxRetries;
|
|
55
|
+
private baseDelay;
|
|
56
|
+
private maxDelay;
|
|
57
|
+
private ticketUrl;
|
|
58
|
+
private wsBaseUrl;
|
|
59
|
+
constructor(config: WebSocketTransportConfig);
|
|
60
|
+
getStatus(): ConnectionStatus;
|
|
61
|
+
connect(): Promise<void>;
|
|
62
|
+
disconnect(): void;
|
|
63
|
+
subscribe(channel: string): () => void;
|
|
64
|
+
unsubscribe(channel: string): void;
|
|
65
|
+
publish(channel: string, data: unknown): void;
|
|
66
|
+
joinPresence(channel: string, userData?: unknown): void;
|
|
67
|
+
leavePresence(channel: string): void;
|
|
68
|
+
private obtainTicket;
|
|
69
|
+
send(data: unknown): void;
|
|
70
|
+
private handleMessage;
|
|
71
|
+
private resubscribeAll;
|
|
72
|
+
private startHeartbeat;
|
|
73
|
+
private stopHeartbeat;
|
|
74
|
+
private scheduleReconnect;
|
|
75
|
+
private setStatus;
|
|
76
|
+
}
|
|
77
|
+
export {};
|
|
78
|
+
//# sourceMappingURL=WebSocketTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketTransport.d.ts","sourceRoot":"","sources":["../../src/transport/WebSocketTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAQjE,UAAU,UAAU;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5C,gBAAgB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IACjE,eAAe,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC;IAC3D,gBAAgB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,iBAAiB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3F,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,UAAU,CAAC;IAC9D,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,wBAAwB;IAc5C,SAAS,IAAI,gBAAgB;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C9B,UAAU,IAAI,IAAI;IAclB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,IAAI;IAUtC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOlC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAM7C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI;IAOvD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;YAOtB,YAAY;IA2B1B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAMzB,OAAO,CAAC,aAAa;IA6CrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
interface ChatConfig {
|
|
2
|
+
apiKey?: string;
|
|
3
|
+
embedToken?: string;
|
|
4
|
+
apiBaseUrl?: string;
|
|
5
|
+
wsUrl?: string;
|
|
6
|
+
applicationId?: string;
|
|
7
|
+
userId?: string;
|
|
8
|
+
sessionToken?: string;
|
|
9
|
+
getToken?: () => Promise<string | null>;
|
|
10
|
+
debug?: boolean;
|
|
11
|
+
reconnect?: {
|
|
12
|
+
maxRetries?: number;
|
|
13
|
+
baseDelay?: number;
|
|
14
|
+
maxDelay?: number;
|
|
15
|
+
};
|
|
16
|
+
messageCache?: {
|
|
17
|
+
maxMessages?: number;
|
|
18
|
+
maxConversations?: number;
|
|
19
|
+
};
|
|
20
|
+
offlineQueue?: boolean;
|
|
21
|
+
}
|
|
22
|
+
interface ApiResponse<T> {
|
|
23
|
+
data: T | null;
|
|
24
|
+
error: ApiError | null;
|
|
25
|
+
}
|
|
26
|
+
interface ApiError {
|
|
27
|
+
code: string;
|
|
28
|
+
message: string;
|
|
29
|
+
status: number;
|
|
30
|
+
details?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
interface Conversation {
|
|
33
|
+
id: string;
|
|
34
|
+
conversation_type: 'direct' | 'group' | 'broadcast' | 'ephemeral' | 'large_room' | 'support';
|
|
35
|
+
name?: string;
|
|
36
|
+
created_by?: string;
|
|
37
|
+
participant_count?: number;
|
|
38
|
+
last_message_at?: string;
|
|
39
|
+
unread_count?: number;
|
|
40
|
+
is_muted?: boolean;
|
|
41
|
+
last_message_preview?: string;
|
|
42
|
+
last_message_sender_id?: string;
|
|
43
|
+
counterparty_user_id?: string;
|
|
44
|
+
created_at: string;
|
|
45
|
+
participants?: Participant[];
|
|
46
|
+
}
|
|
47
|
+
interface Participant {
|
|
48
|
+
user_id: string;
|
|
49
|
+
role: string;
|
|
50
|
+
joined_at: string;
|
|
51
|
+
}
|
|
52
|
+
interface ChatMessage {
|
|
53
|
+
id: string;
|
|
54
|
+
content: string;
|
|
55
|
+
message_type: 'text' | 'image' | 'file' | 'system';
|
|
56
|
+
sender_id: string;
|
|
57
|
+
sender_type?: string;
|
|
58
|
+
sender_agent_model?: string;
|
|
59
|
+
attachments?: Attachment[];
|
|
60
|
+
reactions?: ReactionSummary[];
|
|
61
|
+
is_edited: boolean;
|
|
62
|
+
created_at: string;
|
|
63
|
+
}
|
|
64
|
+
interface ReactionSummary {
|
|
65
|
+
emoji: string;
|
|
66
|
+
count: number;
|
|
67
|
+
user_ids: string[];
|
|
68
|
+
}
|
|
69
|
+
interface Attachment {
|
|
70
|
+
file_id: string;
|
|
71
|
+
file_name: string;
|
|
72
|
+
file_size: number;
|
|
73
|
+
mime_type: string;
|
|
74
|
+
presigned_url?: string;
|
|
75
|
+
thumbnail_url?: string;
|
|
76
|
+
}
|
|
77
|
+
interface ReadStatus {
|
|
78
|
+
user_id: string;
|
|
79
|
+
last_read_at?: string;
|
|
80
|
+
}
|
|
81
|
+
interface ChatReaction {
|
|
82
|
+
id: string;
|
|
83
|
+
message_id: string;
|
|
84
|
+
user_id: string;
|
|
85
|
+
emoji: string;
|
|
86
|
+
action?: 'added' | 'removed';
|
|
87
|
+
timestamp?: string;
|
|
88
|
+
}
|
|
89
|
+
interface MessageEditedEvent {
|
|
90
|
+
id?: string;
|
|
91
|
+
message_id: string;
|
|
92
|
+
conversation_id: string;
|
|
93
|
+
content?: string;
|
|
94
|
+
new_content?: string;
|
|
95
|
+
editor_user_id?: string;
|
|
96
|
+
is_edited?: boolean;
|
|
97
|
+
updated_at?: string;
|
|
98
|
+
timestamp?: string;
|
|
99
|
+
}
|
|
100
|
+
interface ReactionEvent {
|
|
101
|
+
message_id: string;
|
|
102
|
+
conversation_id?: string;
|
|
103
|
+
user_id: string;
|
|
104
|
+
emoji: string;
|
|
105
|
+
action: 'added' | 'removed';
|
|
106
|
+
timestamp?: string;
|
|
107
|
+
}
|
|
108
|
+
interface PresenceMember {
|
|
109
|
+
user_id: string;
|
|
110
|
+
user_data?: unknown;
|
|
111
|
+
joined_at: string;
|
|
112
|
+
}
|
|
113
|
+
interface ChannelSettings {
|
|
114
|
+
publisher_user_ids?: string[];
|
|
115
|
+
linked_session_id?: string;
|
|
116
|
+
expires_at?: string;
|
|
117
|
+
max_participants?: number;
|
|
118
|
+
slow_mode_seconds?: number;
|
|
119
|
+
}
|
|
120
|
+
interface ChannelWithSettings {
|
|
121
|
+
id: string;
|
|
122
|
+
channel_type: string;
|
|
123
|
+
name?: string;
|
|
124
|
+
created_at: string;
|
|
125
|
+
linked_session_id?: string;
|
|
126
|
+
expires_at?: string;
|
|
127
|
+
participant_count: number;
|
|
128
|
+
}
|
|
129
|
+
interface CreateEphemeralChannelOptions {
|
|
130
|
+
linked_session_id: string;
|
|
131
|
+
name?: string;
|
|
132
|
+
ttl_minutes?: number;
|
|
133
|
+
}
|
|
134
|
+
interface CreateLargeRoomOptions {
|
|
135
|
+
name: string;
|
|
136
|
+
linked_session_id?: string;
|
|
137
|
+
max_participants?: number;
|
|
138
|
+
slow_mode_seconds?: number;
|
|
139
|
+
}
|
|
140
|
+
interface ChatEventMap {
|
|
141
|
+
connected: void;
|
|
142
|
+
disconnected: void;
|
|
143
|
+
reconnecting: {
|
|
144
|
+
attempt: number;
|
|
145
|
+
};
|
|
146
|
+
'message': {
|
|
147
|
+
message: ChatMessage;
|
|
148
|
+
conversationId: string;
|
|
149
|
+
};
|
|
150
|
+
'message:updated': {
|
|
151
|
+
message: ChatMessage;
|
|
152
|
+
conversationId: string;
|
|
153
|
+
update?: MessageEditedEvent;
|
|
154
|
+
};
|
|
155
|
+
'message:deleted': {
|
|
156
|
+
messageId: string;
|
|
157
|
+
conversationId: string;
|
|
158
|
+
};
|
|
159
|
+
'typing': {
|
|
160
|
+
userId: string;
|
|
161
|
+
conversationId: string;
|
|
162
|
+
};
|
|
163
|
+
'typing:stop': {
|
|
164
|
+
userId: string;
|
|
165
|
+
conversationId: string;
|
|
166
|
+
};
|
|
167
|
+
'presence:join': {
|
|
168
|
+
userId: string;
|
|
169
|
+
conversationId: string;
|
|
170
|
+
userData?: unknown;
|
|
171
|
+
};
|
|
172
|
+
'presence:leave': {
|
|
173
|
+
userId: string;
|
|
174
|
+
conversationId: string;
|
|
175
|
+
};
|
|
176
|
+
'presence:update': {
|
|
177
|
+
userId: string;
|
|
178
|
+
conversationId: string;
|
|
179
|
+
status: string;
|
|
180
|
+
userData?: unknown;
|
|
181
|
+
};
|
|
182
|
+
'presence:state': {
|
|
183
|
+
conversationId: string;
|
|
184
|
+
members: PresenceMember[];
|
|
185
|
+
};
|
|
186
|
+
'read': {
|
|
187
|
+
userId: string;
|
|
188
|
+
conversationId: string;
|
|
189
|
+
lastReadAt: string;
|
|
190
|
+
};
|
|
191
|
+
'reaction': {
|
|
192
|
+
reaction: ChatReaction;
|
|
193
|
+
conversationId: string;
|
|
194
|
+
action: 'added' | 'removed';
|
|
195
|
+
};
|
|
196
|
+
'room_upgraded': {
|
|
197
|
+
conversationId: string;
|
|
198
|
+
newType: 'large_room';
|
|
199
|
+
};
|
|
200
|
+
'delivery': {
|
|
201
|
+
messageId: string;
|
|
202
|
+
status: 'sent' | 'delivered' | 'read';
|
|
203
|
+
};
|
|
204
|
+
'inbox:update': {
|
|
205
|
+
conversationId: string;
|
|
206
|
+
messageId: string;
|
|
207
|
+
senderId: string;
|
|
208
|
+
preview: string;
|
|
209
|
+
};
|
|
210
|
+
'support:new': {
|
|
211
|
+
conversationId: string;
|
|
212
|
+
visitorName?: string;
|
|
213
|
+
};
|
|
214
|
+
'support:assigned': {
|
|
215
|
+
conversationId: string;
|
|
216
|
+
visitorName?: string;
|
|
217
|
+
visitorEmail?: string;
|
|
218
|
+
};
|
|
219
|
+
'error': {
|
|
220
|
+
code: string;
|
|
221
|
+
message: string;
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';
|
|
225
|
+
interface SendMessageOptions {
|
|
226
|
+
content: string;
|
|
227
|
+
message_type?: 'text' | 'image' | 'file';
|
|
228
|
+
attachments?: Attachment[];
|
|
229
|
+
}
|
|
230
|
+
interface ListConversationsOptions {
|
|
231
|
+
page?: number;
|
|
232
|
+
per_page?: number;
|
|
233
|
+
conversation_type?: 'direct' | 'group' | 'broadcast' | 'ephemeral' | 'large_room' | 'support';
|
|
234
|
+
}
|
|
235
|
+
interface UnreadTotalResponse {
|
|
236
|
+
unread_conversations: number;
|
|
237
|
+
unread_messages: number;
|
|
238
|
+
}
|
|
239
|
+
interface GetMessagesOptions {
|
|
240
|
+
limit?: number;
|
|
241
|
+
before?: string;
|
|
242
|
+
after?: string;
|
|
243
|
+
}
|
|
244
|
+
interface CreateConversationOptions {
|
|
245
|
+
conversation_type?: 'direct' | 'group';
|
|
246
|
+
name?: string;
|
|
247
|
+
participant_ids: string[];
|
|
248
|
+
}
|
|
249
|
+
interface MessagesResponse {
|
|
250
|
+
messages: ChatMessage[];
|
|
251
|
+
has_more?: boolean;
|
|
252
|
+
oldest_id?: string;
|
|
253
|
+
newest_id?: string;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export type { ApiResponse as A, ChatConfig as C, GetMessagesOptions as G, ListConversationsOptions as L, MessagesResponse as M, Participant as P, ReadStatus as R, SendMessageOptions as S, UnreadTotalResponse as U, ChatEventMap as a, ConnectionStatus as b, CreateConversationOptions as c, Conversation as d, ChatMessage as e, Attachment as f, ChannelSettings as g, ChannelWithSettings as h, CreateEphemeralChannelOptions as i, CreateLargeRoomOptions as j, ApiError as k, ChatReaction as l, MessageEditedEvent as m, PresenceMember as n, ReactionEvent as o, ReactionSummary as p };
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
interface ChatConfig {
|
|
2
|
+
apiKey?: string;
|
|
3
|
+
embedToken?: string;
|
|
4
|
+
apiBaseUrl?: string;
|
|
5
|
+
wsUrl?: string;
|
|
6
|
+
applicationId?: string;
|
|
7
|
+
userId?: string;
|
|
8
|
+
sessionToken?: string;
|
|
9
|
+
getToken?: () => Promise<string | null>;
|
|
10
|
+
debug?: boolean;
|
|
11
|
+
reconnect?: {
|
|
12
|
+
maxRetries?: number;
|
|
13
|
+
baseDelay?: number;
|
|
14
|
+
maxDelay?: number;
|
|
15
|
+
};
|
|
16
|
+
messageCache?: {
|
|
17
|
+
maxMessages?: number;
|
|
18
|
+
maxConversations?: number;
|
|
19
|
+
};
|
|
20
|
+
offlineQueue?: boolean;
|
|
21
|
+
}
|
|
22
|
+
interface ApiResponse<T> {
|
|
23
|
+
data: T | null;
|
|
24
|
+
error: ApiError | null;
|
|
25
|
+
}
|
|
26
|
+
interface ApiError {
|
|
27
|
+
code: string;
|
|
28
|
+
message: string;
|
|
29
|
+
status: number;
|
|
30
|
+
details?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
interface Conversation {
|
|
33
|
+
id: string;
|
|
34
|
+
conversation_type: 'direct' | 'group' | 'broadcast' | 'ephemeral' | 'large_room' | 'support';
|
|
35
|
+
name?: string;
|
|
36
|
+
created_by?: string;
|
|
37
|
+
participant_count?: number;
|
|
38
|
+
last_message_at?: string;
|
|
39
|
+
unread_count?: number;
|
|
40
|
+
is_muted?: boolean;
|
|
41
|
+
last_message_preview?: string;
|
|
42
|
+
last_message_sender_id?: string;
|
|
43
|
+
counterparty_user_id?: string;
|
|
44
|
+
created_at: string;
|
|
45
|
+
participants?: Participant[];
|
|
46
|
+
}
|
|
47
|
+
interface Participant {
|
|
48
|
+
user_id: string;
|
|
49
|
+
role: string;
|
|
50
|
+
joined_at: string;
|
|
51
|
+
}
|
|
52
|
+
interface ChatMessage {
|
|
53
|
+
id: string;
|
|
54
|
+
content: string;
|
|
55
|
+
message_type: 'text' | 'image' | 'file' | 'system';
|
|
56
|
+
sender_id: string;
|
|
57
|
+
sender_type?: string;
|
|
58
|
+
sender_agent_model?: string;
|
|
59
|
+
attachments?: Attachment[];
|
|
60
|
+
reactions?: ReactionSummary[];
|
|
61
|
+
is_edited: boolean;
|
|
62
|
+
created_at: string;
|
|
63
|
+
}
|
|
64
|
+
interface ReactionSummary {
|
|
65
|
+
emoji: string;
|
|
66
|
+
count: number;
|
|
67
|
+
user_ids: string[];
|
|
68
|
+
}
|
|
69
|
+
interface Attachment {
|
|
70
|
+
file_id: string;
|
|
71
|
+
file_name: string;
|
|
72
|
+
file_size: number;
|
|
73
|
+
mime_type: string;
|
|
74
|
+
presigned_url?: string;
|
|
75
|
+
thumbnail_url?: string;
|
|
76
|
+
}
|
|
77
|
+
interface ReadStatus {
|
|
78
|
+
user_id: string;
|
|
79
|
+
last_read_at?: string;
|
|
80
|
+
}
|
|
81
|
+
interface ChatReaction {
|
|
82
|
+
id: string;
|
|
83
|
+
message_id: string;
|
|
84
|
+
user_id: string;
|
|
85
|
+
emoji: string;
|
|
86
|
+
action?: 'added' | 'removed';
|
|
87
|
+
timestamp?: string;
|
|
88
|
+
}
|
|
89
|
+
interface MessageEditedEvent {
|
|
90
|
+
id?: string;
|
|
91
|
+
message_id: string;
|
|
92
|
+
conversation_id: string;
|
|
93
|
+
content?: string;
|
|
94
|
+
new_content?: string;
|
|
95
|
+
editor_user_id?: string;
|
|
96
|
+
is_edited?: boolean;
|
|
97
|
+
updated_at?: string;
|
|
98
|
+
timestamp?: string;
|
|
99
|
+
}
|
|
100
|
+
interface ReactionEvent {
|
|
101
|
+
message_id: string;
|
|
102
|
+
conversation_id?: string;
|
|
103
|
+
user_id: string;
|
|
104
|
+
emoji: string;
|
|
105
|
+
action: 'added' | 'removed';
|
|
106
|
+
timestamp?: string;
|
|
107
|
+
}
|
|
108
|
+
interface PresenceMember {
|
|
109
|
+
user_id: string;
|
|
110
|
+
user_data?: unknown;
|
|
111
|
+
joined_at: string;
|
|
112
|
+
}
|
|
113
|
+
interface ChannelSettings {
|
|
114
|
+
publisher_user_ids?: string[];
|
|
115
|
+
linked_session_id?: string;
|
|
116
|
+
expires_at?: string;
|
|
117
|
+
max_participants?: number;
|
|
118
|
+
slow_mode_seconds?: number;
|
|
119
|
+
}
|
|
120
|
+
interface ChannelWithSettings {
|
|
121
|
+
id: string;
|
|
122
|
+
channel_type: string;
|
|
123
|
+
name?: string;
|
|
124
|
+
created_at: string;
|
|
125
|
+
linked_session_id?: string;
|
|
126
|
+
expires_at?: string;
|
|
127
|
+
participant_count: number;
|
|
128
|
+
}
|
|
129
|
+
interface CreateEphemeralChannelOptions {
|
|
130
|
+
linked_session_id: string;
|
|
131
|
+
name?: string;
|
|
132
|
+
ttl_minutes?: number;
|
|
133
|
+
}
|
|
134
|
+
interface CreateLargeRoomOptions {
|
|
135
|
+
name: string;
|
|
136
|
+
linked_session_id?: string;
|
|
137
|
+
max_participants?: number;
|
|
138
|
+
slow_mode_seconds?: number;
|
|
139
|
+
}
|
|
140
|
+
interface ChatEventMap {
|
|
141
|
+
connected: void;
|
|
142
|
+
disconnected: void;
|
|
143
|
+
reconnecting: {
|
|
144
|
+
attempt: number;
|
|
145
|
+
};
|
|
146
|
+
'message': {
|
|
147
|
+
message: ChatMessage;
|
|
148
|
+
conversationId: string;
|
|
149
|
+
};
|
|
150
|
+
'message:updated': {
|
|
151
|
+
message: ChatMessage;
|
|
152
|
+
conversationId: string;
|
|
153
|
+
update?: MessageEditedEvent;
|
|
154
|
+
};
|
|
155
|
+
'message:deleted': {
|
|
156
|
+
messageId: string;
|
|
157
|
+
conversationId: string;
|
|
158
|
+
};
|
|
159
|
+
'typing': {
|
|
160
|
+
userId: string;
|
|
161
|
+
conversationId: string;
|
|
162
|
+
};
|
|
163
|
+
'typing:stop': {
|
|
164
|
+
userId: string;
|
|
165
|
+
conversationId: string;
|
|
166
|
+
};
|
|
167
|
+
'presence:join': {
|
|
168
|
+
userId: string;
|
|
169
|
+
conversationId: string;
|
|
170
|
+
userData?: unknown;
|
|
171
|
+
};
|
|
172
|
+
'presence:leave': {
|
|
173
|
+
userId: string;
|
|
174
|
+
conversationId: string;
|
|
175
|
+
};
|
|
176
|
+
'presence:update': {
|
|
177
|
+
userId: string;
|
|
178
|
+
conversationId: string;
|
|
179
|
+
status: string;
|
|
180
|
+
userData?: unknown;
|
|
181
|
+
};
|
|
182
|
+
'presence:state': {
|
|
183
|
+
conversationId: string;
|
|
184
|
+
members: PresenceMember[];
|
|
185
|
+
};
|
|
186
|
+
'read': {
|
|
187
|
+
userId: string;
|
|
188
|
+
conversationId: string;
|
|
189
|
+
lastReadAt: string;
|
|
190
|
+
};
|
|
191
|
+
'reaction': {
|
|
192
|
+
reaction: ChatReaction;
|
|
193
|
+
conversationId: string;
|
|
194
|
+
action: 'added' | 'removed';
|
|
195
|
+
};
|
|
196
|
+
'room_upgraded': {
|
|
197
|
+
conversationId: string;
|
|
198
|
+
newType: 'large_room';
|
|
199
|
+
};
|
|
200
|
+
'delivery': {
|
|
201
|
+
messageId: string;
|
|
202
|
+
status: 'sent' | 'delivered' | 'read';
|
|
203
|
+
};
|
|
204
|
+
'inbox:update': {
|
|
205
|
+
conversationId: string;
|
|
206
|
+
messageId: string;
|
|
207
|
+
senderId: string;
|
|
208
|
+
preview: string;
|
|
209
|
+
};
|
|
210
|
+
'support:new': {
|
|
211
|
+
conversationId: string;
|
|
212
|
+
visitorName?: string;
|
|
213
|
+
};
|
|
214
|
+
'support:assigned': {
|
|
215
|
+
conversationId: string;
|
|
216
|
+
visitorName?: string;
|
|
217
|
+
visitorEmail?: string;
|
|
218
|
+
};
|
|
219
|
+
'error': {
|
|
220
|
+
code: string;
|
|
221
|
+
message: string;
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';
|
|
225
|
+
interface SendMessageOptions {
|
|
226
|
+
content: string;
|
|
227
|
+
message_type?: 'text' | 'image' | 'file';
|
|
228
|
+
attachments?: Attachment[];
|
|
229
|
+
}
|
|
230
|
+
interface ListConversationsOptions {
|
|
231
|
+
page?: number;
|
|
232
|
+
per_page?: number;
|
|
233
|
+
conversation_type?: 'direct' | 'group' | 'broadcast' | 'ephemeral' | 'large_room' | 'support';
|
|
234
|
+
}
|
|
235
|
+
interface UnreadTotalResponse {
|
|
236
|
+
unread_conversations: number;
|
|
237
|
+
unread_messages: number;
|
|
238
|
+
}
|
|
239
|
+
interface GetMessagesOptions {
|
|
240
|
+
limit?: number;
|
|
241
|
+
before?: string;
|
|
242
|
+
after?: string;
|
|
243
|
+
}
|
|
244
|
+
interface CreateConversationOptions {
|
|
245
|
+
conversation_type?: 'direct' | 'group';
|
|
246
|
+
name?: string;
|
|
247
|
+
participant_ids: string[];
|
|
248
|
+
}
|
|
249
|
+
interface MessagesResponse {
|
|
250
|
+
messages: ChatMessage[];
|
|
251
|
+
has_more?: boolean;
|
|
252
|
+
oldest_id?: string;
|
|
253
|
+
newest_id?: string;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export type { ApiResponse as A, ChatConfig as C, GetMessagesOptions as G, ListConversationsOptions as L, MessagesResponse as M, Participant as P, ReadStatus as R, SendMessageOptions as S, UnreadTotalResponse as U, ChatEventMap as a, ConnectionStatus as b, CreateConversationOptions as c, Conversation as d, ChatMessage as e, Attachment as f, ChannelSettings as g, ChannelWithSettings as h, CreateEphemeralChannelOptions as i, CreateLargeRoomOptions as j, ApiError as k, ChatReaction as l, MessageEditedEvent as m, PresenceMember as n, ReactionEvent as o, ReactionSummary as p };
|