UNPKG

@botpress/webchat-client

Version:
160 lines (159 loc) 6.38 kB
import { createUser as F, generateUserKey as $, sendPerfMetrics as I, removeMessageFeedback as R, addMessageFeedback as w, getEvent as K, createEvent as _, deleteUser as q, updateUser as N, getUser as z, createFile as A, deleteMessage as J, getMessage as j, updateMessage as D, createMessage as V, listParticipants as X, getParticipant as Y, removeParticipant as B, addParticipant as G, listConversationMessages as H, listConversations as O, deleteConversation as Q, getConversation as W, createConversation as Z } from "./webchat-client3.js"; import { client as h } from "./webchat-client4.js"; import { EventSource as ee } from "./webchat-client5.js"; import { throwErrorInterceptor as M } from "./webchat-client6.js"; import { createEventEmitter as P } from "./webchat-client7.js"; const r = (o) => o.data, T = 10, x = 3e3, te = "60000", k = (o, l) => { const c = (...a) => o.on(...a); return new Proxy(c, { get: (a, i) => i === "on" ? o.on : i === "disconnect" ? l : i === "cleanup" ? o.cleanup : Reflect.get(a, i) }); }, U = { throwOnError: !0 }, ie = async ({ clientId: o, apiUrl: l, adminSecret: c, customHeaders: a, ...i }) => { const n = `${l || h.getConfig().baseUrl}/${o}`; h.interceptors.response._fns.length === 0 && h.interceptors.response.use(M); const u = { ...U, baseUrl: n }, t = { ...c ? { "x-admin-secret": c } : {}, ...a }; return F({ ...u, headers: Object.keys(t).length > 0 ? t : void 0, body: i }).then(r); }, ce = ({ conversationId: o, userToken: l, clientId: c, apiUrl: a, adminSecret: i }) => { let n = 0, u = null, t = null; const v = P(); let e = o, s = l; const p = () => { u && (clearTimeout(u), u = null), t && (t.close(), t = null); }, d = () => { t && t.close(); const b = `${`${a || h.getConfig().baseUrl}/${c}`}/initialize${e ? `?conversationId=${e}` : ""}`, y = { ...i ? { "x-admin-secret": i } : {}, ...s ? { "x-user-key": s } : {} }; t = S(b, y), t.addEventListener("open", () => v.emit("open")), t.addEventListener("error", (f) => { n < T ? (n++, u = setTimeout(() => d(), x)) : v.emit("error", f); }), t.addEventListener("message", (f) => { const g = L(f.data); g.type === "init" && (e = g.data.conversation.id ?? e, s = g.data.user.userKey ?? s), v.emit(g.type, g.data); }); }; return d(), k(v, p); }, le = async ({ adminSecret: o, expiresAt: l, userId: c, apiUrl: a, clientId: i }) => { const n = { "x-admin-secret": o }, u = `${a || h.getConfig().baseUrl}/${i}`, t = { ...U, baseUrl: u }; return $({ ...t, headers: n, body: { id: c, expiresAt: l } }).then(r); }, de = async (o, l, c, a) => { const i = `${c || h.getConfig().baseUrl}/${o}`, n = { ...U, baseUrl: i }; return I({ ...n, body: l, headers: a }).then(r); }, ue = ({ userKey: o, clientId: l, apiUrl: c, customHeaders: a, advancedOptions: i }) => { const n = { "x-user-key": o, ...a }, u = `${c || h.getConfig().baseUrl}/${l}`, t = { ...U, baseUrl: u }; return h.interceptors.response._fns.length === 0 && h.interceptors.response.use(M), { createConversation: () => Z({ ...t, headers: n, body: {} }).then(r), getConversation: ({ conversationId: e }) => W({ ...t, headers: n, path: { id: e } }).then(r), deleteConversation: ({ conversationId: e }) => Q({ ...t, headers: n, path: { id: e } }).then(r), listConversations: ({ nextToken: e }) => O({ ...t, headers: n, query: { nextToken: e } }).then(r), listConversationMessages: ({ conversationId: e, nextToken: s }) => H({ ...t, headers: n, path: { id: e }, query: { nextToken: s } }).then(r), addParticipant: ({ conversationId: e, userId: s }) => G({ ...t, headers: n, path: { id: e }, body: { userId: s } }).then(r), removeParticipant: ({ conversationId: e, userId: s }) => B({ ...t, headers: n, path: { id: e, userId: s } }).then(r), getParticipant: ({ conversationId: e, userId: s }) => Y({ ...t, headers: n, path: { id: e, userId: s } }).then(r), listParticipants: ({ conversationId: e, nextToken: s }) => X({ ...t, headers: n, path: { id: e }, query: { nextToken: s } }).then(r), createMessage: (e) => V({ ...t, headers: n, body: e }).then(r), updateMessage: ({ messageId: e, ...s }) => D({ ...t, headers: n, path: { id: e }, body: s }).then(r), getMessage: ({ messageId: e }) => j({ ...t, headers: n, path: { id: e } }).then(r), deleteMessage: ({ messageId: e }) => J({ ...t, headers: n, path: { id: e } }).then(r), createFile: (e) => A({ ...t, headers: n, body: e }).then(r), getUser: () => z({ ...t, headers: n }).then(r), updateUser: (e) => N({ ...t, headers: n, body: e }).then(r), deleteUser: () => q({ ...t, headers: n }).then(r), createEvent: (e) => _({ ...t, headers: n, body: e }).then(r), getEvent: ({ eventId: e }) => K({ ...t, headers: n, path: { id: e } }).then(r), addMessageFeedback: ({ messageId: e, ...s }) => w({ ...t, headers: n, path: { id: e }, body: s }).then(r), removeMessageFeedback: ({ messageId: e }) => R({ ...t, headers: n, path: { id: e } }).then(r), generateUserKey: ({ adminSecret: e, ...s }) => $({ ...t, headers: { "x-admin-secret": e }, body: s }).then(r), listenConversation: ({ conversationId: e }) => { let s = 0, p = null, d = null; const m = P(), b = () => { p && (clearTimeout(p), p = null), d && (d.close(), d = null); }, y = () => { d && d.close(); const f = `${u}/conversations/${e}/listen`, g = i == null ? void 0 : i.eventSource; d = g ? g({ url: f, headers: n }) : S(f, n), d.addEventListener("open", () => m.emit("open")), d.addEventListener("error", (E) => { s < T ? (s++, p = setTimeout(() => y(), x)) : m.emit("error", E); }), d.addEventListener("message", (E) => { const C = L(E.data); m.emit(C.type, C.data); }); }; return y(), k(m, b); } }; }, L = (o) => { try { return JSON.parse(o); } catch { return o; } }, S = (o, l) => new ee(o, { fetch: (c, a) => fetch(c, { ...a, headers: { ...a == null ? void 0 : a.headers, ...l, timeout: te } }) }); export { ue as createClient, ie as createUser, le as generateUserKey, ce as initialize, de as sendPerfMetrics };