@botonic/webchat-core 2.23.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.
Files changed (88) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/PR-LOCALE-SUPPORT.md +156 -0
  3. package/README.md +11 -0
  4. package/package.json +29 -0
  5. package/src/index.d.ts +11 -0
  6. package/src/index.js +15 -0
  7. package/src/index.js.map +1 -0
  8. package/src/lib/controllers/index.d.ts +2 -0
  9. package/src/lib/controllers/index.js +3 -0
  10. package/src/lib/controllers/index.js.map +1 -0
  11. package/src/lib/controllers/public.d.ts +383 -0
  12. package/src/lib/controllers/public.js +194 -0
  13. package/src/lib/controllers/public.js.map +1 -0
  14. package/src/lib/controllers/webchat.d.ts +414 -0
  15. package/src/lib/controllers/webchat.js +255 -0
  16. package/src/lib/controllers/webchat.js.map +1 -0
  17. package/src/lib/domain/index.d.ts +50 -0
  18. package/src/lib/domain/index.js +11 -0
  19. package/src/lib/domain/index.js.map +1 -0
  20. package/src/lib/infra/clients/hubtype-api.d.ts +53 -0
  21. package/src/lib/infra/clients/hubtype-api.js +189 -0
  22. package/src/lib/infra/clients/hubtype-api.js.map +1 -0
  23. package/src/lib/infra/clients/index.d.ts +3 -0
  24. package/src/lib/infra/clients/index.js +4 -0
  25. package/src/lib/infra/clients/index.js.map +1 -0
  26. package/src/lib/infra/clients/realtime.d.ts +92 -0
  27. package/src/lib/infra/clients/realtime.js +277 -0
  28. package/src/lib/infra/clients/realtime.js.map +1 -0
  29. package/src/lib/infra/clients/types.d.ts +21 -0
  30. package/src/lib/infra/clients/types.js +2 -0
  31. package/src/lib/infra/clients/types.js.map +1 -0
  32. package/src/lib/infra/repositories/index.d.ts +1 -0
  33. package/src/lib/infra/repositories/index.js +2 -0
  34. package/src/lib/infra/repositories/index.js.map +1 -0
  35. package/src/lib/infra/repositories/storage/base-storage.d.ts +23 -0
  36. package/src/lib/infra/repositories/storage/base-storage.js +102 -0
  37. package/src/lib/infra/repositories/storage/base-storage.js.map +1 -0
  38. package/src/lib/infra/repositories/storage/browser-storage.d.ts +9 -0
  39. package/src/lib/infra/repositories/storage/browser-storage.js +46 -0
  40. package/src/lib/infra/repositories/storage/browser-storage.js.map +1 -0
  41. package/src/lib/infra/repositories/storage/factory.d.ts +2 -0
  42. package/src/lib/infra/repositories/storage/factory.js +20 -0
  43. package/src/lib/infra/repositories/storage/factory.js.map +1 -0
  44. package/src/lib/infra/repositories/storage/in-memory.d.ts +9 -0
  45. package/src/lib/infra/repositories/storage/in-memory.js +21 -0
  46. package/src/lib/infra/repositories/storage/in-memory.js.map +1 -0
  47. package/src/lib/infra/repositories/storage/index.d.ts +7 -0
  48. package/src/lib/infra/repositories/storage/index.js +7 -0
  49. package/src/lib/infra/repositories/storage/index.js.map +1 -0
  50. package/src/lib/infra/repositories/storage/local-storage.d.ts +4 -0
  51. package/src/lib/infra/repositories/storage/local-storage.js +7 -0
  52. package/src/lib/infra/repositories/storage/local-storage.js.map +1 -0
  53. package/src/lib/infra/repositories/storage/session-storage.d.ts +4 -0
  54. package/src/lib/infra/repositories/storage/session-storage.js +7 -0
  55. package/src/lib/infra/repositories/storage/session-storage.js.map +1 -0
  56. package/src/lib/infra/repositories/storage/types.d.ts +30 -0
  57. package/src/lib/infra/repositories/storage/types.js +2 -0
  58. package/src/lib/infra/repositories/storage/types.js.map +1 -0
  59. package/src/lib/machines/message.d.ts +200 -0
  60. package/src/lib/machines/message.js +210 -0
  61. package/src/lib/machines/message.js.map +1 -0
  62. package/src/lib/machines/overlay.d.ts +299 -0
  63. package/src/lib/machines/overlay.js +217 -0
  64. package/src/lib/machines/overlay.js.map +1 -0
  65. package/src/lib/machines/webchat.d.ts +641 -0
  66. package/src/lib/machines/webchat.js +768 -0
  67. package/src/lib/machines/webchat.js.map +1 -0
  68. package/src/lib/services/webchat-service.d.ts +125 -0
  69. package/src/lib/services/webchat-service.js +339 -0
  70. package/src/lib/services/webchat-service.js.map +1 -0
  71. package/src/lib/utils/locale-detection.d.ts +2 -0
  72. package/src/lib/utils/locale-detection.js +20 -0
  73. package/src/lib/utils/locale-detection.js.map +1 -0
  74. package/src/lib/utils/timezone-to-country.d.ts +1 -0
  75. package/src/lib/utils/timezone-to-country.js +105 -0
  76. package/src/lib/utils/timezone-to-country.js.map +1 -0
  77. package/src/lib/webview/constants.d.ts +10 -0
  78. package/src/lib/webview/constants.js +10 -0
  79. package/src/lib/webview/constants.js.map +1 -0
  80. package/src/lib/webview/index.d.ts +3 -0
  81. package/src/lib/webview/index.js +4 -0
  82. package/src/lib/webview/index.js.map +1 -0
  83. package/src/lib/webview/types.d.ts +35 -0
  84. package/src/lib/webview/types.js +16 -0
  85. package/src/lib/webview/types.js.map +1 -0
  86. package/src/lib/webview/utils.d.ts +9 -0
  87. package/src/lib/webview/utils.js +33 -0
  88. package/src/lib/webview/utils.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone-to-country.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/utils/timezone-to-country.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,oBAAoB,EAAE,IAAI;IAC1B,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,oBAAoB,EAAE,IAAI;IAC1B,kBAAkB,EAAE,IAAI;IACxB,cAAc,EAAE,IAAI;IACpB,mBAAmB,EAAE,IAAI;IACzB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,sBAAsB,EAAE,IAAI;IAC5B,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,IAAI;IACrB,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,mBAAmB,EAAE,IAAI;IACzB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,IAAI;IACzB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,IAAI;IACzB,oBAAoB,EAAE,IAAI;IAC1B,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,IAAI;IACvB,gCAAgC,EAAE,IAAI;IACtC,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,qBAAqB,EAAE,IAAI;IAC3B,qBAAqB,EAAE,IAAI;IAC3B,oBAAoB,EAAE,IAAI;IAC1B,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;IACtB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAClB,oBAAoB,EAAE,IAAI;IAC1B,qBAAqB,EAAE,IAAI;IAC3B,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI;IACnB,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,IAAI;CACzB,CAAA"}
@@ -0,0 +1,10 @@
1
+ export declare const WEBVIEW_MESSAGE_TYPES: {
2
+ readonly CLOSE: "botonicCloseWebview";
3
+ readonly SET_TITLE: "botonicSetWebviewTitle";
4
+ readonly SET_ICON: "botonicSetHeaderIcon";
5
+ readonly SET_ALLOW_CLOSE: "botonicSetAllowClose";
6
+ readonly SET_CONFIRM_CLOSE: "botonicSetConfirmClose";
7
+ readonly SEND_PAYLOAD: "botonicSendPayload";
8
+ readonly NAVIGATE: "botonicNavigateTo";
9
+ };
10
+ export type WebviewMessageType = (typeof WEBVIEW_MESSAGE_TYPES)[keyof typeof WEBVIEW_MESSAGE_TYPES];
@@ -0,0 +1,10 @@
1
+ export const WEBVIEW_MESSAGE_TYPES = {
2
+ CLOSE: 'botonicCloseWebview',
3
+ SET_TITLE: 'botonicSetWebviewTitle',
4
+ SET_ICON: 'botonicSetHeaderIcon',
5
+ SET_ALLOW_CLOSE: 'botonicSetAllowClose',
6
+ SET_CONFIRM_CLOSE: 'botonicSetConfirmClose',
7
+ SEND_PAYLOAD: 'botonicSendPayload',
8
+ NAVIGATE: 'botonicNavigateTo',
9
+ };
10
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/webview/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,wBAAwB;IACnC,QAAQ,EAAE,sBAAsB;IAChC,eAAe,EAAE,sBAAsB;IACvC,iBAAiB,EAAE,wBAAwB;IAC3C,YAAY,EAAE,oBAAoB;IAClC,QAAQ,EAAE,mBAAmB;CACrB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './types';
3
+ export * from './utils';
@@ -0,0 +1,4 @@
1
+ export * from './constants';
2
+ export * from './types';
3
+ export * from './utils';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/webview/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { ConfirmCloseOption } from '../domain';
2
+ import { WEBVIEW_MESSAGE_TYPES } from './constants';
3
+ export interface WebviewBotSession {
4
+ _hubtype_api?: string;
5
+ bot: {
6
+ id: string;
7
+ };
8
+ user: {
9
+ id: string;
10
+ provider?: string;
11
+ imp_id?: string;
12
+ unformatted_phone_number?: string;
13
+ };
14
+ }
15
+ export type WebviewPostMessage = {
16
+ type: typeof WEBVIEW_MESSAGE_TYPES.SET_TITLE;
17
+ title: string;
18
+ } | {
19
+ type: typeof WEBVIEW_MESSAGE_TYPES.SET_ICON;
20
+ icon: string;
21
+ } | {
22
+ type: typeof WEBVIEW_MESSAGE_TYPES.SET_ALLOW_CLOSE;
23
+ allow: boolean;
24
+ } | {
25
+ type: typeof WEBVIEW_MESSAGE_TYPES.SET_CONFIRM_CLOSE;
26
+ config: ConfirmCloseOption;
27
+ } | {
28
+ type: typeof WEBVIEW_MESSAGE_TYPES.SEND_PAYLOAD;
29
+ payload: any;
30
+ } | {
31
+ type: typeof WEBVIEW_MESSAGE_TYPES.NAVIGATE;
32
+ url: string;
33
+ };
34
+ export declare function isWebviewPostMessage(data: unknown): data is WebviewPostMessage;
35
+ export declare function isCloseWebviewMessage(data: unknown): boolean;
@@ -0,0 +1,16 @@
1
+ import { WEBVIEW_MESSAGE_TYPES } from './constants';
2
+ export function isWebviewPostMessage(data) {
3
+ if (typeof data !== 'object' || data === null) {
4
+ return false;
5
+ }
6
+ const msg = data;
7
+ if (typeof msg.type !== 'string') {
8
+ return false;
9
+ }
10
+ const validTypes = Object.values(WEBVIEW_MESSAGE_TYPES);
11
+ return validTypes.includes(msg.type);
12
+ }
13
+ export function isCloseWebviewMessage(data) {
14
+ return data === WEBVIEW_MESSAGE_TYPES.CLOSE;
15
+ }
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/webview/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AA0BnD,MAAM,UAAU,oBAAoB,CAClC,IAAa;IAEb,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,GAAG,GAAG,IAA0B,CAAA;IAEtC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;IACvD,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAW,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,OAAO,IAAI,KAAK,qBAAqB,CAAC,KAAK,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { WebviewBotSession } from './types';
2
+ /**
3
+ * Send a postback payload to the bot
4
+ *
5
+ * @param session - Bot session containing API URL and user/bot IDs
6
+ * @param payload - Payload to send to the bot
7
+ * @returns Promise that resolves when the request completes
8
+ */
9
+ export declare function sendPostback(session: WebviewBotSession, payload: any): Promise<void>;
@@ -0,0 +1,33 @@
1
+ import { __awaiter } from "tslib";
2
+ /**
3
+ * Default Hubtype API base URL
4
+ */
5
+ const DEFAULT_HUBTYPE_API = 'https://api.hubtype.com';
6
+ /**
7
+ * Send a postback payload to the bot
8
+ *
9
+ * @param session - Bot session containing API URL and user/bot IDs
10
+ * @param payload - Payload to send to the bot
11
+ * @returns Promise that resolves when the request completes
12
+ */
13
+ export function sendPostback(session, payload) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const baseUrl = session._hubtype_api || DEFAULT_HUBTYPE_API;
16
+ const url = `${baseUrl}/v1/bots/${session.bot.id}/send_postback/`;
17
+ const data = {
18
+ payload,
19
+ chat_id: session.user.id,
20
+ };
21
+ const response = yield fetch(url, {
22
+ method: 'POST',
23
+ headers: {
24
+ 'Content-Type': 'application/json',
25
+ },
26
+ body: JSON.stringify(data),
27
+ });
28
+ if (!response.ok) {
29
+ throw new Error(`Failed to send postback: ${response.status}`);
30
+ }
31
+ });
32
+ }
33
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/webview/utils.ts"],"names":[],"mappings":";AAEA;;GAEG;AACH,MAAM,mBAAmB,GAAG,yBAAyB,CAAA;AAErD;;;;;;GAMG;AACH,MAAM,UAAgB,YAAY,CAChC,OAA0B,EAC1B,OAAY;;QAEZ,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAA;QAC3D,MAAM,GAAG,GAAG,GAAG,OAAO,YAAY,OAAO,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAA;QACjE,MAAM,IAAI,GAAG;YACX,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;SACzB,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;CAAA"}