@solucx/react-native-solucx-widget 0.2.4 → 2.0.7

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 (256) hide show
  1. package/README.md +526 -182
  2. package/lib/SoluCXWidget.d.ts +50 -7
  3. package/lib/SoluCXWidget.d.ts.map +1 -1
  4. package/lib/SoluCXWidget.js +105 -100
  5. package/lib/SoluCXWidget.js.map +1 -1
  6. package/lib/SoluCXWidgetHost.d.ts +3 -0
  7. package/lib/SoluCXWidgetHost.d.ts.map +1 -0
  8. package/lib/SoluCXWidgetHost.js +34 -0
  9. package/lib/SoluCXWidgetHost.js.map +1 -0
  10. package/lib/SoluCXWidgetView.d.ts +12 -0
  11. package/lib/SoluCXWidgetView.d.ts.map +1 -0
  12. package/lib/SoluCXWidgetView.js +61 -0
  13. package/lib/SoluCXWidgetView.js.map +1 -0
  14. package/lib/components/CloseButton.d.ts +1 -1
  15. package/lib/components/CloseButton.d.ts.map +1 -1
  16. package/lib/components/CloseButton.js +4 -1
  17. package/lib/components/CloseButton.js.map +1 -1
  18. package/lib/components/InlineWidget.d.ts.map +1 -1
  19. package/lib/components/InlineWidget.js +2 -7
  20. package/lib/components/InlineWidget.js.map +1 -1
  21. package/lib/components/ModalWidget.d.ts +1 -1
  22. package/lib/components/ModalWidget.d.ts.map +1 -1
  23. package/lib/components/ModalWidget.js +3 -16
  24. package/lib/components/ModalWidget.js.map +1 -1
  25. package/lib/components/OverlayWidget.d.ts.map +1 -1
  26. package/lib/components/OverlayWidget.js +5 -15
  27. package/lib/components/OverlayWidget.js.map +1 -1
  28. package/lib/components/index.d.ts +5 -0
  29. package/lib/components/index.d.ts.map +1 -0
  30. package/lib/components/index.js +12 -0
  31. package/lib/components/index.js.map +1 -0
  32. package/lib/constants/Constants.d.ts +11 -0
  33. package/lib/constants/Constants.d.ts.map +1 -1
  34. package/lib/constants/Constants.js +16 -1
  35. package/lib/constants/Constants.js.map +1 -1
  36. package/lib/{interfaces → domain}/WidgetCallbacks.d.ts +2 -2
  37. package/lib/domain/WidgetCallbacks.d.ts.map +1 -0
  38. package/lib/domain/WidgetCallbacks.js.map +1 -0
  39. package/{src/interfaces/WidgetData.ts → lib/domain/WidgetData.d.ts} +5 -2
  40. package/lib/domain/WidgetData.d.ts.map +1 -0
  41. package/lib/{interfaces → domain}/WidgetData.js.map +1 -1
  42. package/lib/domain/WidgetDisplayResult.d.ts +6 -0
  43. package/lib/domain/WidgetDisplayResult.d.ts.map +1 -0
  44. package/lib/domain/WidgetDisplayResult.js +3 -0
  45. package/lib/domain/WidgetDisplayResult.js.map +1 -0
  46. package/lib/domain/WidgetOptions.d.ts +27 -0
  47. package/lib/domain/WidgetOptions.d.ts.map +1 -0
  48. package/lib/domain/WidgetOptions.js +30 -0
  49. package/lib/domain/WidgetOptions.js.map +1 -0
  50. package/lib/domain/WidgetResponse.d.ts +5 -0
  51. package/lib/domain/WidgetResponse.d.ts.map +1 -0
  52. package/lib/{interfaces/WidgetOptions.js → domain/WidgetResponse.js} +1 -1
  53. package/lib/domain/WidgetResponse.js.map +1 -0
  54. package/lib/domain/WidgetSamplerLog.d.ts +12 -0
  55. package/lib/domain/WidgetSamplerLog.d.ts.map +1 -0
  56. package/lib/domain/WidgetSamplerLog.js.map +1 -0
  57. package/lib/{interfaces → domain}/index.d.ts +1 -2
  58. package/lib/domain/index.d.ts.map +1 -0
  59. package/lib/{interfaces → domain}/index.js.map +1 -1
  60. package/lib/hooks/index.d.ts +2 -2
  61. package/lib/hooks/index.d.ts.map +1 -1
  62. package/lib/hooks/index.js +5 -5
  63. package/lib/hooks/index.js.map +1 -1
  64. package/lib/hooks/useClientVersionCollector.d.ts +3 -0
  65. package/lib/hooks/useClientVersionCollector.d.ts.map +1 -0
  66. package/lib/{services/ClientVersionCollector.js → hooks/useClientVersionCollector.js} +7 -2
  67. package/lib/hooks/useClientVersionCollector.js.map +1 -0
  68. package/lib/hooks/useHeightAnimation.d.ts +0 -1
  69. package/lib/hooks/useHeightAnimation.d.ts.map +1 -1
  70. package/lib/hooks/useHeightAnimation.js +4 -2
  71. package/lib/hooks/useHeightAnimation.js.map +1 -1
  72. package/lib/hooks/useWidget.d.ts +13 -0
  73. package/lib/hooks/useWidget.d.ts.map +1 -0
  74. package/lib/hooks/useWidget.js +44 -0
  75. package/lib/hooks/useWidget.js.map +1 -0
  76. package/lib/hooks/useWidgetBootstrap.d.ts +21 -0
  77. package/lib/hooks/useWidgetBootstrap.d.ts.map +1 -0
  78. package/lib/hooks/useWidgetBootstrap.js +87 -0
  79. package/lib/hooks/useWidgetBootstrap.js.map +1 -0
  80. package/lib/hooks/useWidgetServices.d.ts +19 -0
  81. package/lib/hooks/useWidgetServices.d.ts.map +1 -0
  82. package/lib/hooks/useWidgetServices.js +34 -0
  83. package/lib/hooks/useWidgetServices.js.map +1 -0
  84. package/lib/hooks/useWidgetUI.d.ts +9 -0
  85. package/lib/hooks/useWidgetUI.d.ts.map +1 -0
  86. package/lib/hooks/useWidgetUI.js +33 -0
  87. package/lib/hooks/useWidgetUI.js.map +1 -0
  88. package/lib/index.d.ts +10 -11
  89. package/lib/index.d.ts.map +1 -1
  90. package/lib/index.js +13 -38
  91. package/lib/index.js.map +1 -1
  92. package/lib/services/UserIdentificationService.d.ts +3 -0
  93. package/lib/services/UserIdentificationService.d.ts.map +1 -0
  94. package/lib/services/UserIdentificationService.js +17 -0
  95. package/lib/services/UserIdentificationService.js.map +1 -0
  96. package/lib/services/WidgetBootstrapService.d.ts +12 -0
  97. package/lib/services/WidgetBootstrapService.d.ts.map +1 -0
  98. package/lib/services/{widgetBootstrapService.js → WidgetBootstrapService.js} +36 -15
  99. package/lib/services/WidgetBootstrapService.js.map +1 -0
  100. package/lib/services/WidgetEventService.d.ts +8 -0
  101. package/lib/services/WidgetEventService.d.ts.map +1 -0
  102. package/lib/services/WidgetEventService.js +14 -0
  103. package/lib/services/WidgetEventService.js.map +1 -0
  104. package/lib/services/WidgetStateManager.d.ts +20 -0
  105. package/lib/services/WidgetStateManager.d.ts.map +1 -0
  106. package/lib/services/WidgetStateManager.js +93 -0
  107. package/lib/services/WidgetStateManager.js.map +1 -0
  108. package/lib/services/WidgetValidationService.d.ts +17 -0
  109. package/lib/services/WidgetValidationService.d.ts.map +1 -0
  110. package/lib/services/WidgetValidationService.js +132 -0
  111. package/lib/services/WidgetValidationService.js.map +1 -0
  112. package/lib/services/events/EventHandlerFactory.d.ts +18 -0
  113. package/lib/services/events/EventHandlerFactory.d.ts.map +1 -0
  114. package/lib/services/events/EventHandlerFactory.js +67 -0
  115. package/lib/services/events/EventHandlerFactory.js.map +1 -0
  116. package/lib/services/events/EventHandlers.d.ts +10 -0
  117. package/lib/services/events/EventHandlers.d.ts.map +1 -0
  118. package/lib/services/events/EventHandlers.js +72 -0
  119. package/lib/services/events/EventHandlers.js.map +1 -0
  120. package/lib/services/events/index.d.ts +3 -0
  121. package/lib/services/events/index.d.ts.map +1 -0
  122. package/lib/services/events/index.js +21 -0
  123. package/lib/services/events/index.js.map +1 -0
  124. package/lib/services/height/HeightStrategies.d.ts +3 -0
  125. package/lib/services/height/HeightStrategies.d.ts.map +1 -0
  126. package/lib/services/height/HeightStrategies.js +14 -0
  127. package/lib/services/height/HeightStrategies.js.map +1 -0
  128. package/lib/services/storage/AsyncStorageService.d.ts +13 -0
  129. package/lib/services/storage/AsyncStorageService.d.ts.map +1 -0
  130. package/lib/services/storage/AsyncStorageService.js +73 -0
  131. package/lib/services/storage/AsyncStorageService.js.map +1 -0
  132. package/lib/services/storage/IStorageService.d.ts +30 -0
  133. package/lib/services/storage/IStorageService.d.ts.map +1 -0
  134. package/lib/services/storage/IStorageService.js +3 -0
  135. package/lib/services/storage/IStorageService.js.map +1 -0
  136. package/lib/services/storage/StorageIdBuilder.d.ts +11 -0
  137. package/lib/services/storage/StorageIdBuilder.d.ts.map +1 -0
  138. package/lib/services/storage/StorageIdBuilder.js +17 -0
  139. package/lib/services/storage/StorageIdBuilder.js.map +1 -0
  140. package/lib/services/storage/index.d.ts +3 -0
  141. package/lib/services/storage/index.d.ts.map +1 -0
  142. package/lib/services/storage/index.js +6 -0
  143. package/lib/services/storage/index.js.map +1 -0
  144. package/lib/styles/widgetStyles.d.ts +1 -1
  145. package/lib/styles/widgetStyles.d.ts.map +1 -1
  146. package/package.json +8 -2
  147. package/src/SoluCXWidget.ts +144 -0
  148. package/src/SoluCXWidgetHost.tsx +44 -0
  149. package/src/SoluCXWidgetView.tsx +97 -0
  150. package/src/__tests__/ClientVersionCollector.test.ts +5 -5
  151. package/src/__tests__/OverlayWidget.rendering.test.tsx +12 -14
  152. package/src/__tests__/SoluCXWidget.rendering.test.tsx +103 -60
  153. package/src/__tests__/SoluCXWidget.test.ts +448 -0
  154. package/src/__tests__/WidgetValidationService.test.ts +408 -0
  155. package/src/__tests__/e2e/widget-lifecycle.test.tsx +14 -23
  156. package/src/__tests__/index.test.tsx +39 -0
  157. package/src/__tests__/integration/webview-communication-simple.test.tsx +8 -6
  158. package/src/__tests__/integration/webview-communication.test.tsx +127 -130
  159. package/src/__tests__/normalizeWidgetOptions.test.ts +80 -0
  160. package/src/__tests__/useWidgetBootstrap.test.ts +634 -0
  161. package/src/__tests__/useWidgetState.test.ts +56 -13
  162. package/src/__tests__/widgetBootstrapService.test.ts +15 -17
  163. package/src/components/CloseButton.tsx +6 -2
  164. package/src/components/InlineWidget.tsx +4 -9
  165. package/src/components/ModalWidget.tsx +15 -45
  166. package/src/components/OverlayWidget.tsx +5 -15
  167. package/src/components/index.ts +4 -0
  168. package/src/constants/Constants.ts +15 -0
  169. package/src/{interfaces → domain}/WidgetCallbacks.ts +2 -2
  170. package/{lib/interfaces/WidgetData.d.ts → src/domain/WidgetData.ts} +3 -2
  171. package/src/domain/WidgetDisplayResult.ts +16 -0
  172. package/src/domain/WidgetOptions.ts +53 -0
  173. package/src/domain/WidgetResponse.ts +5 -0
  174. package/src/domain/WidgetSamplerLog.ts +11 -0
  175. package/src/{interfaces → domain}/index.ts +1 -2
  176. package/src/hooks/index.ts +2 -2
  177. package/src/{services/ClientVersionCollector.ts → hooks/useClientVersionCollector.ts} +6 -0
  178. package/src/hooks/useHeightAnimation.ts +6 -3
  179. package/src/hooks/useWidget.ts +46 -0
  180. package/src/hooks/useWidgetBootstrap.ts +117 -0
  181. package/src/hooks/useWidgetServices.ts +44 -0
  182. package/src/hooks/useWidgetUI.ts +38 -0
  183. package/src/index.ts +16 -11
  184. package/src/services/UserIdentificationService.ts +14 -0
  185. package/src/services/{widgetBootstrapService.ts → WidgetBootstrapService.ts} +43 -19
  186. package/src/services/WidgetEventService.ts +15 -0
  187. package/src/services/WidgetStateManager.ts +115 -0
  188. package/src/services/WidgetValidationService.ts +149 -0
  189. package/src/services/events/EventHandlerFactory.ts +70 -0
  190. package/src/services/events/EventHandlers.ts +67 -0
  191. package/src/services/events/index.ts +2 -0
  192. package/src/services/height/HeightStrategies.ts +15 -0
  193. package/src/services/storage/AsyncStorageService.ts +74 -0
  194. package/src/services/storage/IStorageService.ts +32 -0
  195. package/src/services/storage/StorageIdBuilder.ts +15 -0
  196. package/src/services/storage/index.ts +2 -0
  197. package/src/styles/widgetStyles.ts +1 -1
  198. package/README.intern.md +0 -490
  199. package/lib/constants/webViewConstants.d.ts +0 -12
  200. package/lib/constants/webViewConstants.d.ts.map +0 -1
  201. package/lib/constants/webViewConstants.js +0 -19
  202. package/lib/constants/webViewConstants.js.map +0 -1
  203. package/lib/hooks/useWidgetHeight.d.ts +0 -13
  204. package/lib/hooks/useWidgetHeight.d.ts.map +0 -1
  205. package/lib/hooks/useWidgetHeight.js +0 -21
  206. package/lib/hooks/useWidgetHeight.js.map +0 -1
  207. package/lib/hooks/useWidgetState.d.ts +0 -15
  208. package/lib/hooks/useWidgetState.d.ts.map +0 -1
  209. package/lib/hooks/useWidgetState.js +0 -79
  210. package/lib/hooks/useWidgetState.js.map +0 -1
  211. package/lib/interfaces/WidgetCallbacks.d.ts.map +0 -1
  212. package/lib/interfaces/WidgetCallbacks.js.map +0 -1
  213. package/lib/interfaces/WidgetData.d.ts.map +0 -1
  214. package/lib/interfaces/WidgetOptions.d.ts +0 -9
  215. package/lib/interfaces/WidgetOptions.d.ts.map +0 -1
  216. package/lib/interfaces/WidgetOptions.js.map +0 -1
  217. package/lib/interfaces/WidgetResponse.d.ts +0 -10
  218. package/lib/interfaces/WidgetResponse.d.ts.map +0 -1
  219. package/lib/interfaces/WidgetResponse.js +0 -12
  220. package/lib/interfaces/WidgetResponse.js.map +0 -1
  221. package/lib/interfaces/WidgetSamplerLog.d.ts +0 -7
  222. package/lib/interfaces/WidgetSamplerLog.d.ts.map +0 -1
  223. package/lib/interfaces/WidgetSamplerLog.js.map +0 -1
  224. package/lib/interfaces/index.d.ts.map +0 -1
  225. package/lib/services/ClientVersionCollector.d.ts +0 -2
  226. package/lib/services/ClientVersionCollector.d.ts.map +0 -1
  227. package/lib/services/ClientVersionCollector.js.map +0 -1
  228. package/lib/services/storage.d.ts +0 -8
  229. package/lib/services/storage.d.ts.map +0 -1
  230. package/lib/services/storage.js +0 -23
  231. package/lib/services/storage.js.map +0 -1
  232. package/lib/services/widgetBootstrapService.d.ts +0 -6
  233. package/lib/services/widgetBootstrapService.d.ts.map +0 -1
  234. package/lib/services/widgetBootstrapService.js.map +0 -1
  235. package/lib/services/widgetEventService.d.ts +0 -19
  236. package/lib/services/widgetEventService.d.ts.map +0 -1
  237. package/lib/services/widgetEventService.js +0 -79
  238. package/lib/services/widgetEventService.js.map +0 -1
  239. package/lib/services/widgetValidationService.d.ts +0 -18
  240. package/lib/services/widgetValidationService.d.ts.map +0 -1
  241. package/lib/services/widgetValidationService.js +0 -71
  242. package/lib/services/widgetValidationService.js.map +0 -1
  243. package/src/SoluCXWidget.tsx +0 -178
  244. package/src/constants/webViewConstants.ts +0 -15
  245. package/src/hooks/useWidgetHeight.ts +0 -38
  246. package/src/hooks/useWidgetState.ts +0 -101
  247. package/src/interfaces/WidgetOptions.ts +0 -8
  248. package/src/interfaces/WidgetResponse.ts +0 -15
  249. package/src/interfaces/WidgetSamplerLog.ts +0 -6
  250. package/src/services/storage.ts +0 -21
  251. package/src/services/widgetEventService.ts +0 -110
  252. package/src/services/widgetValidationService.ts +0 -102
  253. /package/lib/{interfaces → domain}/WidgetCallbacks.js +0 -0
  254. /package/lib/{interfaces → domain}/WidgetData.js +0 -0
  255. /package/lib/{interfaces → domain}/WidgetSamplerLog.js +0 -0
  256. /package/lib/{interfaces → domain}/index.js +0 -0
@@ -0,0 +1,17 @@
1
+ import type { WidgetOptions } from "../domain";
2
+ import type { WidgetDisplayResult } from "../domain/WidgetDisplayResult";
3
+ import type { WidgetStateManager } from "./WidgetStateManager";
4
+ export declare class WidgetValidationService {
5
+ private stateManager;
6
+ constructor(stateManager: WidgetStateManager);
7
+ shouldDisplayForTransactionAlreadyAnswered(transactionId?: string): Promise<WidgetDisplayResult>;
8
+ shouldDisplayWidget(widgetOptions: WidgetOptions, transactionId?: string): Promise<WidgetDisplayResult>;
9
+ private resolveUserLog;
10
+ private checkMaxAttempts;
11
+ private checkIntervals;
12
+ private checkSampling;
13
+ private saveLog;
14
+ private getLog;
15
+ private isWithinInterval;
16
+ }
17
+ //# sourceMappingURL=WidgetValidationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetValidationService.d.ts","sourceRoot":"","sources":["../../src/services/WidgetValidationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAe,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,qBAAa,uBAAuB;IAChC,OAAO,CAAC,YAAY,CAAqB;gBAE7B,YAAY,EAAE,kBAAkB;IAItC,0CAA0C,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAehG,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAmB/F,cAAc;IAW5B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,cAAc;IAkDtB,OAAO,CAAC,aAAa;YAUP,OAAO;YAQP,MAAM;IASpB,OAAO,CAAC,gBAAgB;CAM3B"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WidgetValidationService = void 0;
4
+ class WidgetValidationService {
5
+ constructor(stateManager) {
6
+ this.stateManager = stateManager;
7
+ }
8
+ async shouldDisplayForTransactionAlreadyAnswered(transactionId) {
9
+ if (!transactionId)
10
+ return { canDisplay: true };
11
+ try {
12
+ const alreadyAnswered = await this.stateManager.hasAnsweredTransaction(transactionId);
13
+ if (alreadyAnswered) {
14
+ return { canDisplay: false, blockReason: "BLOCKED_BY_TRANSACTION_ALREADY_ANSWERED" };
15
+ }
16
+ }
17
+ catch (error) {
18
+ console.error("Error reading answered transaction log:", error);
19
+ }
20
+ return { canDisplay: true };
21
+ }
22
+ async shouldDisplayWidget(widgetOptions, transactionId) {
23
+ if (widgetOptions.enabled === false) {
24
+ return { canDisplay: false, blockReason: "BLOCKED_BY_DISABLED" };
25
+ }
26
+ const userLog = await this.resolveUserLog(transactionId);
27
+ const maxAttemptsResult = this.checkMaxAttempts(widgetOptions, userLog);
28
+ if (!maxAttemptsResult.canDisplay)
29
+ return maxAttemptsResult;
30
+ const intervalResult = this.checkIntervals(widgetOptions, userLog);
31
+ if (!intervalResult.canDisplay)
32
+ return intervalResult;
33
+ const samplingResult = this.checkSampling(widgetOptions);
34
+ if (!samplingResult.canDisplay)
35
+ return samplingResult;
36
+ return { canDisplay: true };
37
+ }
38
+ async resolveUserLog(transactionId) {
39
+ let userLog = await this.getLog();
40
+ if (transactionId && userLog.lastExperienceId !== transactionId) {
41
+ userLog = { ...userLog, attempts: 0, lastExperienceId: transactionId };
42
+ await this.saveLog(userLog);
43
+ }
44
+ return userLog;
45
+ }
46
+ checkMaxAttempts(widgetOptions, userLog) {
47
+ if (widgetOptions.maxAttemptsAfterDismiss !== undefined && widgetOptions.maxAttemptsAfterDismiss > 0) {
48
+ if (userLog.attempts >= widgetOptions.maxAttemptsAfterDismiss) {
49
+ return { canDisplay: false, blockReason: "BLOCKED_BY_MAX_ATTEMPTS" };
50
+ }
51
+ }
52
+ return { canDisplay: true };
53
+ }
54
+ checkIntervals(widgetOptions, userLog) {
55
+ const now = Date.now();
56
+ const dayInMilliseconds = 86400000;
57
+ const checks = [
58
+ {
59
+ timestamp: userLog.lastDisplayAttempt,
60
+ waitDays: widgetOptions.waitDaysAfterWidgetDisplayAttempt,
61
+ blockReason: "BLOCKED_BY_WIDGET_DISPLAY_ATTEMPT_INTERVAL",
62
+ },
63
+ {
64
+ timestamp: userLog.lastFirstAccess,
65
+ waitDays: widgetOptions.waitDaysAfterWidgetFirstAccess,
66
+ blockReason: "BLOCKED_BY_WIDGET_FIRST_ACCESS_INTERVAL",
67
+ },
68
+ {
69
+ timestamp: userLog.lastDisplay,
70
+ waitDays: widgetOptions.waitDaysAfterWidgetDisplay,
71
+ blockReason: "BLOCKED_BY_WIDGET_DISPLAY_INTERVAL",
72
+ },
73
+ {
74
+ timestamp: userLog.lastDismiss,
75
+ waitDays: widgetOptions.waitDaysAfterWidgetDismiss,
76
+ blockReason: "BLOCKED_BY_WIDGET_DISMISS_INTERVAL",
77
+ },
78
+ {
79
+ timestamp: userLog.lastSubmit,
80
+ waitDays: widgetOptions.waitDaysAfterWidgetSubmit,
81
+ blockReason: "BLOCKED_BY_WIDGET_SUBMIT_INTERVAL",
82
+ },
83
+ {
84
+ timestamp: userLog.lastPartialSubmit,
85
+ waitDays: widgetOptions.waitDaysAfterWidgetPartialSubmit,
86
+ blockReason: "BLOCKED_BY_WIDGET_PARTIAL_SUBMIT_INTERVAL",
87
+ },
88
+ ];
89
+ for (const check of checks) {
90
+ if (this.isWithinInterval(check.timestamp, check.waitDays, now, dayInMilliseconds)) {
91
+ return { canDisplay: false, blockReason: check.blockReason };
92
+ }
93
+ }
94
+ return { canDisplay: true };
95
+ }
96
+ checkSampling(widgetOptions) {
97
+ if (widgetOptions.samplingPercentage !== undefined && widgetOptions.samplingPercentage >= 0 && widgetOptions.samplingPercentage < 100) {
98
+ const random = Math.random() * 100;
99
+ if (random >= widgetOptions.samplingPercentage) {
100
+ return { canDisplay: false, blockReason: "BLOCKED_BY_SAMPLING" };
101
+ }
102
+ }
103
+ return { canDisplay: true };
104
+ }
105
+ async saveLog(userLog) {
106
+ try {
107
+ await this.stateManager.saveLogs(userLog);
108
+ }
109
+ catch (error) {
110
+ console.error("Error writing widget log:", error);
111
+ }
112
+ }
113
+ async getLog() {
114
+ try {
115
+ return await this.stateManager.getLogs();
116
+ }
117
+ catch (error) {
118
+ console.error("Error reading widget log:", error);
119
+ return { attempts: 0, answeredTransactionIds: [] };
120
+ }
121
+ }
122
+ isWithinInterval(timestamp, waitDays, now, dayInMilliseconds) {
123
+ if (!timestamp || timestamp <= 0)
124
+ return false;
125
+ if (!waitDays || waitDays <= 0)
126
+ return false;
127
+ const elapsed = now - timestamp;
128
+ return elapsed < waitDays * dayInMilliseconds;
129
+ }
130
+ }
131
+ exports.WidgetValidationService = WidgetValidationService;
132
+ //# sourceMappingURL=WidgetValidationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetValidationService.js","sourceRoot":"","sources":["../../src/services/WidgetValidationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { WidgetCallbacks, WidgetResponse } from "../../domain";
2
+ import type { WidgetStateManager } from "../WidgetStateManager";
3
+ export declare class EventHandlerFactory {
4
+ private hide;
5
+ private resize;
6
+ private userId;
7
+ private transactionId?;
8
+ private callbacks?;
9
+ private stateManager?;
10
+ private readonly surveyToFormMapping;
11
+ constructor(hide: () => void, resize: (height: string) => void, userId: string, transactionId?: string | undefined, callbacks?: WidgetCallbacks | undefined, stateManager?: WidgetStateManager | undefined);
12
+ private parse;
13
+ private mapSurveyKeyToFormKey;
14
+ private normalizeKey;
15
+ processMessage(message: string, isForm: boolean): Promise<WidgetResponse>;
16
+ private handle;
17
+ }
18
+ //# sourceMappingURL=EventHandlerFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventHandlerFactory.d.ts","sourceRoot":"","sources":["../../../src/services/events/EventHandlerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,qBAAa,mBAAmB;IAWxB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,YAAY,CAAC;IAfzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAOlC;gBAGU,IAAI,EAAE,MAAM,IAAI,EAChB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAChC,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,YAAA,EACtB,SAAS,CAAC,EAAE,eAAe,YAAA,EAC3B,YAAY,CAAC,EAAE,kBAAkB,YAAA;IAG7C,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,YAAY;IAOd,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;YAMjE,MAAM;CAoBvB"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventHandlerFactory = void 0;
4
+ const EventHandlers_1 = require("./EventHandlers");
5
+ class EventHandlerFactory {
6
+ constructor(hide, resize, userId, transactionId, callbacks, stateManager) {
7
+ this.hide = hide;
8
+ this.resize = resize;
9
+ this.userId = userId;
10
+ this.transactionId = transactionId;
11
+ this.callbacks = callbacks;
12
+ this.stateManager = stateManager;
13
+ this.surveyToFormMapping = {
14
+ closeSoluCXWidget: "FORM_CLOSE",
15
+ dismissSoluCXWidget: "FORM_CLOSE",
16
+ completeSoluCXWidget: "FORM_COMPLETED",
17
+ partialSoluCXWidget: "FORM_PARTIALCOMPLETED",
18
+ resizeSoluCXWidget: "FORM_RESIZE",
19
+ errorSoluCXWidget: "FORM_ERROR",
20
+ };
21
+ }
22
+ parse(message) {
23
+ const separatorIndex = message.indexOf("-");
24
+ if (separatorIndex === -1)
25
+ return { key: message, value: "" };
26
+ return {
27
+ key: message.slice(0, separatorIndex),
28
+ value: message.slice(separatorIndex + 1),
29
+ };
30
+ }
31
+ mapSurveyKeyToFormKey(surveyKey) {
32
+ return this.surveyToFormMapping[surveyKey];
33
+ }
34
+ normalizeKey(key, isForm) {
35
+ if (isForm) {
36
+ return key;
37
+ }
38
+ return this.mapSurveyKeyToFormKey(key);
39
+ }
40
+ async processMessage(message, isForm) {
41
+ const parsed = this.parse(message);
42
+ const eventKey = this.normalizeKey(parsed.key, isForm);
43
+ return this.handle(eventKey, parsed.value);
44
+ }
45
+ async handle(eventKey, value) {
46
+ switch (eventKey) {
47
+ case "FORM_CLOSE":
48
+ return (0, EventHandlers_1.handleFormClose)(this.hide, this.stateManager, this.callbacks);
49
+ case "FORM_ERROR":
50
+ return (0, EventHandlers_1.handleFormError)(value, this.hide, this.callbacks);
51
+ case "FORM_PAGECHANGED":
52
+ return (0, EventHandlers_1.handleFormPageChanged)(value, this.callbacks);
53
+ case "QUESTION_ANSWERED":
54
+ return (0, EventHandlers_1.handleQuestionAnswered)(this.stateManager, this.callbacks);
55
+ case "FORM_COMPLETED":
56
+ return (0, EventHandlers_1.handleFormCompleted)(this.userId, this.transactionId, this.stateManager, this.callbacks);
57
+ case "FORM_PARTIALCOMPLETED":
58
+ return (0, EventHandlers_1.handleFormPartialCompleted)(this.userId, this.transactionId, this.stateManager, this.callbacks);
59
+ case "FORM_RESIZE":
60
+ return (0, EventHandlers_1.handleFormResize)(value, this.resize, this.callbacks);
61
+ default:
62
+ return { status: "error", message: "Unknown event" };
63
+ }
64
+ }
65
+ }
66
+ exports.EventHandlerFactory = EventHandlerFactory;
67
+ //# sourceMappingURL=EventHandlerFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventHandlerFactory.js","sourceRoot":"","sources":["../../../src/services/events/EventHandlerFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { WidgetCallbacks, WidgetResponse } from "../../domain";
2
+ import type { WidgetStateManager } from "../WidgetStateManager";
3
+ export declare const handleFormClose: (hide: () => void, stateManager?: WidgetStateManager, callbacks?: WidgetCallbacks) => Promise<WidgetResponse>;
4
+ export declare const handleFormError: (value: string, hide: () => void, callbacks?: WidgetCallbacks) => WidgetResponse;
5
+ export declare const handleFormPageChanged: (value: string, callbacks?: WidgetCallbacks) => WidgetResponse;
6
+ export declare const handleQuestionAnswered: (stateManager?: WidgetStateManager, callbacks?: WidgetCallbacks) => Promise<WidgetResponse>;
7
+ export declare const handleFormCompleted: (userId: string, transactionId?: string, stateManager?: WidgetStateManager, callbacks?: WidgetCallbacks) => Promise<WidgetResponse>;
8
+ export declare const handleFormPartialCompleted: (userId: string, transactionId?: string, stateManager?: WidgetStateManager, callbacks?: WidgetCallbacks) => Promise<WidgetResponse>;
9
+ export declare const handleFormResize: (value: string, resize: (height: string) => void, callbacks?: WidgetCallbacks) => WidgetResponse;
10
+ //# sourceMappingURL=EventHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventHandlers.d.ts","sourceRoot":"","sources":["../../../src/services/events/EventHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAKhE,eAAO,MAAM,eAAe,GAAU,MAAM,MAAM,IAAI,EAAE,eAAe,kBAAkB,EAAE,YAAY,eAAe,KAAG,OAAO,CAAC,cAAc,CAS9I,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,YAAY,eAAe,KAAG,cAI9F,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,EAAE,YAAY,eAAe,KAAG,cAGlF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,eAAe,kBAAkB,EAAE,YAAY,eAAe,KAAG,OAAO,CAAC,cAAc,CAQnI,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,QAAQ,MAAM,EAAE,gBAAgB,MAAM,EAAE,eAAe,kBAAkB,EAAE,YAAY,eAAe,KAAG,OAAO,CAAC,cAAc,CAUxK,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,QAAQ,MAAM,EAAE,gBAAgB,MAAM,EAAE,eAAe,kBAAkB,EAAE,YAAY,eAAe,KAAG,OAAO,CAAC,cAAc,CAU/K,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAAE,YAAY,eAAe,KAAG,cAI/G,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleFormResize = exports.handleFormPartialCompleted = exports.handleFormCompleted = exports.handleQuestionAnswered = exports.handleFormPageChanged = exports.handleFormError = exports.handleFormClose = void 0;
4
+ const success = () => ({ status: "success" });
5
+ const error = (message) => ({ status: "error", message });
6
+ const handleFormClose = async (hide, stateManager, callbacks) => {
7
+ hide();
8
+ try {
9
+ await stateManager?.updateTimestamp('lastDismiss');
10
+ }
11
+ catch (err) {
12
+ console.error('[EventHandlers] Error saving lastDismiss:', err);
13
+ }
14
+ callbacks?.onClosed?.();
15
+ return success();
16
+ };
17
+ exports.handleFormClose = handleFormClose;
18
+ const handleFormError = (value, hide, callbacks) => {
19
+ hide();
20
+ callbacks?.onError?.(value);
21
+ return error(value);
22
+ };
23
+ exports.handleFormError = handleFormError;
24
+ const handleFormPageChanged = (value, callbacks) => {
25
+ callbacks?.onPageChanged?.(value);
26
+ return success();
27
+ };
28
+ exports.handleFormPageChanged = handleFormPageChanged;
29
+ const handleQuestionAnswered = async (stateManager, callbacks) => {
30
+ try {
31
+ await stateManager?.resetAttempts();
32
+ }
33
+ catch (err) {
34
+ console.error('[EventHandlers] Error resetting attempts after question answered:', err);
35
+ }
36
+ callbacks?.onQuestionAnswered?.();
37
+ return success();
38
+ };
39
+ exports.handleQuestionAnswered = handleQuestionAnswered;
40
+ const handleFormCompleted = async (userId, transactionId, stateManager, callbacks) => {
41
+ try {
42
+ await stateManager?.resetAttempts();
43
+ await stateManager?.markTransactionAnswered(transactionId);
44
+ await stateManager?.updateTimestamp('lastSubmit');
45
+ }
46
+ catch (err) {
47
+ console.error('[EventHandlers] Error saving lastSubmit:', err);
48
+ }
49
+ callbacks?.onCompleted?.(userId);
50
+ return success();
51
+ };
52
+ exports.handleFormCompleted = handleFormCompleted;
53
+ const handleFormPartialCompleted = async (userId, transactionId, stateManager, callbacks) => {
54
+ try {
55
+ await stateManager?.resetAttempts();
56
+ await stateManager?.markTransactionAnswered(transactionId);
57
+ await stateManager?.updateTimestamp('lastPartialSubmit');
58
+ }
59
+ catch (err) {
60
+ console.error('[EventHandlers] Error saving lastPartialSubmit:', err);
61
+ }
62
+ callbacks?.onPartialCompleted?.(userId);
63
+ return success();
64
+ };
65
+ exports.handleFormPartialCompleted = handleFormPartialCompleted;
66
+ const handleFormResize = (value, resize, callbacks) => {
67
+ resize(value);
68
+ callbacks?.onResize?.(value);
69
+ return success();
70
+ };
71
+ exports.handleFormResize = handleFormResize;
72
+ //# sourceMappingURL=EventHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventHandlers.js","sourceRoot":"","sources":["../../../src/services/events/EventHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { EventHandlerFactory } from './EventHandlerFactory';
2
+ export * from './EventHandlers';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.EventHandlerFactory = void 0;
18
+ var EventHandlerFactory_1 = require("./EventHandlerFactory");
19
+ Object.defineProperty(exports, "EventHandlerFactory", { enumerable: true, get: function () { return EventHandlerFactory_1.EventHandlerFactory; } });
20
+ __exportStar(require("./EventHandlers"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,kDAAgC"}
@@ -0,0 +1,3 @@
1
+ import type { WidgetOptions } from "../../domain";
2
+ export declare function calculateHeight(options?: WidgetOptions, receivedHeight?: number): number;
3
+ //# sourceMappingURL=HeightStrategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeightStrategies.d.ts","sourceRoot":"","sources":["../../../src/services/height/HeightStrategies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAUxF"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateHeight = calculateHeight;
4
+ const DEFAULT_HEIGHT = 300;
5
+ function calculateHeight(options, receivedHeight) {
6
+ if (receivedHeight && receivedHeight > 0) {
7
+ return receivedHeight;
8
+ }
9
+ if (options?.height) {
10
+ return Number(options.height);
11
+ }
12
+ return DEFAULT_HEIGHT;
13
+ }
14
+ //# sourceMappingURL=HeightStrategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeightStrategies.js","sourceRoot":"","sources":["../../../src/services/height/HeightStrategies.ts"],"names":[],"mappings":";;AAIA,0CAUC;AAZD,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,SAAgB,eAAe,CAAC,OAAuB,EAAE,cAAuB;IAC5E,IAAI,cAAc,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { IStorageService } from "./IStorageService";
2
+ import type { WidgetSamplerLog } from "../../domain";
3
+ export declare class AsyncStorageService implements IStorageService<WidgetSamplerLog> {
4
+ private key;
5
+ constructor(storageId: string);
6
+ read(key?: string): Promise<WidgetSamplerLog>;
7
+ write(key: string, data: WidgetSamplerLog): Promise<void>;
8
+ write(data: WidgetSamplerLog): Promise<void>;
9
+ delete(key?: string): Promise<void>;
10
+ exists(key?: string): Promise<boolean>;
11
+ private getDefaultValue;
12
+ }
13
+ //# sourceMappingURL=AsyncStorageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncStorageService.d.ts","sourceRoot":"","sources":["../../../src/services/storage/AsyncStorageService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,qBAAa,mBAAoB,YAAW,eAAe,CAAC,gBAAgB,CAAC;IACzE,OAAO,CAAC,GAAG,CAAS;gBAER,SAAS,EAAE,MAAM;IAIvB,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAW7C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IACzD,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB5C,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5C,OAAO,CAAC,eAAe;CAM1B"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AsyncStorageService = void 0;
7
+ const async_storage_1 = __importDefault(require("@react-native-async-storage/async-storage"));
8
+ const Constants_1 = require("../../constants/Constants");
9
+ class AsyncStorageService {
10
+ constructor(storageId) {
11
+ this.key = `${Constants_1.STORAGE_KEY}_${storageId}`;
12
+ }
13
+ async read(key) {
14
+ const storageKey = key || this.key;
15
+ try {
16
+ const json = await async_storage_1.default.getItem(storageKey);
17
+ return json ? JSON.parse(json) : this.getDefaultValue();
18
+ }
19
+ catch (error) {
20
+ console.error("Error reading from AsyncStorage:", error);
21
+ return this.getDefaultValue();
22
+ }
23
+ }
24
+ async write(keyOrData, data) {
25
+ try {
26
+ let storageKey;
27
+ let storageData;
28
+ if (typeof keyOrData === "string") {
29
+ storageKey = keyOrData;
30
+ storageData = data;
31
+ }
32
+ else {
33
+ storageKey = this.key;
34
+ storageData = keyOrData;
35
+ }
36
+ const json = JSON.stringify(storageData);
37
+ await async_storage_1.default.setItem(storageKey, json);
38
+ }
39
+ catch (error) {
40
+ console.error("Error writing to AsyncStorage:", error);
41
+ throw error;
42
+ }
43
+ }
44
+ async delete(key) {
45
+ const storageKey = key || this.key;
46
+ try {
47
+ await async_storage_1.default.removeItem(storageKey);
48
+ }
49
+ catch (error) {
50
+ console.error("Error deleting from AsyncStorage:", error);
51
+ throw error;
52
+ }
53
+ }
54
+ async exists(key) {
55
+ const storageKey = key || this.key;
56
+ try {
57
+ const value = await async_storage_1.default.getItem(storageKey);
58
+ return value !== null;
59
+ }
60
+ catch (error) {
61
+ console.error("Error checking existence in AsyncStorage:", error);
62
+ return false;
63
+ }
64
+ }
65
+ getDefaultValue() {
66
+ return {
67
+ attempts: 0,
68
+ answeredTransactionIds: [],
69
+ };
70
+ }
71
+ }
72
+ exports.AsyncStorageService = AsyncStorageService;
73
+ //# sourceMappingURL=AsyncStorageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncStorageService.js","sourceRoot":"","sources":["../../../src/services/storage/AsyncStorageService.ts"],"names":[],"mappings":";;;;;;AAAA,8FAAqE;AAGrE,yDAAwD;AAExD,MAAa,mBAAmB;IAG5B,YAAY,SAAiB;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,uBAAW,IAAI,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAY;QACnB,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,uBAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAClF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAID,KAAK,CAAC,KAAK,CAAC,SAAoC,EAAE,IAAuB;QACrE,IAAI,CAAC;YACD,IAAI,UAAkB,CAAC;YACvB,IAAI,WAA6B,CAAC;YAElC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChC,UAAU,GAAG,SAAS,CAAC;gBACvB,WAAW,GAAG,IAAK,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;gBACtB,WAAW,GAAG,SAAS,CAAC;YAC5B,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,uBAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAY;QACrB,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC;YACD,MAAM,uBAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAY;QACrB,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,uBAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrD,OAAO,KAAK,KAAK,IAAI,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEO,eAAe;QACnB,OAAO;YACH,QAAQ,EAAE,CAAC;YACX,sBAAsB,EAAE,EAAE;SAC7B,CAAC;IACN,CAAC;CACJ;AApED,kDAoEC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Interface for storage service abstraction
3
+ * Allows different storage implementations (AsyncStorage, Memory, Secure, etc.)
4
+ * Following Dependency Inversion Principle
5
+ */
6
+ export interface IStorageService<T = any> {
7
+ /**
8
+ * Read data from storage
9
+ * @param key Storage key
10
+ * @returns Promise with stored data or default value
11
+ */
12
+ read(key: string): Promise<T>;
13
+ /**
14
+ * Write data to storage
15
+ * @param key Storage key
16
+ * @param data Data to store
17
+ */
18
+ write(key: string, data: T): Promise<void>;
19
+ /**
20
+ * Delete data from storage
21
+ * @param key Storage key
22
+ */
23
+ delete(key: string): Promise<void>;
24
+ /**
25
+ * Check if key exists in storage
26
+ * @param key Storage key
27
+ */
28
+ exists(key: string): Promise<boolean>;
29
+ }
30
+ //# sourceMappingURL=IStorageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStorageService.d.ts","sourceRoot":"","sources":["../../../src/services/storage/IStorageService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,GAAG;IACpC;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9B;;;;OAIG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IStorageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStorageService.js","sourceRoot":"","sources":["../../../src/services/storage/IStorageService.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { WidgetData } from "../../domain";
2
+ /**
3
+ * Build a unique storage ID from instanceKey, journey, and userId.
4
+ * Uses the format: instanceKey:journey:userId (filters out falsy values)
5
+ *
6
+ * @param instanceKey - The widget instance key
7
+ * @param data - The widget data containing journey/form_id and user identification
8
+ * @returns A colon-separated storage ID string
9
+ */
10
+ export declare function buildStorageId(instanceKey: string, data: WidgetData): string;
11
+ //# sourceMappingURL=StorageIdBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageIdBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/storage/StorageIdBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAG5E"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildStorageId = buildStorageId;
4
+ const UserIdentificationService_1 = require("../UserIdentificationService");
5
+ /**
6
+ * Build a unique storage ID from instanceKey, journey, and userId.
7
+ * Uses the format: instanceKey:journey:userId (filters out falsy values)
8
+ *
9
+ * @param instanceKey - The widget instance key
10
+ * @param data - The widget data containing journey/form_id and user identification
11
+ * @returns A colon-separated storage ID string
12
+ */
13
+ function buildStorageId(instanceKey, data) {
14
+ const userId = (0, UserIdentificationService_1.getUserId)(data);
15
+ return [instanceKey, data?.journey, userId].filter(Boolean).join(':');
16
+ }
17
+ //# sourceMappingURL=StorageIdBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageIdBuilder.js","sourceRoot":"","sources":["../../../src/services/storage/StorageIdBuilder.ts"],"names":[],"mappings":";;AAWA,wCAGC;AAbD,4EAAyD;AAEzD;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,WAAmB,EAAE,IAAgB;IAChE,MAAM,MAAM,GAAG,IAAA,qCAAS,EAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AsyncStorageService } from './AsyncStorageService';
2
+ export type { IStorageService } from './IStorageService';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AsyncStorageService = void 0;
4
+ var AsyncStorageService_1 = require("./AsyncStorageService");
5
+ Object.defineProperty(exports, "AsyncStorageService", { enumerable: true, get: function () { return AsyncStorageService_1.AsyncStorageService; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA"}
@@ -1,4 +1,4 @@
1
- import type { WidgetType } from '../interfaces';
1
+ import type { WidgetType } from '../domain';
2
2
  export declare const styles: {
3
3
  wrapper: {
4
4
  flex: number;