@botonic/webchat-core 2.36.0 → 2.38.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 (76) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/package.json +4 -3
  3. package/src/index.d.ts +6 -1
  4. package/src/index.js +5 -1
  5. package/src/index.js.map +1 -1
  6. package/src/lib/analytics/create-webchat-analytics-botonic-context.d.ts +14 -0
  7. package/src/lib/analytics/create-webchat-analytics-botonic-context.js +114 -0
  8. package/src/lib/analytics/create-webchat-analytics-botonic-context.js.map +1 -0
  9. package/src/lib/analytics/dispatch-hubtype-analytics-track-event.d.ts +8 -0
  10. package/src/lib/analytics/dispatch-hubtype-analytics-track-event.js +60 -0
  11. package/src/lib/analytics/dispatch-hubtype-analytics-track-event.js.map +1 -0
  12. package/src/lib/analytics/hubtype-analytics-track-event-message.d.ts +9 -0
  13. package/src/lib/analytics/hubtype-analytics-track-event-message.js +24 -0
  14. package/src/lib/analytics/hubtype-analytics-track-event-message.js.map +1 -0
  15. package/src/lib/analytics/index.d.ts +4 -0
  16. package/src/lib/analytics/index.js +5 -0
  17. package/src/lib/analytics/index.js.map +1 -0
  18. package/src/lib/analytics/webchat-analytics-request.d.ts +17 -0
  19. package/src/lib/analytics/webchat-analytics-request.js +25 -0
  20. package/src/lib/analytics/webchat-analytics-request.js.map +1 -0
  21. package/src/lib/controllers/index.d.ts +1 -0
  22. package/src/lib/controllers/index.js +1 -0
  23. package/src/lib/controllers/index.js.map +1 -1
  24. package/src/lib/controllers/public.d.ts +12 -9
  25. package/src/lib/controllers/public.js +3 -2
  26. package/src/lib/controllers/public.js.map +1 -1
  27. package/src/lib/controllers/register-on-open.d.ts +6 -0
  28. package/src/lib/controllers/register-on-open.js +15 -0
  29. package/src/lib/controllers/register-on-open.js.map +1 -0
  30. package/src/lib/controllers/webchat.d.ts +21 -9
  31. package/src/lib/controllers/webchat.js +135 -32
  32. package/src/lib/controllers/webchat.js.map +1 -1
  33. package/src/lib/domain/index.d.ts +11 -0
  34. package/src/lib/infra/client/webchat-client-state.d.ts +13 -0
  35. package/src/lib/infra/client/webchat-client-state.js +29 -0
  36. package/src/lib/infra/client/webchat-client-state.js.map +1 -0
  37. package/src/lib/infra/clients/hubtype-api.d.ts +2 -1
  38. package/src/lib/infra/clients/hubtype-api.js +10 -1
  39. package/src/lib/infra/clients/hubtype-api.js.map +1 -1
  40. package/src/lib/infra/repositories/storage/base-storage.d.ts +13 -2
  41. package/src/lib/infra/repositories/storage/base-storage.js +117 -6
  42. package/src/lib/infra/repositories/storage/base-storage.js.map +1 -1
  43. package/src/lib/infra/repositories/storage/browser-storage.js +2 -5
  44. package/src/lib/infra/repositories/storage/browser-storage.js.map +1 -1
  45. package/src/lib/infra/repositories/storage/client-state-constants.d.ts +4 -0
  46. package/src/lib/infra/repositories/storage/client-state-constants.js +5 -0
  47. package/src/lib/infra/repositories/storage/client-state-constants.js.map +1 -0
  48. package/src/lib/infra/repositories/storage/factory.js +8 -6
  49. package/src/lib/infra/repositories/storage/factory.js.map +1 -1
  50. package/src/lib/infra/repositories/storage/in-memory.js +7 -1
  51. package/src/lib/infra/repositories/storage/in-memory.js.map +1 -1
  52. package/src/lib/infra/repositories/storage/index.d.ts +2 -1
  53. package/src/lib/infra/repositories/storage/index.js +1 -0
  54. package/src/lib/infra/repositories/storage/index.js.map +1 -1
  55. package/src/lib/infra/repositories/storage/parse-conversation-data.d.ts +2 -0
  56. package/src/lib/infra/repositories/storage/parse-conversation-data.js +19 -0
  57. package/src/lib/infra/repositories/storage/parse-conversation-data.js.map +1 -0
  58. package/src/lib/infra/repositories/storage/resolve-webchat-session-user.d.ts +9 -0
  59. package/src/lib/infra/repositories/storage/resolve-webchat-session-user.js +41 -0
  60. package/src/lib/infra/repositories/storage/resolve-webchat-session-user.js.map +1 -0
  61. package/src/lib/infra/repositories/storage/storage-test-helpers.d.ts +2 -0
  62. package/src/lib/infra/repositories/storage/storage-test-helpers.js +10 -0
  63. package/src/lib/infra/repositories/storage/storage-test-helpers.js.map +1 -0
  64. package/src/lib/infra/repositories/storage/types.d.ts +11 -0
  65. package/src/lib/machines/embed-trigger.d.ts +17 -0
  66. package/src/lib/machines/embed-trigger.js +29 -0
  67. package/src/lib/machines/embed-trigger.js.map +1 -0
  68. package/src/lib/machines/webchat.d.ts +41 -8
  69. package/src/lib/machines/webchat.js +73 -23
  70. package/src/lib/machines/webchat.js.map +1 -1
  71. package/src/lib/messages/webchat-message.d.ts +4 -1
  72. package/src/lib/messages/webchat-message.js +3 -0
  73. package/src/lib/messages/webchat-message.js.map +1 -1
  74. package/src/lib/services/webchat-service.d.ts +3 -0
  75. package/src/lib/services/webchat-service.js +77 -5
  76. package/src/lib/services/webchat-service.js.map +1 -1
@@ -1,8 +1,12 @@
1
1
  import { __awaiter } from "tslib";
2
- const DEFAULT_KEY_PREFIX = 'botonic-webchat';
2
+ import { APP_CLIENT_STATE_PLACEHOLDER_USER_ID, DEFAULT_KEY_PREFIX, } from './client-state-constants';
3
3
  export class BaseStorageRepository {
4
- constructor(keyPrefix = DEFAULT_KEY_PREFIX) {
5
- this.keyPrefix = keyPrefix;
4
+ constructor(options = DEFAULT_KEY_PREFIX) {
5
+ var _a;
6
+ this.keyPrefix =
7
+ typeof options === 'string'
8
+ ? options
9
+ : ((_a = options.keyPrefix) !== null && _a !== void 0 ? _a : DEFAULT_KEY_PREFIX);
6
10
  }
7
11
  getConversationKey(appId, userId) {
8
12
  return `${this.keyPrefix}:${appId}:${userId}`;
@@ -10,6 +14,16 @@ export class BaseStorageRepository {
10
14
  getAppStoragePrefix(appId) {
11
15
  return `${this.keyPrefix}:${appId}:`;
12
16
  }
17
+ createStoredAnonymousUser(userId, lastActiveAt) {
18
+ return {
19
+ id: userId,
20
+ name: 'Anonymous User',
21
+ locale: '',
22
+ country: '',
23
+ system_locale: '',
24
+ lastActiveAt,
25
+ };
26
+ }
13
27
  getConversationData(appId, userId) {
14
28
  const key = this.getConversationKey(appId, userId);
15
29
  const data = this.getData(key);
@@ -19,6 +33,65 @@ export class BaseStorageRepository {
19
33
  const key = this.getConversationKey(appId, userId);
20
34
  this.setData(key, data);
21
35
  }
36
+ getCustomState(data) {
37
+ var _a;
38
+ return (_a = data.custom) !== null && _a !== void 0 ? _a : {};
39
+ }
40
+ withCustomState(data, customState) {
41
+ return Object.assign(Object.assign({}, data), { custom: customState });
42
+ }
43
+ resolveClientStateUserId(appId) {
44
+ var _a;
45
+ const prefix = this.getAppStoragePrefix(appId);
46
+ const keys = this.getKeysWithPrefix(prefix);
47
+ let mostRecentUserId = null;
48
+ let mostRecentTimestamp = null;
49
+ for (const key of keys) {
50
+ const suffix = key.slice(prefix.length);
51
+ if (!suffix || suffix === APP_CLIENT_STATE_PLACEHOLDER_USER_ID) {
52
+ continue;
53
+ }
54
+ const data = this.getData(key);
55
+ if ((_a = data === null || data === void 0 ? void 0 : data.user) === null || _a === void 0 ? void 0 : _a.lastActiveAt) {
56
+ if (!mostRecentTimestamp ||
57
+ new Date(data.user.lastActiveAt) > new Date(mostRecentTimestamp)) {
58
+ mostRecentUserId = data.user.id;
59
+ mostRecentTimestamp = data.user.lastActiveAt;
60
+ }
61
+ }
62
+ }
63
+ return mostRecentUserId !== null && mostRecentUserId !== void 0 ? mostRecentUserId : APP_CLIENT_STATE_PLACEHOLDER_USER_ID;
64
+ }
65
+ findAppClientState(appId) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ const userId = this.resolveClientStateUserId(appId);
68
+ const data = this.getConversationData(appId, userId);
69
+ return Object.assign({}, this.getCustomState(data));
70
+ });
71
+ }
72
+ saveAppClientState(appId, state) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ const userId = this.resolveClientStateUserId(appId);
75
+ const data = this.getConversationData(appId, userId);
76
+ this.saveConversationData(appId, userId, this.withCustomState(data, state));
77
+ });
78
+ }
79
+ reconcilePlaceholderConversation(appId) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const placeholderKey = this.getConversationKey(appId, APP_CLIENT_STATE_PLACEHOLDER_USER_ID);
82
+ if (this.getData(placeholderKey) == null) {
83
+ return;
84
+ }
85
+ const lastUser = yield this.findLastUserSession(appId);
86
+ if (lastUser) {
87
+ let data = this.getConversationData(appId, lastUser.id);
88
+ data = this.mergePlaceholderCustomIntoUser(appId, lastUser.id, data);
89
+ this.saveConversationData(appId, lastUser.id, data);
90
+ return;
91
+ }
92
+ yield this.clearConversation(appId, APP_CLIENT_STATE_PLACEHOLDER_USER_ID);
93
+ });
94
+ }
22
95
  saveMessage(appId, userId, message) {
23
96
  return __awaiter(this, void 0, void 0, function* () {
24
97
  const data = this.getConversationData(appId, userId);
@@ -37,6 +110,9 @@ export class BaseStorageRepository {
37
110
  return __awaiter(this, void 0, void 0, function* () {
38
111
  const data = this.getConversationData(appId, userId);
39
112
  data.messages = messages;
113
+ const now = new Date().toISOString();
114
+ data.user = data.user
115
+ ? Object.assign(Object.assign({}, data.user), { lastActiveAt: now }) : this.createStoredAnonymousUser(userId, now);
40
116
  this.saveConversationData(appId, userId, data);
41
117
  });
42
118
  }
@@ -46,9 +122,20 @@ export class BaseStorageRepository {
46
122
  return data.messages;
47
123
  });
48
124
  }
125
+ mergePlaceholderCustomIntoUser(appId, userId, data) {
126
+ const placeholder = this.getConversationData(appId, APP_CLIENT_STATE_PLACEHOLDER_USER_ID);
127
+ const placeholderState = this.getCustomState(placeholder);
128
+ if (Object.keys(placeholderState).length === 0) {
129
+ return data;
130
+ }
131
+ const mergedState = Object.assign(Object.assign({}, placeholderState), this.getCustomState(data));
132
+ this.clearConversation(appId, APP_CLIENT_STATE_PLACEHOLDER_USER_ID);
133
+ return this.withCustomState(data, mergedState);
134
+ }
49
135
  saveUser(appId, user) {
50
136
  return __awaiter(this, void 0, void 0, function* () {
51
- const data = this.getConversationData(appId, user.id);
137
+ let data = this.getConversationData(appId, user.id);
138
+ data = this.mergePlaceholderCustomIntoUser(appId, user.id, data);
52
139
  const webchatUser = Object.assign(Object.assign({}, user), { lastActiveAt: new Date().toISOString() });
53
140
  data.user = webchatUser;
54
141
  this.saveConversationData(appId, user.id, data);
@@ -67,12 +154,16 @@ export class BaseStorageRepository {
67
154
  }
68
155
  findLastUserSession(appId) {
69
156
  return __awaiter(this, void 0, void 0, function* () {
70
- var _a;
157
+ var _a, _b;
71
158
  const prefix = this.getAppStoragePrefix(appId);
72
159
  const keys = this.getKeysWithPrefix(prefix);
73
160
  let mostRecentUser = null;
74
161
  let mostRecentTimestamp = null;
75
162
  for (const key of keys) {
163
+ const suffix = key.slice(prefix.length);
164
+ if (!suffix || suffix === APP_CLIENT_STATE_PLACEHOLDER_USER_ID) {
165
+ continue;
166
+ }
76
167
  const data = this.getData(key);
77
168
  if ((_a = data === null || data === void 0 ? void 0 : data.user) === null || _a === void 0 ? void 0 : _a.lastActiveAt) {
78
169
  if (!mostRecentTimestamp ||
@@ -82,7 +173,27 @@ export class BaseStorageRepository {
82
173
  }
83
174
  }
84
175
  }
85
- return mostRecentUser;
176
+ if (mostRecentUser) {
177
+ return mostRecentUser;
178
+ }
179
+ let fallbackUser = null;
180
+ let fallbackMessageCount = -1;
181
+ for (const key of keys) {
182
+ const suffix = key.slice(prefix.length);
183
+ if (!suffix || suffix === APP_CLIENT_STATE_PLACEHOLDER_USER_ID) {
184
+ continue;
185
+ }
186
+ const data = this.getData(key);
187
+ if (!data || data.messages.length === 0) {
188
+ continue;
189
+ }
190
+ if (data.messages.length > fallbackMessageCount) {
191
+ fallbackMessageCount = data.messages.length;
192
+ fallbackUser =
193
+ (_b = data.user) !== null && _b !== void 0 ? _b : this.createStoredAnonymousUser(suffix, new Date().toISOString());
194
+ }
195
+ }
196
+ return fallbackUser;
86
197
  });
87
198
  }
88
199
  clearConversation(appId, userId) {
@@ -1 +1 @@
1
- {"version":3,"file":"base-storage.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/base-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-storage.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/base-storage.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,11 @@
1
1
  import { BaseStorageRepository } from './base-storage';
2
+ import { parseConversationData } from './parse-conversation-data';
2
3
  export class BrowserStorageRepository extends BaseStorageRepository {
3
4
  getData(key) {
4
5
  const stored = this.storage.getItem(key);
5
6
  if (stored) {
6
7
  try {
7
- const parsed = JSON.parse(stored);
8
- return {
9
- messages: Array.isArray(parsed.messages) ? parsed.messages : [],
10
- user: parsed.user || null,
11
- };
8
+ return parseConversationData(JSON.parse(stored));
12
9
  }
13
10
  catch (error) {
14
11
  console.error('Failed to parse conversation data:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"browser-storage.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/browser-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,MAAM,OAAgB,wBAAyB,SAAQ,qBAAqB;IAGhE,OAAO,CAAC,GAAW;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAExC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACjC,OAAO;oBACL,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC/D,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;iBAC1B,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAES,OAAO,CAAC,GAAW,EAAE,IAAsB;QACnD,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK;gBACtB,CAAC,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;YAC1E,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;YAC1E,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAES,UAAU,CAAC,GAAW;QAC9B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAES,iBAAiB,CAAC,MAAc;QACxC,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"browser-storage.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/browser-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAGjE,MAAM,OAAgB,wBAAyB,SAAQ,qBAAqB;IAGhE,OAAO,CAAC,GAAW;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAExC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAClD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAES,OAAO,CAAC,GAAW,EAAE,IAAsB;QACnD,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK;gBACtB,CAAC,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;YAC1E,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;YAC1E,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAES,UAAU,CAAC,GAAW;QAC9B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAES,iBAAiB,CAAC,MAAc;QACxC,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ /** Framework default storage key prefix (`{prefix}:{appId}:{userId}`). */
2
+ export declare const DEFAULT_KEY_PREFIX = "botonic-webchat";
3
+ /** Conversation user id used before a Hubtype user exists (empty — filled when a real session starts). */
4
+ export declare const APP_CLIENT_STATE_PLACEHOLDER_USER_ID = "";
@@ -0,0 +1,5 @@
1
+ /** Framework default storage key prefix (`{prefix}:{appId}:{userId}`). */
2
+ export const DEFAULT_KEY_PREFIX = 'botonic-webchat';
3
+ /** Conversation user id used before a Hubtype user exists (empty — filled when a real session starts). */
4
+ export const APP_CLIENT_STATE_PLACEHOLDER_USER_ID = '';
5
+ //# sourceMappingURL=client-state-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-state-constants.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/client-state-constants.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAA;AAEnD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAA"}
@@ -1,20 +1,22 @@
1
+ import { DEFAULT_KEY_PREFIX } from './client-state-constants';
1
2
  import { InMemoryRepository } from './in-memory';
2
3
  import { LocalStorageRepository } from './local-storage';
3
4
  import { SessionStorageRepository } from './session-storage';
4
5
  export function createStorageRepository(config) {
5
- const { type = 'localStorage', keyPrefix = 'botonic-webchat' } = config || {};
6
+ const { type = 'localStorage', keyPrefix = DEFAULT_KEY_PREFIX } = config || {};
7
+ const repositoryOptions = { keyPrefix };
6
8
  if (type === 'inMemory') {
7
- return new InMemoryRepository();
9
+ return new InMemoryRepository(repositoryOptions);
8
10
  }
9
11
  if (typeof window === 'undefined') {
10
- return new InMemoryRepository();
12
+ return new InMemoryRepository(repositoryOptions);
11
13
  }
12
14
  if (type === 'sessionStorage' && window.sessionStorage) {
13
- return new SessionStorageRepository(keyPrefix);
15
+ return new SessionStorageRepository(repositoryOptions);
14
16
  }
15
17
  if (type === 'localStorage' && window.localStorage) {
16
- return new LocalStorageRepository(keyPrefix);
18
+ return new LocalStorageRepository(repositoryOptions);
17
19
  }
18
- return new InMemoryRepository();
20
+ return new InMemoryRepository(repositoryOptions);
19
21
  }
20
22
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAG5D,MAAM,UAAU,uBAAuB,CACrC,MAAsB;IAEtB,MAAM,EAAE,IAAI,GAAG,cAAc,EAAE,SAAS,GAAG,iBAAiB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAE7E,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,IAAI,kBAAkB,EAAE,CAAA;IACjC,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,IAAI,kBAAkB,EAAE,CAAA;IACjC,CAAC;IAED,IAAI,IAAI,KAAK,gBAAgB,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACvD,OAAO,IAAI,wBAAwB,CAAC,SAAS,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACnD,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO,IAAI,kBAAkB,EAAE,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAG5D,MAAM,UAAU,uBAAuB,CACrC,MAAsB;IAEtB,MAAM,EAAE,IAAI,GAAG,cAAc,EAAE,SAAS,GAAG,kBAAkB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAC9E,MAAM,iBAAiB,GAAG,EAAE,SAAS,EAAE,CAAA;IAEvC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,IAAI,KAAK,gBAAgB,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACvD,OAAO,IAAI,wBAAwB,CAAC,iBAAiB,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACnD,OAAO,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAA;AAClD,CAAC"}
@@ -15,7 +15,13 @@ export class InMemoryRepository extends BaseStorageRepository {
15
15
  this.storage.delete(key);
16
16
  }
17
17
  getKeysWithPrefix(prefix) {
18
- return Array.from(this.storage.keys()).filter(key => key.startsWith(prefix));
18
+ const keys = [];
19
+ for (const key of this.storage.keys()) {
20
+ if (key.startsWith(prefix)) {
21
+ keys.push(key);
22
+ }
23
+ }
24
+ return keys;
19
25
  }
20
26
  }
21
27
  //# sourceMappingURL=in-memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/in-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,MAAM,OAAO,kBAAmB,SAAQ,qBAAqB;IAA7D;;QACU,YAAO,GAAG,IAAI,GAAG,EAA4B,CAAA;IAiBvD,CAAC;IAfW,OAAO,CAAC,GAAW;;QAC3B,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAA;IACtC,CAAC;IAES,OAAO,CAAC,GAAW,EAAE,IAAsB;QACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAES,UAAU,CAAC,GAAW;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAES,iBAAiB,CAAC,MAAc;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9E,CAAC;CACF"}
1
+ {"version":3,"file":"in-memory.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/in-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,MAAM,OAAO,kBAAmB,SAAQ,qBAAqB;IAA7D;;QACU,YAAO,GAAG,IAAI,GAAG,EAA4B,CAAA;IAuBvD,CAAC;IArBW,OAAO,CAAC,GAAW;;QAC3B,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,IAAI,CAAA;IACtC,CAAC;IAES,OAAO,CAAC,GAAW,EAAE,IAAsB;QACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAES,UAAU,CAAC,GAAW;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAES,iBAAiB,CAAC,MAAc;QACxC,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -3,5 +3,6 @@ export { BrowserStorageRepository } from './browser-storage';
3
3
  export { createStorageRepository } from './factory';
4
4
  export { InMemoryRepository } from './in-memory';
5
5
  export { LocalStorageRepository } from './local-storage';
6
+ export { resetWebchatSessionInitLocksForTests, resolveWebchatSessionUser, } from './resolve-webchat-session-user';
6
7
  export { SessionStorageRepository } from './session-storage';
7
- export type { ConversationData, StorageConfig, StorageRepository, StorageType, StoredMessage, WebchatHubtypeUser, } from './types';
8
+ export type { AppClientState, ConversationData, StorageConfig, StorageRepository, StorageType, StoredMessage, WebchatHubtypeUser, } from './types';
@@ -3,5 +3,6 @@ export { BrowserStorageRepository } from './browser-storage';
3
3
  export { createStorageRepository } from './factory';
4
4
  export { InMemoryRepository } from './in-memory';
5
5
  export { LocalStorageRepository } from './local-storage';
6
+ export { resetWebchatSessionInitLocksForTests, resolveWebchatSessionUser, } from './resolve-webchat-session-user';
6
7
  export { SessionStorageRepository } from './session-storage';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EACL,oCAAoC,EACpC,yBAAyB,GAC1B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,2 @@
1
+ import type { ConversationData } from './types';
2
+ export declare function parseConversationData(parsed: unknown): ConversationData;
@@ -0,0 +1,19 @@
1
+ export function parseConversationData(parsed) {
2
+ if (!parsed || typeof parsed !== 'object') {
3
+ return { messages: [], user: null };
4
+ }
5
+ const record = parsed;
6
+ const customRaw = record.custom;
7
+ let custom;
8
+ if (customRaw && typeof customRaw === 'object') {
9
+ custom = customRaw;
10
+ }
11
+ return {
12
+ messages: Array.isArray(record.messages)
13
+ ? record.messages
14
+ : [],
15
+ user: record.user || null,
16
+ custom,
17
+ };
18
+ }
19
+ //# sourceMappingURL=parse-conversation-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-conversation-data.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/parse-conversation-data.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACrC,CAAC;IACD,MAAM,MAAM,GAAG,MAAiC,CAAA;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;IAC/B,IAAI,MAAkC,CAAA;IACtC,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,GAAG,SAA2B,CAAA;IACtC,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtC,CAAC,CAAE,MAAM,CAAC,QAAyC;YACnD,CAAC,CAAC,EAAE;QACN,IAAI,EAAG,MAAM,CAAC,IAAiC,IAAI,IAAI;QACvD,MAAM;KACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { HubtypeUser } from '@botonic/shared';
2
+ import type { StorageRepository } from './types';
3
+ /**
4
+ * Returns the persisted session user for an app, or creates and saves one exactly once
5
+ * even when multiple webchat inits run in parallel (e.g. React Strict Mode remount).
6
+ */
7
+ export declare function resolveWebchatSessionUser(storage: StorageRepository, appId: string, createAnonymous: () => HubtypeUser): Promise<HubtypeUser>;
8
+ /** @internal */
9
+ export declare function resetWebchatSessionInitLocksForTests(): void;
@@ -0,0 +1,41 @@
1
+ import { __awaiter } from "tslib";
2
+ const pendingSessionByAppId = new Map();
3
+ /**
4
+ * Returns the persisted session user for an app, or creates and saves one exactly once
5
+ * even when multiple webchat inits run in parallel (e.g. React Strict Mode remount).
6
+ */
7
+ export function resolveWebchatSessionUser(storage, appId, createAnonymous) {
8
+ return __awaiter(this, void 0, void 0, function* () {
9
+ const existing = yield storage.findLastUserSession(appId);
10
+ if (existing) {
11
+ return existing;
12
+ }
13
+ const inFlight = pendingSessionByAppId.get(appId);
14
+ if (inFlight) {
15
+ return inFlight;
16
+ }
17
+ const promise = (() => __awaiter(this, void 0, void 0, function* () {
18
+ const again = yield storage.findLastUserSession(appId);
19
+ if (again) {
20
+ return again;
21
+ }
22
+ const user = createAnonymous();
23
+ yield storage.saveUser(appId, user);
24
+ return user;
25
+ }))();
26
+ pendingSessionByAppId.set(appId, promise);
27
+ try {
28
+ return yield promise;
29
+ }
30
+ finally {
31
+ if (pendingSessionByAppId.get(appId) === promise) {
32
+ pendingSessionByAppId.delete(appId);
33
+ }
34
+ }
35
+ });
36
+ }
37
+ /** @internal */
38
+ export function resetWebchatSessionInitLocksForTests() {
39
+ pendingSessionByAppId.clear();
40
+ }
41
+ //# sourceMappingURL=resolve-webchat-session-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-webchat-session-user.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/resolve-webchat-session-user.ts"],"names":[],"mappings":";AAIA,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAgC,CAAA;AAErE;;;GAGG;AACH,MAAM,UAAgB,yBAAyB,CAC7C,OAA0B,EAC1B,KAAa,EACb,eAAkC;;QAElC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,GAAS,EAAE;YAC1B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;YACtD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAA;YACd,CAAC;YACD,MAAM,IAAI,GAAG,eAAe,EAAE,CAAA;YAC9B,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACnC,OAAO,IAAI,CAAA;QACb,CAAC,CAAA,CAAC,EAAE,CAAA;QAEJ,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAEzC,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAA;QACtB,CAAC;gBAAS,CAAC;YACT,IAAI,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC;gBACjD,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;CAAA;AAED,gBAAgB;AAChB,MAAM,UAAU,oCAAoC;IAClD,qBAAqB,CAAC,KAAK,EAAE,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { HubtypeUser } from '@botonic/shared';
2
+ export declare function createMockUser(id: string): HubtypeUser;
@@ -0,0 +1,10 @@
1
+ export function createMockUser(id) {
2
+ return {
3
+ id,
4
+ name: 'Test User',
5
+ locale: 'en',
6
+ country: 'US',
7
+ system_locale: 'en-US',
8
+ };
9
+ }
10
+ //# sourceMappingURL=storage-test-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-test-helpers.js","sourceRoot":"","sources":["../../../../../../../../../libs/botonic/webchat-core/src/lib/infra/repositories/storage/storage-test-helpers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO;QACL,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,OAAO;KACvB,CAAA;AACH,CAAC"}
@@ -9,9 +9,12 @@ export interface WebchatHubtypeUser extends HubtypeUser {
9
9
  botId?: string;
10
10
  chatId?: string;
11
11
  }
12
+ /** Flat attribute bag on `ConversationData.custom` (app-specific attrs via `WebchatClientState`). */
13
+ export type AppClientState = Record<string, unknown>;
12
14
  export interface ConversationData {
13
15
  messages: StoredMessage[];
14
16
  user: WebchatHubtypeUser | null;
17
+ custom?: AppClientState;
15
18
  }
16
19
  export interface StorageRepository {
17
20
  saveMessage(appId: string, userId: string, message: StoredMessage): Promise<void>;
@@ -23,9 +26,17 @@ export interface StorageRepository {
23
26
  findLastUserSession(appId: string): Promise<HubtypeUser | null>;
24
27
  clearConversation(appId: string, userId: string): Promise<void>;
25
28
  clearAppData(appId: string): Promise<void>;
29
+ findAppClientState(appId: string): Promise<AppClientState>;
30
+ saveAppClientState(appId: string, state: AppClientState): Promise<void>;
31
+ /**
32
+ * Merges placeholder-key client state into the active user conversation and
33
+ * deletes the orphan `prefix:appId:` row (e.g. after pre-user `saveAppClientState`).
34
+ */
35
+ reconcilePlaceholderConversation(appId: string): Promise<void>;
26
36
  }
27
37
  export type StorageType = 'localStorage' | 'sessionStorage' | 'inMemory';
28
38
  export interface StorageConfig {
29
39
  type?: StorageType;
40
+ /** Storage key prefix (default `botonic-webchat`; apps may set e.g. `botonicLocalState`). */
30
41
  keyPrefix?: string;
31
42
  }
@@ -0,0 +1,17 @@
1
+ export interface EmbedTriggerContext {
2
+ firstHoverExpandShown: boolean;
3
+ }
4
+ export type EmbedTriggerInput = Record<string, never>;
5
+ export type EmbedTriggerEvent = {
6
+ type: 'MARK_FIRST_HOVER_EXPAND_SHOWN';
7
+ };
8
+ /** In-memory first-visit hover expand flag (not written to `WebchatClientState`). */
9
+ export declare const embedTriggerMachine: import("xstate").StateMachine<EmbedTriggerContext, EmbedTriggerEvent, {}, never, never, never, never, "ready", string, EmbedTriggerInput, import("xstate").NonReducibleUnknown, import("xstate").EventObject, import("xstate").MetaObject, {
10
+ id: "embedTrigger";
11
+ states: {
12
+ readonly ready: {};
13
+ };
14
+ }>;
15
+ export declare function isEmbedTriggerHydrated(state: {
16
+ matches: (value: string) => boolean;
17
+ }): boolean;
@@ -0,0 +1,29 @@
1
+ import { assign, setup } from 'xstate';
2
+ /** In-memory first-visit hover expand flag (not written to `WebchatClientState`). */
3
+ export const embedTriggerMachine = setup({
4
+ types: {
5
+ context: {},
6
+ input: {},
7
+ events: {},
8
+ },
9
+ }).createMachine({
10
+ id: 'embedTrigger',
11
+ initial: 'ready',
12
+ context: {
13
+ firstHoverExpandShown: false,
14
+ },
15
+ states: {
16
+ ready: {
17
+ on: {
18
+ MARK_FIRST_HOVER_EXPAND_SHOWN: {
19
+ guard: ({ context }) => !context.firstHoverExpandShown,
20
+ actions: assign({ firstHoverExpandShown: true }),
21
+ },
22
+ },
23
+ },
24
+ },
25
+ });
26
+ export function isEmbedTriggerHydrated(state) {
27
+ return state.matches('ready');
28
+ }
29
+ //# sourceMappingURL=embed-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed-trigger.js","sourceRoot":"","sources":["../../../../../../../libs/botonic/webchat-core/src/lib/machines/embed-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAUtC,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;IACvC,KAAK,EAAE;QACL,OAAO,EAAE,EAAyB;QAClC,KAAK,EAAE,EAAuB;QAC9B,MAAM,EAAE,EAAuB;KAChC;CACF,CAAC,CAAC,aAAa,CAAC;IACf,EAAE,EAAE,cAAc;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE;QACP,qBAAqB,EAAE,KAAK;KAC7B;IACD,MAAM,EAAE;QACN,KAAK,EAAE;YACL,EAAE,EAAE;gBACF,6BAA6B,EAAE;oBAC7B,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB;oBACtD,OAAO,EAAE,MAAM,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;iBACjD;aACF;SACF;KACF;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,sBAAsB,CAAC,KAEtC;IACC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAC/B,CAAC"}