@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.
- package/README.md +526 -182
- package/lib/SoluCXWidget.d.ts +50 -7
- package/lib/SoluCXWidget.d.ts.map +1 -1
- package/lib/SoluCXWidget.js +105 -100
- package/lib/SoluCXWidget.js.map +1 -1
- package/lib/SoluCXWidgetHost.d.ts +3 -0
- package/lib/SoluCXWidgetHost.d.ts.map +1 -0
- package/lib/SoluCXWidgetHost.js +34 -0
- package/lib/SoluCXWidgetHost.js.map +1 -0
- package/lib/SoluCXWidgetView.d.ts +12 -0
- package/lib/SoluCXWidgetView.d.ts.map +1 -0
- package/lib/SoluCXWidgetView.js +61 -0
- package/lib/SoluCXWidgetView.js.map +1 -0
- package/lib/components/CloseButton.d.ts +1 -1
- package/lib/components/CloseButton.d.ts.map +1 -1
- package/lib/components/CloseButton.js +4 -1
- package/lib/components/CloseButton.js.map +1 -1
- package/lib/components/InlineWidget.d.ts.map +1 -1
- package/lib/components/InlineWidget.js +2 -7
- package/lib/components/InlineWidget.js.map +1 -1
- package/lib/components/ModalWidget.d.ts +1 -1
- package/lib/components/ModalWidget.d.ts.map +1 -1
- package/lib/components/ModalWidget.js +3 -16
- package/lib/components/ModalWidget.js.map +1 -1
- package/lib/components/OverlayWidget.d.ts.map +1 -1
- package/lib/components/OverlayWidget.js +5 -15
- package/lib/components/OverlayWidget.js.map +1 -1
- package/lib/components/index.d.ts +5 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +12 -0
- package/lib/components/index.js.map +1 -0
- package/lib/constants/Constants.d.ts +11 -0
- package/lib/constants/Constants.d.ts.map +1 -1
- package/lib/constants/Constants.js +16 -1
- package/lib/constants/Constants.js.map +1 -1
- package/lib/{interfaces → domain}/WidgetCallbacks.d.ts +2 -2
- package/lib/domain/WidgetCallbacks.d.ts.map +1 -0
- package/lib/domain/WidgetCallbacks.js.map +1 -0
- package/{src/interfaces/WidgetData.ts → lib/domain/WidgetData.d.ts} +5 -2
- package/lib/domain/WidgetData.d.ts.map +1 -0
- package/lib/{interfaces → domain}/WidgetData.js.map +1 -1
- package/lib/domain/WidgetDisplayResult.d.ts +6 -0
- package/lib/domain/WidgetDisplayResult.d.ts.map +1 -0
- package/lib/domain/WidgetDisplayResult.js +3 -0
- package/lib/domain/WidgetDisplayResult.js.map +1 -0
- package/lib/domain/WidgetOptions.d.ts +27 -0
- package/lib/domain/WidgetOptions.d.ts.map +1 -0
- package/lib/domain/WidgetOptions.js +30 -0
- package/lib/domain/WidgetOptions.js.map +1 -0
- package/lib/domain/WidgetResponse.d.ts +5 -0
- package/lib/domain/WidgetResponse.d.ts.map +1 -0
- package/lib/{interfaces/WidgetOptions.js → domain/WidgetResponse.js} +1 -1
- package/lib/domain/WidgetResponse.js.map +1 -0
- package/lib/domain/WidgetSamplerLog.d.ts +12 -0
- package/lib/domain/WidgetSamplerLog.d.ts.map +1 -0
- package/lib/domain/WidgetSamplerLog.js.map +1 -0
- package/lib/{interfaces → domain}/index.d.ts +1 -2
- package/lib/domain/index.d.ts.map +1 -0
- package/lib/{interfaces → domain}/index.js.map +1 -1
- package/lib/hooks/index.d.ts +2 -2
- package/lib/hooks/index.d.ts.map +1 -1
- package/lib/hooks/index.js +5 -5
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useClientVersionCollector.d.ts +3 -0
- package/lib/hooks/useClientVersionCollector.d.ts.map +1 -0
- package/lib/{services/ClientVersionCollector.js → hooks/useClientVersionCollector.js} +7 -2
- package/lib/hooks/useClientVersionCollector.js.map +1 -0
- package/lib/hooks/useHeightAnimation.d.ts +0 -1
- package/lib/hooks/useHeightAnimation.d.ts.map +1 -1
- package/lib/hooks/useHeightAnimation.js +4 -2
- package/lib/hooks/useHeightAnimation.js.map +1 -1
- package/lib/hooks/useWidget.d.ts +13 -0
- package/lib/hooks/useWidget.d.ts.map +1 -0
- package/lib/hooks/useWidget.js +44 -0
- package/lib/hooks/useWidget.js.map +1 -0
- package/lib/hooks/useWidgetBootstrap.d.ts +21 -0
- package/lib/hooks/useWidgetBootstrap.d.ts.map +1 -0
- package/lib/hooks/useWidgetBootstrap.js +87 -0
- package/lib/hooks/useWidgetBootstrap.js.map +1 -0
- package/lib/hooks/useWidgetServices.d.ts +19 -0
- package/lib/hooks/useWidgetServices.d.ts.map +1 -0
- package/lib/hooks/useWidgetServices.js +34 -0
- package/lib/hooks/useWidgetServices.js.map +1 -0
- package/lib/hooks/useWidgetUI.d.ts +9 -0
- package/lib/hooks/useWidgetUI.d.ts.map +1 -0
- package/lib/hooks/useWidgetUI.js +33 -0
- package/lib/hooks/useWidgetUI.js.map +1 -0
- package/lib/index.d.ts +10 -11
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +13 -38
- package/lib/index.js.map +1 -1
- package/lib/services/UserIdentificationService.d.ts +3 -0
- package/lib/services/UserIdentificationService.d.ts.map +1 -0
- package/lib/services/UserIdentificationService.js +17 -0
- package/lib/services/UserIdentificationService.js.map +1 -0
- package/lib/services/WidgetBootstrapService.d.ts +12 -0
- package/lib/services/WidgetBootstrapService.d.ts.map +1 -0
- package/lib/services/{widgetBootstrapService.js → WidgetBootstrapService.js} +36 -15
- package/lib/services/WidgetBootstrapService.js.map +1 -0
- package/lib/services/WidgetEventService.d.ts +8 -0
- package/lib/services/WidgetEventService.d.ts.map +1 -0
- package/lib/services/WidgetEventService.js +14 -0
- package/lib/services/WidgetEventService.js.map +1 -0
- package/lib/services/WidgetStateManager.d.ts +20 -0
- package/lib/services/WidgetStateManager.d.ts.map +1 -0
- package/lib/services/WidgetStateManager.js +93 -0
- package/lib/services/WidgetStateManager.js.map +1 -0
- package/lib/services/WidgetValidationService.d.ts +17 -0
- package/lib/services/WidgetValidationService.d.ts.map +1 -0
- package/lib/services/WidgetValidationService.js +132 -0
- package/lib/services/WidgetValidationService.js.map +1 -0
- package/lib/services/events/EventHandlerFactory.d.ts +18 -0
- package/lib/services/events/EventHandlerFactory.d.ts.map +1 -0
- package/lib/services/events/EventHandlerFactory.js +67 -0
- package/lib/services/events/EventHandlerFactory.js.map +1 -0
- package/lib/services/events/EventHandlers.d.ts +10 -0
- package/lib/services/events/EventHandlers.d.ts.map +1 -0
- package/lib/services/events/EventHandlers.js +72 -0
- package/lib/services/events/EventHandlers.js.map +1 -0
- package/lib/services/events/index.d.ts +3 -0
- package/lib/services/events/index.d.ts.map +1 -0
- package/lib/services/events/index.js +21 -0
- package/lib/services/events/index.js.map +1 -0
- package/lib/services/height/HeightStrategies.d.ts +3 -0
- package/lib/services/height/HeightStrategies.d.ts.map +1 -0
- package/lib/services/height/HeightStrategies.js +14 -0
- package/lib/services/height/HeightStrategies.js.map +1 -0
- package/lib/services/storage/AsyncStorageService.d.ts +13 -0
- package/lib/services/storage/AsyncStorageService.d.ts.map +1 -0
- package/lib/services/storage/AsyncStorageService.js +73 -0
- package/lib/services/storage/AsyncStorageService.js.map +1 -0
- package/lib/services/storage/IStorageService.d.ts +30 -0
- package/lib/services/storage/IStorageService.d.ts.map +1 -0
- package/lib/services/storage/IStorageService.js +3 -0
- package/lib/services/storage/IStorageService.js.map +1 -0
- package/lib/services/storage/StorageIdBuilder.d.ts +11 -0
- package/lib/services/storage/StorageIdBuilder.d.ts.map +1 -0
- package/lib/services/storage/StorageIdBuilder.js +17 -0
- package/lib/services/storage/StorageIdBuilder.js.map +1 -0
- package/lib/services/storage/index.d.ts +3 -0
- package/lib/services/storage/index.d.ts.map +1 -0
- package/lib/services/storage/index.js +6 -0
- package/lib/services/storage/index.js.map +1 -0
- package/lib/styles/widgetStyles.d.ts +1 -1
- package/lib/styles/widgetStyles.d.ts.map +1 -1
- package/package.json +8 -2
- package/src/SoluCXWidget.ts +144 -0
- package/src/SoluCXWidgetHost.tsx +44 -0
- package/src/SoluCXWidgetView.tsx +97 -0
- package/src/__tests__/ClientVersionCollector.test.ts +5 -5
- package/src/__tests__/OverlayWidget.rendering.test.tsx +12 -14
- package/src/__tests__/SoluCXWidget.rendering.test.tsx +103 -60
- package/src/__tests__/SoluCXWidget.test.ts +448 -0
- package/src/__tests__/WidgetValidationService.test.ts +408 -0
- package/src/__tests__/e2e/widget-lifecycle.test.tsx +14 -23
- package/src/__tests__/index.test.tsx +39 -0
- package/src/__tests__/integration/webview-communication-simple.test.tsx +8 -6
- package/src/__tests__/integration/webview-communication.test.tsx +127 -130
- package/src/__tests__/normalizeWidgetOptions.test.ts +80 -0
- package/src/__tests__/useWidgetBootstrap.test.ts +634 -0
- package/src/__tests__/useWidgetState.test.ts +56 -13
- package/src/__tests__/widgetBootstrapService.test.ts +15 -17
- package/src/components/CloseButton.tsx +6 -2
- package/src/components/InlineWidget.tsx +4 -9
- package/src/components/ModalWidget.tsx +15 -45
- package/src/components/OverlayWidget.tsx +5 -15
- package/src/components/index.ts +4 -0
- package/src/constants/Constants.ts +15 -0
- package/src/{interfaces → domain}/WidgetCallbacks.ts +2 -2
- package/{lib/interfaces/WidgetData.d.ts → src/domain/WidgetData.ts} +3 -2
- package/src/domain/WidgetDisplayResult.ts +16 -0
- package/src/domain/WidgetOptions.ts +53 -0
- package/src/domain/WidgetResponse.ts +5 -0
- package/src/domain/WidgetSamplerLog.ts +11 -0
- package/src/{interfaces → domain}/index.ts +1 -2
- package/src/hooks/index.ts +2 -2
- package/src/{services/ClientVersionCollector.ts → hooks/useClientVersionCollector.ts} +6 -0
- package/src/hooks/useHeightAnimation.ts +6 -3
- package/src/hooks/useWidget.ts +46 -0
- package/src/hooks/useWidgetBootstrap.ts +117 -0
- package/src/hooks/useWidgetServices.ts +44 -0
- package/src/hooks/useWidgetUI.ts +38 -0
- package/src/index.ts +16 -11
- package/src/services/UserIdentificationService.ts +14 -0
- package/src/services/{widgetBootstrapService.ts → WidgetBootstrapService.ts} +43 -19
- package/src/services/WidgetEventService.ts +15 -0
- package/src/services/WidgetStateManager.ts +115 -0
- package/src/services/WidgetValidationService.ts +149 -0
- package/src/services/events/EventHandlerFactory.ts +70 -0
- package/src/services/events/EventHandlers.ts +67 -0
- package/src/services/events/index.ts +2 -0
- package/src/services/height/HeightStrategies.ts +15 -0
- package/src/services/storage/AsyncStorageService.ts +74 -0
- package/src/services/storage/IStorageService.ts +32 -0
- package/src/services/storage/StorageIdBuilder.ts +15 -0
- package/src/services/storage/index.ts +2 -0
- package/src/styles/widgetStyles.ts +1 -1
- package/README.intern.md +0 -490
- package/lib/constants/webViewConstants.d.ts +0 -12
- package/lib/constants/webViewConstants.d.ts.map +0 -1
- package/lib/constants/webViewConstants.js +0 -19
- package/lib/constants/webViewConstants.js.map +0 -1
- package/lib/hooks/useWidgetHeight.d.ts +0 -13
- package/lib/hooks/useWidgetHeight.d.ts.map +0 -1
- package/lib/hooks/useWidgetHeight.js +0 -21
- package/lib/hooks/useWidgetHeight.js.map +0 -1
- package/lib/hooks/useWidgetState.d.ts +0 -15
- package/lib/hooks/useWidgetState.d.ts.map +0 -1
- package/lib/hooks/useWidgetState.js +0 -79
- package/lib/hooks/useWidgetState.js.map +0 -1
- package/lib/interfaces/WidgetCallbacks.d.ts.map +0 -1
- package/lib/interfaces/WidgetCallbacks.js.map +0 -1
- package/lib/interfaces/WidgetData.d.ts.map +0 -1
- package/lib/interfaces/WidgetOptions.d.ts +0 -9
- package/lib/interfaces/WidgetOptions.d.ts.map +0 -1
- package/lib/interfaces/WidgetOptions.js.map +0 -1
- package/lib/interfaces/WidgetResponse.d.ts +0 -10
- package/lib/interfaces/WidgetResponse.d.ts.map +0 -1
- package/lib/interfaces/WidgetResponse.js +0 -12
- package/lib/interfaces/WidgetResponse.js.map +0 -1
- package/lib/interfaces/WidgetSamplerLog.d.ts +0 -7
- package/lib/interfaces/WidgetSamplerLog.d.ts.map +0 -1
- package/lib/interfaces/WidgetSamplerLog.js.map +0 -1
- package/lib/interfaces/index.d.ts.map +0 -1
- package/lib/services/ClientVersionCollector.d.ts +0 -2
- package/lib/services/ClientVersionCollector.d.ts.map +0 -1
- package/lib/services/ClientVersionCollector.js.map +0 -1
- package/lib/services/storage.d.ts +0 -8
- package/lib/services/storage.d.ts.map +0 -1
- package/lib/services/storage.js +0 -23
- package/lib/services/storage.js.map +0 -1
- package/lib/services/widgetBootstrapService.d.ts +0 -6
- package/lib/services/widgetBootstrapService.d.ts.map +0 -1
- package/lib/services/widgetBootstrapService.js.map +0 -1
- package/lib/services/widgetEventService.d.ts +0 -19
- package/lib/services/widgetEventService.d.ts.map +0 -1
- package/lib/services/widgetEventService.js +0 -79
- package/lib/services/widgetEventService.js.map +0 -1
- package/lib/services/widgetValidationService.d.ts +0 -18
- package/lib/services/widgetValidationService.d.ts.map +0 -1
- package/lib/services/widgetValidationService.js +0 -71
- package/lib/services/widgetValidationService.js.map +0 -1
- package/src/SoluCXWidget.tsx +0 -178
- package/src/constants/webViewConstants.ts +0 -15
- package/src/hooks/useWidgetHeight.ts +0 -38
- package/src/hooks/useWidgetState.ts +0 -101
- package/src/interfaces/WidgetOptions.ts +0 -8
- package/src/interfaces/WidgetResponse.ts +0 -15
- package/src/interfaces/WidgetSamplerLog.ts +0 -6
- package/src/services/storage.ts +0 -21
- package/src/services/widgetEventService.ts +0 -110
- package/src/services/widgetValidationService.ts +0 -102
- /package/lib/{interfaces → domain}/WidgetCallbacks.js +0 -0
- /package/lib/{interfaces → domain}/WidgetData.js +0 -0
- /package/lib/{interfaces → domain}/WidgetSamplerLog.js +0 -0
- /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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|