@botpress/webchat-client
Version:
160 lines (159 loc) • 6.38 kB
JavaScript
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
};