@botpress/webchat-client 0.3.0 → 0.4.0
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/.turbo/turbo-build.log +10 -10
- package/dist/index.d.ts +807 -9
- package/dist/webchat-client.js +3 -2
- package/dist/webchat-client2.js +112 -95
- package/dist/webchat-client3.js +28 -20
- package/dist/webchat-client9.js +26 -26
- package/eslint.config.mjs +10 -0
- package/package.json +3 -2
- package/src/client/client.ts +43 -9
- package/src/client/types/signals/initialize.ts +1 -1
- package/src/index.ts +1 -0
- package/.eslintrc.cjs +0 -11
package/src/client/client.ts
CHANGED
|
@@ -39,6 +39,10 @@ type Event =
|
|
|
39
39
|
data: any
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
type EventMap = {
|
|
43
|
+
[E in Event as E['type']]: E['data']
|
|
44
|
+
}
|
|
45
|
+
|
|
42
46
|
const MAX_RETRIES = 10
|
|
43
47
|
const RETRY_INTERVAL = 3000 // ms
|
|
44
48
|
const TIMEOUT = '60000' // ms
|
|
@@ -60,13 +64,12 @@ export type Client = {
|
|
|
60
64
|
getMessage: (params: MessageIdParam) => Promise<ClientTypes.GetMessageResponse>
|
|
61
65
|
deleteMessage: (params: MessageIdParam) => Promise<ClientTypes.DeleteMessageResponse>
|
|
62
66
|
createFile: (params: ClientTypes.CreateFileBody) => Promise<ClientTypes.CreateFileResponse>
|
|
63
|
-
createUser: (params: ClientTypes.CreateUserBody) => Promise<ClientTypes.CreateUserResponse>
|
|
64
67
|
getUser: () => Promise<ClientTypes.GetUserResponse>
|
|
65
68
|
updateUser: (params: ClientTypes.CreateUserBody) => Promise<ClientTypes.UpdateUserResponse>
|
|
66
69
|
deleteUser: (params: UserIdParam) => Promise<ClientTypes.DeleteUserResponse>
|
|
67
70
|
createEvent: (params: ClientTypes.CreateEventBody) => Promise<ClientTypes.CreateEventResponse>
|
|
68
71
|
getEvent: (params: EventIdParam) => Promise<ClientTypes.GetEventResponse>
|
|
69
|
-
listenConversation: (params: ConversationIdParam) => EventEmitter<
|
|
72
|
+
listenConversation: (params: ConversationIdParam) => EventEmitter<EventMap>['on']
|
|
70
73
|
addMessageFeedback: (
|
|
71
74
|
params: MessageIdParam & ClientTypes.AddMessageFeedbackBody
|
|
72
75
|
) => Promise<ClientTypes.AddMessageFeedbackResponse>
|
|
@@ -84,11 +87,14 @@ export const createUser = async ({
|
|
|
84
87
|
clientId,
|
|
85
88
|
apiUrl,
|
|
86
89
|
adminSecret,
|
|
90
|
+
customHeaders,
|
|
91
|
+
...body
|
|
87
92
|
}: {
|
|
88
93
|
clientId: string
|
|
89
94
|
apiUrl?: string
|
|
90
95
|
adminSecret?: string
|
|
91
|
-
|
|
96
|
+
customHeaders?: Record<string, string>
|
|
97
|
+
} & ClientTypes.CreateUserBody) => {
|
|
92
98
|
const baseUrl = `${apiUrl || baseClient.getConfig().baseUrl}/${clientId}`
|
|
93
99
|
|
|
94
100
|
// @ts-expect-error - this is a private property
|
|
@@ -101,11 +107,16 @@ export const createUser = async ({
|
|
|
101
107
|
baseUrl,
|
|
102
108
|
}
|
|
103
109
|
|
|
110
|
+
const headers = {
|
|
111
|
+
...(adminSecret ? { 'x-admin-secret': adminSecret } : {}),
|
|
112
|
+
...customHeaders,
|
|
113
|
+
}
|
|
114
|
+
|
|
104
115
|
return sdk
|
|
105
116
|
.createUser({
|
|
106
117
|
...configs,
|
|
107
|
-
|
|
108
|
-
|
|
118
|
+
headers: Object.keys(headers).length > 0 ? headers : undefined,
|
|
119
|
+
body,
|
|
109
120
|
})
|
|
110
121
|
.then(extractData)
|
|
111
122
|
}
|
|
@@ -115,15 +126,17 @@ export const initialize = ({
|
|
|
115
126
|
userToken,
|
|
116
127
|
clientId,
|
|
117
128
|
apiUrl,
|
|
129
|
+
adminSecret,
|
|
118
130
|
}: {
|
|
119
131
|
conversationId?: string
|
|
120
132
|
userToken?: string
|
|
121
133
|
apiUrl?: string
|
|
122
134
|
clientId: string
|
|
135
|
+
adminSecret?: string
|
|
123
136
|
}) => {
|
|
124
137
|
let retryCount = 0
|
|
125
138
|
let eventSource: EventSource | null = null
|
|
126
|
-
const eventEmitter = createEventEmitter<
|
|
139
|
+
const eventEmitter = createEventEmitter<EventMap>()
|
|
127
140
|
|
|
128
141
|
const connect = () => {
|
|
129
142
|
if (eventSource) {
|
|
@@ -133,7 +146,12 @@ export const initialize = ({
|
|
|
133
146
|
const baseUrl = `${apiUrl || baseClient.getConfig().baseUrl}/${clientId}`
|
|
134
147
|
const url = `${baseUrl}/initialize${conversationId ? `?conversationId=${conversationId}` : ''}`
|
|
135
148
|
|
|
136
|
-
|
|
149
|
+
const headers = {
|
|
150
|
+
...(adminSecret ? { 'x-admin-secret': adminSecret } : {}),
|
|
151
|
+
...(userToken ? { 'x-user-key': userToken } : {}),
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
eventSource = createNewEventSource(url, headers)
|
|
137
155
|
|
|
138
156
|
eventSource.onopen = () => eventEmitter.emit('open')
|
|
139
157
|
eventSource.onerror = (err) => {
|
|
@@ -176,17 +194,34 @@ export const generateUserKey = async ({
|
|
|
176
194
|
return sdk.generateUserKey({ ...configs, headers, body: { id: userId, expiresAt } }).then(extractData)
|
|
177
195
|
}
|
|
178
196
|
|
|
197
|
+
export const sendPerfMetrics = async (
|
|
198
|
+
clientId: string,
|
|
199
|
+
body: ClientTypes.SendPerfMetricsBody,
|
|
200
|
+
apiUrl?: string,
|
|
201
|
+
customHeaders?: Record<string, string>
|
|
202
|
+
) => {
|
|
203
|
+
const baseUrl = `${apiUrl || baseClient.getConfig().baseUrl}/${clientId}`
|
|
204
|
+
const configs = {
|
|
205
|
+
...baseConfigs,
|
|
206
|
+
baseUrl,
|
|
207
|
+
}
|
|
208
|
+
return sdk.sendPerfMetrics({ ...configs, body, headers: customHeaders }).then(extractData)
|
|
209
|
+
}
|
|
210
|
+
|
|
179
211
|
export const createClient = ({
|
|
180
212
|
userKey,
|
|
181
213
|
clientId,
|
|
182
214
|
apiUrl,
|
|
215
|
+
customHeaders,
|
|
183
216
|
}: {
|
|
184
217
|
userKey: string
|
|
185
218
|
clientId: string
|
|
186
219
|
apiUrl?: string
|
|
220
|
+
customHeaders?: Record<string, string>
|
|
187
221
|
}): Client => {
|
|
188
222
|
const headers = {
|
|
189
223
|
'x-user-key': userKey,
|
|
224
|
+
...customHeaders,
|
|
190
225
|
}
|
|
191
226
|
|
|
192
227
|
const baseUrl = `${apiUrl || baseClient.getConfig().baseUrl}/${clientId}`
|
|
@@ -234,7 +269,6 @@ export const createClient = ({
|
|
|
234
269
|
deleteMessage: ({ messageId }) =>
|
|
235
270
|
sdk.deleteMessage({ ...configs, headers, path: { id: messageId } }).then(extractData),
|
|
236
271
|
createFile: (body) => sdk.createFile({ ...configs, headers, body }).then(extractData),
|
|
237
|
-
createUser: (body) => sdk.createUser({ ...configs, headers, body }).then(extractData),
|
|
238
272
|
getUser: () => sdk.getUser({ ...configs, headers }).then(extractData),
|
|
239
273
|
updateUser: (body) => sdk.updateUser({ ...configs, headers, body }).then(extractData),
|
|
240
274
|
deleteUser: () => sdk.deleteUser({ ...configs, headers }).then(extractData),
|
|
@@ -249,7 +283,7 @@ export const createClient = ({
|
|
|
249
283
|
listenConversation: ({ conversationId }) => {
|
|
250
284
|
let retryCount = 0
|
|
251
285
|
let eventSource: EventSource | null = null
|
|
252
|
-
const eventEmitter = createEventEmitter<
|
|
286
|
+
const eventEmitter = createEventEmitter<EventMap>()
|
|
253
287
|
|
|
254
288
|
const connect = () => {
|
|
255
289
|
if (eventSource) {
|
package/src/index.ts
CHANGED
package/.eslintrc.cjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/** @type {import("eslint").Linter.Config} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
root: true,
|
|
4
|
-
extends: ["@repo/eslint-config/react-internal.js"],
|
|
5
|
-
parser: "@typescript-eslint/parser",
|
|
6
|
-
ignorePatterns: ["dist", "node_modules", "storybook-static", ".turbo", "turbo/*"],
|
|
7
|
-
parserOptions: {
|
|
8
|
-
project: "./tsconfig.json",
|
|
9
|
-
tsconfigRootDir: __dirname,
|
|
10
|
-
},
|
|
11
|
-
};
|