@opencx/widget-core 4.0.21 → 4.0.23

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/index.js CHANGED
@@ -1,15 +1,15 @@
1
- import L from "openapi-fetch";
2
- import N from "lodash.isequal";
1
+ import D from "openapi-fetch";
2
+ import L from "lodash.isequal";
3
3
  import { v4 as O } from "uuid";
4
- const z = (h) => {
4
+ const j = (h) => {
5
5
  console.log(h.error);
6
- }, B = (h) => {
7
- const i = L({
6
+ }, N = (h) => {
7
+ const i = D({
8
8
  baseUrl: h.baseUrl
9
9
  }), a = {
10
10
  onRequest: h.onRequest,
11
11
  onResponse: h.onResponse,
12
- onError: h.onError || z
12
+ onError: h.onError || j
13
13
  };
14
14
  return i.use(a), i;
15
15
  };
@@ -27,7 +27,7 @@ class M {
27
27
  }, this.createOpenAPIClient = ({
28
28
  baseUrl: e,
29
29
  headers: t
30
- }) => B({
30
+ }) => N({
31
31
  baseUrl: e,
32
32
  onRequest: ({ request: n }) => {
33
33
  Object.entries(t).forEach(([o, r]) => {
@@ -83,18 +83,18 @@ class M {
83
83
  r(new DOMException("Aborted", "AbortError"));
84
84
  return;
85
85
  }
86
- u.upload.addEventListener("progress", (p) => {
87
- if (p.lengthComputable && n) {
88
- const C = Math.round(p.loaded / p.total * 100);
86
+ u.upload.addEventListener("progress", (m) => {
87
+ if (m.lengthComputable && n) {
88
+ const C = Math.round(m.loaded / m.total * 100);
89
89
  n(C);
90
90
  }
91
91
  }), u.addEventListener("load", () => {
92
92
  if (u.status >= 200 && u.status < 300)
93
93
  try {
94
- const p = JSON.parse(u.responseText);
95
- o(p);
96
- } catch (p) {
97
- r(new Error(`Failed to parse response: ${p}`));
94
+ const m = JSON.parse(u.responseText);
95
+ o(m);
96
+ } catch (m) {
97
+ r(new Error(`Failed to parse response: ${m}`));
98
98
  }
99
99
  else
100
100
  r(new Error(`Upload failed with status: ${u.status}`));
@@ -117,13 +117,13 @@ class M {
117
117
  this.client = this.createOpenAPIClient({ baseUrl: a, headers: c });
118
118
  }
119
119
  }
120
- function H(h, i) {
120
+ function B(h, i) {
121
121
  console.error(`Missing case for ${h} in ${i}`);
122
122
  }
123
123
  class y {
124
124
  constructor(i) {
125
125
  this.subscribers = /* @__PURE__ */ new Set(), this.get = () => this.state, this.set = (a) => {
126
- N(this.state, a) || (this.state = a, this.notifySubscribers(a));
126
+ L(this.state, a) || (this.state = a, this.notifySubscribers(a));
127
127
  }, this.setPartial = (a) => {
128
128
  if (a == null) return;
129
129
  const c = { ...this.state, ...a };
@@ -172,7 +172,7 @@ class R {
172
172
  };
173
173
  }
174
174
  }
175
- function q(h) {
175
+ function H(h) {
176
176
  try {
177
177
  const i = h();
178
178
  return i instanceof Promise ? i.then((a) => ({ data: a })).catch((a) => ({ error: a })) : { data: i };
@@ -180,7 +180,7 @@ function q(h) {
180
180
  return { error: i };
181
181
  }
182
182
  }
183
- class j {
183
+ class q {
184
184
  constructor({
185
185
  api: i,
186
186
  config: a,
@@ -220,11 +220,11 @@ class j {
220
220
  lastMessageTimestamp: n ? void 0 : r
221
221
  });
222
222
  if (l != null && l.session && (this.sessionCtx.sessionState.setPartial({ session: l.session }), this.sessionCtx.setSessions([l.session])), l != null && l.history && l.history.length > 0) {
223
- const _ = this.messageCtx.state.get().messages, b = l.history.map(this.mapHistoryToMessage).filter((f) => f !== null).filter(
224
- (f) => !_.some((S) => S.id === f.id)
223
+ const _ = this.messageCtx.state.get().messages, S = l.history.map(this.mapHistoryToMessage).filter((f) => f !== null).filter(
224
+ (f) => !_.some((v) => v.id === f.id)
225
225
  );
226
226
  this.messageCtx.state.setPartial({
227
- messages: [..._, ...b]
227
+ messages: [..._, ...S]
228
228
  });
229
229
  }
230
230
  this.messageCtx.state.get().isInitialFetchLoading && this.messageCtx.state.setPartial({ isInitialFetchLoading: !1 });
@@ -321,7 +321,7 @@ class j {
321
321
  case "none":
322
322
  return null;
323
323
  default:
324
- return H(
324
+ return B(
325
325
  e.systemMessagePayload,
326
326
  this.constructSystemMessage.name
327
327
  ), null;
@@ -330,7 +330,7 @@ class j {
330
330
  const t = e.result;
331
331
  if (t === null || typeof t != "object") return t;
332
332
  if ("responseBodyText" in t && typeof t.responseBodyText == "string") {
333
- const n = t.responseBodyText, o = q(() => JSON.parse(n)).data;
333
+ const n = t.responseBodyText, o = H(() => JSON.parse(n)).data;
334
334
  if (o) return o;
335
335
  }
336
336
  return e.result;
@@ -348,7 +348,7 @@ class Y {
348
348
  var s;
349
349
  return !!(!((s = this.state.get().contact) != null && s.token) && this.config.collectUserData);
350
350
  }, this.autoCreateUnverifiedUserIfNotExists = async () => {
351
- var s, e, t, n, o, r, l, u, _, b, f, S, w, p;
351
+ var s, e, t, n, o, r, l, u, _, S, f, v, w, m;
352
352
  if (!((s = this.config.user) != null && s.token)) {
353
353
  if (this.config.collectUserData && !((t = (e = this.config.user) == null ? void 0 : e.data) != null && t.email)) {
354
354
  if ((n = this.config.extraDataCollectionFields) != null && n.length)
@@ -365,9 +365,9 @@ class Y {
365
365
  }
366
366
  }
367
367
  await this.createUnverifiedContact({
368
- email: (b = (_ = this.config.user) == null ? void 0 : _.data) == null ? void 0 : b.email,
369
- non_verified_name: (S = (f = this.config.user) == null ? void 0 : f.data) == null ? void 0 : S.name,
370
- non_verified_custom_data: (p = (w = this.config.user) == null ? void 0 : w.data) == null ? void 0 : p.customData
368
+ email: (S = (_ = this.config.user) == null ? void 0 : _.data) == null ? void 0 : S.email,
369
+ non_verified_name: (v = (f = this.config.user) == null ? void 0 : f.data) == null ? void 0 : v.name,
370
+ non_verified_custom_data: (m = (w = this.config.user) == null ? void 0 : w.data) == null ? void 0 : m.customData
371
371
  });
372
372
  }
373
373
  }, this.createUnverifiedContact = async (s, e) => {
@@ -440,7 +440,7 @@ class $ {
440
440
  }, this.config = i, this.api = a, this.sessionCtx = c, this.messageCtx = d;
441
441
  }
442
442
  }
443
- class K {
443
+ class G {
444
444
  constructor({
445
445
  config: i,
446
446
  api: a,
@@ -536,7 +536,7 @@ class K {
536
536
  }, this.config = i, this.api = a, this.contactCtx = c, this.sessionsPollingIntervalSeconds = d, this.registerSessionsRefresherWrapper();
537
537
  }
538
538
  }
539
- class G {
539
+ class K {
540
540
  constructor({
541
541
  config: i,
542
542
  api: a,
@@ -551,7 +551,7 @@ class G {
551
551
  }), this.sendMessageAbortController = new AbortController(), this.reset = () => {
552
552
  this.sendMessageAbortController.abort("Resetting chat"), this.state.reset();
553
553
  }, this.sendMessage = async (s) => {
554
- var e, t, n, o, r, l, u, _, b, f;
554
+ var e, t, n, o, r, l, u, _, S, f;
555
555
  try {
556
556
  if (!s.content.trim() && (!s.attachments || s.attachments.length === 0)) {
557
557
  console.warn(
@@ -559,14 +559,14 @@ class G {
559
559
  );
560
560
  return;
561
561
  }
562
- const S = this.state.get().isSendingMessage, w = ((e = this.sessionCtx.sessionState.get().session) == null ? void 0 : e.assignee.kind) === "ai", p = this.state.get().messages, C = p.length > 0 ? p[p.length - 1] : void 0;
563
- if (w && S || // If last message is from user, then bot response did not arrive yet
562
+ const v = this.state.get().isSendingMessage, w = ((e = this.sessionCtx.sessionState.get().session) == null ? void 0 : e.assignee.kind) === "ai", m = this.state.get().messages, C = m.length > 0 ? m[m.length - 1] : void 0;
563
+ if (w && v || // If last message is from user, then bot response did not arrive yet
564
564
  w && (C == null ? void 0 : C.type) === "USER") {
565
565
  console.warn("Cannot send messages while awaiting AI response");
566
566
  return;
567
567
  }
568
568
  this.sendMessageAbortController = new AbortController(), this.state.setPartial({ lastAIResMightSolveUserIssue: !1 }), this.state.setPartial({ isSendingMessage: !0 });
569
- const P = this.state.get().messages, A = !((t = this.sessionCtx.sessionState.get().session) != null && t.id) && P.length === 0 && ((n = this.config.advancedInitialMessages) == null ? void 0 : n.some((g) => g.persistent)), E = A ? (this.config.advancedInitialMessages || []).filter((g) => g.persistent).map(
569
+ const P = this.state.get().messages, A = !((t = this.sessionCtx.sessionState.get().session) != null && t.id) && P.length === 0 && ((n = this.config.advancedInitialMessages) == null ? void 0 : n.some((g) => g.persistent)), T = A ? (this.config.advancedInitialMessages || []).filter((g) => g.persistent).map(
570
570
  (g) => ({
571
571
  id: x(),
572
572
  component: "bot_message",
@@ -582,7 +582,7 @@ class G {
582
582
  );
583
583
  if (this.state.setPartial({
584
584
  messages: [
585
- ...E,
585
+ ...T,
586
586
  ...P,
587
587
  I
588
588
  ]
@@ -593,16 +593,16 @@ class G {
593
593
  }
594
594
  this.sessionCtx.refreshSessions();
595
595
  }
596
- const T = (r = this.sessionCtx.sessionState.get().session) == null ? void 0 : r.id;
597
- if (!T) return;
598
- const { data: m } = await this.api.sendMessage(
596
+ const E = (r = this.sessionCtx.sessionState.get().session) == null ? void 0 : r.id;
597
+ if (!E) return;
598
+ const { data: p } = await this.api.sendMessage(
599
599
  {
600
600
  uuid: I.id,
601
601
  bot_token: this.config.token,
602
602
  headers: this.config.headers,
603
603
  query_params: this.config.queryParams,
604
604
  body_properties: this.config.bodyProperties,
605
- session_id: T,
605
+ session_id: E,
606
606
  content: I.content,
607
607
  attachments: s.attachments,
608
608
  clientContext: this.config.context,
@@ -612,41 +612,41 @@ class G {
612
612
  },
613
613
  language: this.config.language,
614
614
  exit_mode_prompt: s.exitModePrompt,
615
- initial_messages: A ? E.map((g) => ({
615
+ initial_messages: A ? T.map((g) => ({
616
616
  uuid: g.id,
617
617
  content: g.data.message
618
618
  })) : void 0
619
619
  },
620
620
  this.sendMessageAbortController.signal
621
621
  );
622
- if (m != null && m.success) {
623
- const g = this.toBotMessage(m);
622
+ if (p != null && p.success) {
623
+ const g = this.toBotMessage(p);
624
624
  if (g) {
625
625
  const k = this.state.get().messages;
626
626
  if (!!k.some(
627
- (D) => D.id === g.id
627
+ (F) => F.id === g.id
628
628
  )) {
629
629
  this.state.setPartial({
630
- lastAIResMightSolveUserIssue: ((l = m.autopilotResponse) == null ? void 0 : l.mightSolveUserIssue) || ((u = m.uiResponse) == null ? void 0 : u.mightSolveUserIssue)
630
+ lastAIResMightSolveUserIssue: ((l = p.autopilotResponse) == null ? void 0 : l.mightSolveUserIssue) || ((u = p.uiResponse) == null ? void 0 : u.mightSolveUserIssue)
631
631
  });
632
632
  return;
633
633
  }
634
634
  this.state.setPartial({
635
635
  messages: [...k, g],
636
- lastAIResMightSolveUserIssue: ((_ = m.autopilotResponse) == null ? void 0 : _.mightSolveUserIssue) || ((b = m.uiResponse) == null ? void 0 : b.mightSolveUserIssue)
636
+ lastAIResMightSolveUserIssue: ((_ = p.autopilotResponse) == null ? void 0 : _.mightSolveUserIssue) || ((S = p.uiResponse) == null ? void 0 : S.mightSolveUserIssue)
637
637
  });
638
638
  }
639
- m.session && this.sessionCtx.sessionState.setPartial({ session: m.session });
639
+ p.session && this.sessionCtx.sessionState.setPartial({ session: p.session });
640
640
  } else {
641
641
  const g = this.toBotErrorMessage(
642
- ((f = m == null ? void 0 : m.error) == null ? void 0 : f.message) || "Unknown error occurred"
642
+ ((f = p == null ? void 0 : p.error) == null ? void 0 : f.message) || "Unknown error occurred"
643
643
  ), k = this.state.get().messages;
644
644
  this.state.setPartial({
645
645
  messages: [...k, g]
646
646
  });
647
647
  }
648
- } catch (S) {
649
- this.sendMessageAbortController.signal.aborted || console.error("Failed to send message:", S);
648
+ } catch (v) {
649
+ this.sendMessageAbortController.signal.aborted || console.error("Failed to send message:", v);
650
650
  } finally {
651
651
  this.state.setPartial({ isSendingMessage: !1 });
652
652
  }
@@ -755,7 +755,7 @@ class V {
755
755
  }, this.getExternalContactId = async () => this.storage.get(this.KEYS.externalContactId(this.config.token)), this.storage = i, this.config = a;
756
756
  }
757
757
  }
758
- const v = class v {
758
+ const b = class b {
759
759
  constructor({
760
760
  config: i,
761
761
  storage: a,
@@ -764,7 +764,7 @@ const v = class v {
764
764
  }) {
765
765
  if (this.modes = [], this.resetChat = () => {
766
766
  this.sessionCtx.reset(), this.messageCtx.reset();
767
- }, !v.pollingIntervalsSeconds)
767
+ }, !b.pollingIntervalsSeconds)
768
768
  throw Error(
769
769
  "Widget polling values are not defined, did you call WidgetCtx.initialize()"
770
770
  );
@@ -772,12 +772,12 @@ const v = class v {
772
772
  api: this.api,
773
773
  config: this.config,
774
774
  storageCtx: this.storageCtx
775
- }), this.sessionCtx = new K({
775
+ }), this.sessionCtx = new G({
776
776
  config: this.config,
777
777
  api: this.api,
778
778
  contactCtx: this.contactCtx,
779
- sessionsPollingIntervalSeconds: v.pollingIntervalsSeconds.sessions
780
- }), this.messageCtx = new G({
779
+ sessionsPollingIntervalSeconds: b.pollingIntervalsSeconds.sessions
780
+ }), this.messageCtx = new K({
781
781
  config: this.config,
782
782
  api: this.api,
783
783
  sessionCtx: this.sessionCtx,
@@ -787,12 +787,12 @@ const v = class v {
787
787
  api: this.api,
788
788
  sessionCtx: this.sessionCtx,
789
789
  messageCtx: this.messageCtx
790
- }), this.activeSessionPollingCtx = new j({
790
+ }), this.activeSessionPollingCtx = new q({
791
791
  api: this.api,
792
792
  config: this.config,
793
793
  sessionCtx: this.sessionCtx,
794
794
  messageCtx: this.messageCtx,
795
- sessionPollingIntervalSeconds: v.pollingIntervalsSeconds.session
795
+ sessionPollingIntervalSeconds: b.pollingIntervalsSeconds.session
796
796
  }), this.routerCtx = new W({
797
797
  config: this.config,
798
798
  contactCtx: this.contactCtx,
@@ -801,7 +801,7 @@ const v = class v {
801
801
  });
802
802
  }
803
803
  };
804
- v.pollingIntervalsSeconds = null, v.initialize = async ({
804
+ b.pollingIntervalsSeconds = null, b.initialize = async ({
805
805
  config: i,
806
806
  storage: a
807
807
  }) => {
@@ -811,10 +811,10 @@ v.pollingIntervalsSeconds = null, v.initialize = async ({
811
811
  }).getExternalWidgetConfig();
812
812
  if (!c.data)
813
813
  throw new Error("Failed to fetch widget config");
814
- return v.pollingIntervalsSeconds = {
814
+ return b.pollingIntervalsSeconds = {
815
815
  session: ((d = c.data) == null ? void 0 : d.sessionPollingIntervalSeconds) || 10,
816
816
  sessions: ((s = c.data) == null ? void 0 : s.sessionsPollingIntervalSeconds) || 60
817
- }, new v({
817
+ }, new b({
818
818
  config: i,
819
819
  storage: a,
820
820
  modes: ((e = c.data) == null ? void 0 : e.modes) || [],
@@ -824,8 +824,8 @@ v.pollingIntervalsSeconds = null, v.initialize = async ({
824
824
  }
825
825
  });
826
826
  };
827
- let U = v;
828
- const X = {
827
+ let U = b;
828
+ const J = {
829
829
  write_a_message_placeholder: "اكتب رسالة...",
830
830
  your_issue_has_been_resolved: "تم حل مشكلتك!",
831
831
  new_conversation: "محادثة جديدة",
@@ -841,7 +841,7 @@ const X = {
841
841
  no_conversations_yet: "لا يوجد محادثات",
842
842
  back_to_conversations: "العودة إلى المحادثات",
843
843
  closed_conversations: "المحادثات المغلقة"
844
- }, J = {
844
+ }, X = {
845
845
  write_a_message_placeholder: "Nachricht schreiben...",
846
846
  your_issue_has_been_resolved: "Ihr Problem wurde gelöst!",
847
847
  new_conversation: "Neue Konversation",
@@ -874,6 +874,22 @@ const X = {
874
874
  back_to_conversations: "Back to conversations",
875
875
  closed_conversations: "Closed conversations"
876
876
  }, Q = {
877
+ write_a_message_placeholder: "Escribe un mensaje...",
878
+ your_issue_has_been_resolved: "¡Tu problema fue resuelto!",
879
+ new_conversation: "Nueva conversación",
880
+ welcome_screen_title: "Bienvenido a nuestro chat de soporte",
881
+ welcome_screen_description: "¡Estamos aquí para ayudarte! Inicia una conversación y responderemos lo antes posible.",
882
+ your_name_placeholder: "Tu nombre",
883
+ your_email_placeholder: "Tu correo electrónico",
884
+ start_chat_button: "Hablar con soporte",
885
+ start_chat_button_loading: "Conectando...",
886
+ i_need_more_help: "Necesito más ayuda",
887
+ this_was_helpful: "Esto fue útil",
888
+ optional: "Opcional",
889
+ no_conversations_yet: "Sin conversaciones aún",
890
+ back_to_conversations: "Volver a conversaciones",
891
+ closed_conversations: "Conversaciones cerradas"
892
+ }, ee = {
877
893
  write_a_message_placeholder: "Écrivez un message...",
878
894
  your_issue_has_been_resolved: "Votre problème a été résolu !",
879
895
  new_conversation: "Nouvelle conversation",
@@ -889,7 +905,7 @@ const X = {
889
905
  no_conversations_yet: "Aucune conversation pour le moment",
890
906
  back_to_conversations: "Retour aux conversations",
891
907
  closed_conversations: "Conversations fermées"
892
- }, ee = {
908
+ }, te = {
893
909
  write_a_message_placeholder: "Schrijf een bericht...",
894
910
  your_issue_has_been_resolved: "Uw probleem is opgelost!",
895
911
  new_conversation: "Nieuw gesprek",
@@ -905,7 +921,23 @@ const X = {
905
921
  no_conversations_yet: "Nog geen gesprekken",
906
922
  back_to_conversations: "Terug naar gesprekken",
907
923
  closed_conversations: "Afgesloten gesprekken"
908
- }, te = {
924
+ }, se = {
925
+ write_a_message_placeholder: "Napisz wiadomość...",
926
+ your_issue_has_been_resolved: "Twój problem został rozwiązany!",
927
+ new_conversation: "Nowa rozmowa",
928
+ welcome_screen_title: "Witamy w naszym czacie wsparcia",
929
+ welcome_screen_description: "Jesteśmy tutaj, aby pomóc! Rozpocznij rozmowę, a odpowiemy jak najszybciej.",
930
+ your_name_placeholder: "Twoje imię",
931
+ your_email_placeholder: "Twój adres email",
932
+ start_chat_button: "Porozmawiaj ze wsparciem",
933
+ start_chat_button_loading: "Łączenie...",
934
+ i_need_more_help: "Potrzebuję więcej pomocy",
935
+ this_was_helpful: "To było pomocne",
936
+ optional: "Opcjonalne",
937
+ no_conversations_yet: "Jeszcze brak rozmów",
938
+ back_to_conversations: "Powrót do rozmów",
939
+ closed_conversations: "Zamknięte rozmowy"
940
+ }, ie = {
909
941
  write_a_message_placeholder: "Escreva uma mensagem...",
910
942
  your_issue_has_been_resolved: "Seu problema foi resolvido!",
911
943
  new_conversation: "Nova conversa",
@@ -921,23 +953,7 @@ const X = {
921
953
  no_conversations_yet: "Nenhuma conversa ainda",
922
954
  back_to_conversations: "Voltar para conversas",
923
955
  closed_conversations: "Conversas fechadas"
924
- }, se = {
925
- write_a_message_placeholder: "Escribe un mensaje...",
926
- your_issue_has_been_resolved: "¡Tu problema fue resuelto!",
927
- new_conversation: "Nueva conversación",
928
- welcome_screen_title: "Bienvenido a nuestro chat de soporte",
929
- welcome_screen_description: "¡Estamos aquí para ayudarte! Inicia una conversación y responderemos lo antes posible.",
930
- your_name_placeholder: "Tu nombre",
931
- your_email_placeholder: "Tu correo electrónico",
932
- start_chat_button: "Hablar con soporte",
933
- start_chat_button_loading: "Conectando...",
934
- i_need_more_help: "Necesito más ayuda",
935
- this_was_helpful: "Esto fue útil",
936
- optional: "Opcional",
937
- no_conversations_yet: "Sin conversaciones aún",
938
- back_to_conversations: "Volver a conversaciones",
939
- closed_conversations: "Conversaciones cerradas"
940
- }, ie = {
956
+ }, ne = {
941
957
  write_a_message_placeholder: "Bir mesaj yazın...",
942
958
  your_issue_has_been_resolved: "Sorununuz çözüldü!",
943
959
  new_conversation: "Yeni konuşma",
@@ -953,28 +969,29 @@ const X = {
953
969
  no_conversations_yet: "Henüz konuşma yok",
954
970
  back_to_conversations: "Konuşmalara geri dön",
955
971
  closed_conversations: "Kapatılan konuşmalar"
956
- }, F = {
972
+ }, z = {
957
973
  en: Z,
958
- ar: X,
959
- nl: ee,
960
- fr: Q,
961
- de: J,
962
- pt: te,
963
- es: se,
964
- tr: ie
965
- }, ne = Object.keys(F);
966
- function le(h) {
967
- return ne.includes(h);
974
+ ar: J,
975
+ nl: te,
976
+ fr: ee,
977
+ de: X,
978
+ pt: ie,
979
+ es: Q,
980
+ tr: ne,
981
+ pl: se
982
+ }, ae = Object.keys(z);
983
+ function he(h) {
984
+ return ae.includes(h);
968
985
  }
969
- function he(h, i, a) {
986
+ function de(h, i, a) {
970
987
  var c;
971
- return ((c = a == null ? void 0 : a[i]) == null ? void 0 : c[h]) || F[i][h] || "";
988
+ return ((c = a == null ? void 0 : a[i]) == null ? void 0 : c[h]) || z[i][h] || "";
972
989
  }
973
990
  export {
974
991
  y as PrimitiveState,
975
992
  U as WidgetCtx,
976
- he as getTranslation,
977
- H as isExhaustive,
978
- le as isSupportedLanguage
993
+ de as getTranslation,
994
+ B as isExhaustive,
995
+ he as isSupportedLanguage
979
996
  };
980
997
  //# sourceMappingURL=index.js.map