@loyalytics/swan-react-native-sdk 2.0.1

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 (204) hide show
  1. package/LICENSE +55 -0
  2. package/README.md +67 -0
  3. package/docs/IOS_NOTIFICATION_EXTENSION_SETUP.md +335 -0
  4. package/ios/README.md +64 -0
  5. package/ios/SwanNotificationServiceExtension/Info.plist +31 -0
  6. package/ios/SwanNotificationServiceExtension/NotificationService.swift +337 -0
  7. package/ios/SwanNotificationServiceExtension/SwanNotificationServiceExtension.entitlements +10 -0
  8. package/lib/commonjs/components/FooterView.js +125 -0
  9. package/lib/commonjs/components/FooterView.js.map +1 -0
  10. package/lib/commonjs/components/FullScreenView.js +172 -0
  11. package/lib/commonjs/components/FullScreenView.js.map +1 -0
  12. package/lib/commonjs/components/HeaderView.js +205 -0
  13. package/lib/commonjs/components/HeaderView.js.map +1 -0
  14. package/lib/commonjs/components/PopUpView.js +186 -0
  15. package/lib/commonjs/components/PopUpView.js.map +1 -0
  16. package/lib/commonjs/config/BatchConfig.js +53 -0
  17. package/lib/commonjs/config/BatchConfig.js.map +1 -0
  18. package/lib/commonjs/constants/ApiUrls.js +56 -0
  19. package/lib/commonjs/constants/ApiUrls.js.map +1 -0
  20. package/lib/commonjs/core/EventQueueManager.js +345 -0
  21. package/lib/commonjs/core/EventQueueManager.js.map +1 -0
  22. package/lib/commonjs/core/FlushManager.js +245 -0
  23. package/lib/commonjs/core/FlushManager.js.map +1 -0
  24. package/lib/commonjs/core/NetworkMonitor.js +97 -0
  25. package/lib/commonjs/core/NetworkMonitor.js.map +1 -0
  26. package/lib/commonjs/index.js +3506 -0
  27. package/lib/commonjs/index.js.map +1 -0
  28. package/lib/commonjs/providers/FirebasePushProvider.js +130 -0
  29. package/lib/commonjs/providers/FirebasePushProvider.js.map +1 -0
  30. package/lib/commonjs/providers/NullPushProvider.js +59 -0
  31. package/lib/commonjs/providers/NullPushProvider.js.map +1 -0
  32. package/lib/commonjs/providers/PushNotificationProvider.js +30 -0
  33. package/lib/commonjs/providers/PushNotificationProvider.js.map +1 -0
  34. package/lib/commonjs/services/DeviceRegistrationService.js +248 -0
  35. package/lib/commonjs/services/DeviceRegistrationService.js.map +1 -0
  36. package/lib/commonjs/services/PushTokenService.js +284 -0
  37. package/lib/commonjs/services/PushTokenService.js.map +1 -0
  38. package/lib/commonjs/state/AuthStateMachine.js +161 -0
  39. package/lib/commonjs/state/AuthStateMachine.js.map +1 -0
  40. package/lib/commonjs/state/DeviceStateMachine.js +104 -0
  41. package/lib/commonjs/state/DeviceStateMachine.js.map +1 -0
  42. package/lib/commonjs/state/PushStateMachine.js +129 -0
  43. package/lib/commonjs/state/PushStateMachine.js.map +1 -0
  44. package/lib/commonjs/types/EventQueue.js +50 -0
  45. package/lib/commonjs/types/EventQueue.js.map +1 -0
  46. package/lib/commonjs/types/SDK.js +2 -0
  47. package/lib/commonjs/types/SDK.js.map +1 -0
  48. package/lib/commonjs/utils/FirebaseNotificationManager.js +492 -0
  49. package/lib/commonjs/utils/FirebaseNotificationManager.js.map +1 -0
  50. package/lib/commonjs/utils/Logger.js +56 -0
  51. package/lib/commonjs/utils/Logger.js.map +1 -0
  52. package/lib/commonjs/utils/SharedCredentialsManager.js +146 -0
  53. package/lib/commonjs/utils/SharedCredentialsManager.js.map +1 -0
  54. package/lib/commonjs/version.js +12 -0
  55. package/lib/commonjs/version.js.map +1 -0
  56. package/lib/module/components/FooterView.js +121 -0
  57. package/lib/module/components/FooterView.js.map +1 -0
  58. package/lib/module/components/FullScreenView.js +167 -0
  59. package/lib/module/components/FullScreenView.js.map +1 -0
  60. package/lib/module/components/HeaderView.js +199 -0
  61. package/lib/module/components/HeaderView.js.map +1 -0
  62. package/lib/module/components/PopUpView.js +181 -0
  63. package/lib/module/components/PopUpView.js.map +1 -0
  64. package/lib/module/config/BatchConfig.js +49 -0
  65. package/lib/module/config/BatchConfig.js.map +1 -0
  66. package/lib/module/constants/ApiUrls.js +52 -0
  67. package/lib/module/constants/ApiUrls.js.map +1 -0
  68. package/lib/module/core/EventQueueManager.js +340 -0
  69. package/lib/module/core/EventQueueManager.js.map +1 -0
  70. package/lib/module/core/FlushManager.js +240 -0
  71. package/lib/module/core/FlushManager.js.map +1 -0
  72. package/lib/module/core/NetworkMonitor.js +92 -0
  73. package/lib/module/core/NetworkMonitor.js.map +1 -0
  74. package/lib/module/index.js +3494 -0
  75. package/lib/module/index.js.map +1 -0
  76. package/lib/module/providers/FirebasePushProvider.js +124 -0
  77. package/lib/module/providers/FirebasePushProvider.js.map +1 -0
  78. package/lib/module/providers/NullPushProvider.js +53 -0
  79. package/lib/module/providers/NullPushProvider.js.map +1 -0
  80. package/lib/module/providers/PushNotificationProvider.js +26 -0
  81. package/lib/module/providers/PushNotificationProvider.js.map +1 -0
  82. package/lib/module/services/DeviceRegistrationService.js +243 -0
  83. package/lib/module/services/DeviceRegistrationService.js.map +1 -0
  84. package/lib/module/services/PushTokenService.js +278 -0
  85. package/lib/module/services/PushTokenService.js.map +1 -0
  86. package/lib/module/state/AuthStateMachine.js +155 -0
  87. package/lib/module/state/AuthStateMachine.js.map +1 -0
  88. package/lib/module/state/DeviceStateMachine.js +98 -0
  89. package/lib/module/state/DeviceStateMachine.js.map +1 -0
  90. package/lib/module/state/PushStateMachine.js +123 -0
  91. package/lib/module/state/PushStateMachine.js.map +1 -0
  92. package/lib/module/types/EventQueue.js +46 -0
  93. package/lib/module/types/EventQueue.js.map +1 -0
  94. package/lib/module/types/SDK.js +2 -0
  95. package/lib/module/types/SDK.js.map +1 -0
  96. package/lib/module/utils/FirebaseNotificationManager.js +486 -0
  97. package/lib/module/utils/FirebaseNotificationManager.js.map +1 -0
  98. package/lib/module/utils/Logger.js +52 -0
  99. package/lib/module/utils/Logger.js.map +1 -0
  100. package/lib/module/utils/SharedCredentialsManager.js +140 -0
  101. package/lib/module/utils/SharedCredentialsManager.js.map +1 -0
  102. package/lib/module/version.js +8 -0
  103. package/lib/module/version.js.map +1 -0
  104. package/lib/typescript/commonjs/package.json +1 -0
  105. package/lib/typescript/commonjs/src/components/FooterView.d.ts +3 -0
  106. package/lib/typescript/commonjs/src/components/FooterView.d.ts.map +1 -0
  107. package/lib/typescript/commonjs/src/components/FullScreenView.d.ts +3 -0
  108. package/lib/typescript/commonjs/src/components/FullScreenView.d.ts.map +1 -0
  109. package/lib/typescript/commonjs/src/components/HeaderView.d.ts +3 -0
  110. package/lib/typescript/commonjs/src/components/HeaderView.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/src/components/PopUpView.d.ts +3 -0
  112. package/lib/typescript/commonjs/src/components/PopUpView.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/src/config/BatchConfig.d.ts +7 -0
  114. package/lib/typescript/commonjs/src/config/BatchConfig.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/src/constants/ApiUrls.d.ts +56 -0
  116. package/lib/typescript/commonjs/src/constants/ApiUrls.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/src/core/EventQueueManager.d.ts +63 -0
  118. package/lib/typescript/commonjs/src/core/EventQueueManager.d.ts.map +1 -0
  119. package/lib/typescript/commonjs/src/core/FlushManager.d.ts +63 -0
  120. package/lib/typescript/commonjs/src/core/FlushManager.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/src/core/NetworkMonitor.d.ts +38 -0
  122. package/lib/typescript/commonjs/src/core/NetworkMonitor.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/src/index.d.ts +663 -0
  124. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/src/providers/FirebasePushProvider.d.ts +28 -0
  126. package/lib/typescript/commonjs/src/providers/FirebasePushProvider.d.ts.map +1 -0
  127. package/lib/typescript/commonjs/src/providers/NullPushProvider.d.ts +25 -0
  128. package/lib/typescript/commonjs/src/providers/NullPushProvider.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/src/providers/PushNotificationProvider.d.ts +105 -0
  130. package/lib/typescript/commonjs/src/providers/PushNotificationProvider.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/src/services/DeviceRegistrationService.d.ts +60 -0
  132. package/lib/typescript/commonjs/src/services/DeviceRegistrationService.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/src/services/PushTokenService.d.ts +82 -0
  134. package/lib/typescript/commonjs/src/services/PushTokenService.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/src/state/AuthStateMachine.d.ts +61 -0
  136. package/lib/typescript/commonjs/src/state/AuthStateMachine.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/src/state/DeviceStateMachine.d.ts +51 -0
  138. package/lib/typescript/commonjs/src/state/DeviceStateMachine.d.ts.map +1 -0
  139. package/lib/typescript/commonjs/src/state/PushStateMachine.d.ts +61 -0
  140. package/lib/typescript/commonjs/src/state/PushStateMachine.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/src/types/EventQueue.d.ts +85 -0
  142. package/lib/typescript/commonjs/src/types/EventQueue.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/src/types/SDK.d.ts +54 -0
  144. package/lib/typescript/commonjs/src/types/SDK.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/src/utils/FirebaseNotificationManager.d.ts +169 -0
  146. package/lib/typescript/commonjs/src/utils/FirebaseNotificationManager.d.ts.map +1 -0
  147. package/lib/typescript/commonjs/src/utils/Logger.d.ts +32 -0
  148. package/lib/typescript/commonjs/src/utils/Logger.d.ts.map +1 -0
  149. package/lib/typescript/commonjs/src/utils/SharedCredentialsManager.d.ts +54 -0
  150. package/lib/typescript/commonjs/src/utils/SharedCredentialsManager.d.ts.map +1 -0
  151. package/lib/typescript/commonjs/src/version.d.ts +2 -0
  152. package/lib/typescript/commonjs/src/version.d.ts.map +1 -0
  153. package/lib/typescript/module/package.json +1 -0
  154. package/lib/typescript/module/src/components/FooterView.d.ts +3 -0
  155. package/lib/typescript/module/src/components/FooterView.d.ts.map +1 -0
  156. package/lib/typescript/module/src/components/FullScreenView.d.ts +3 -0
  157. package/lib/typescript/module/src/components/FullScreenView.d.ts.map +1 -0
  158. package/lib/typescript/module/src/components/HeaderView.d.ts +3 -0
  159. package/lib/typescript/module/src/components/HeaderView.d.ts.map +1 -0
  160. package/lib/typescript/module/src/components/PopUpView.d.ts +3 -0
  161. package/lib/typescript/module/src/components/PopUpView.d.ts.map +1 -0
  162. package/lib/typescript/module/src/config/BatchConfig.d.ts +7 -0
  163. package/lib/typescript/module/src/config/BatchConfig.d.ts.map +1 -0
  164. package/lib/typescript/module/src/constants/ApiUrls.d.ts +56 -0
  165. package/lib/typescript/module/src/constants/ApiUrls.d.ts.map +1 -0
  166. package/lib/typescript/module/src/core/EventQueueManager.d.ts +63 -0
  167. package/lib/typescript/module/src/core/EventQueueManager.d.ts.map +1 -0
  168. package/lib/typescript/module/src/core/FlushManager.d.ts +63 -0
  169. package/lib/typescript/module/src/core/FlushManager.d.ts.map +1 -0
  170. package/lib/typescript/module/src/core/NetworkMonitor.d.ts +38 -0
  171. package/lib/typescript/module/src/core/NetworkMonitor.d.ts.map +1 -0
  172. package/lib/typescript/module/src/index.d.ts +663 -0
  173. package/lib/typescript/module/src/index.d.ts.map +1 -0
  174. package/lib/typescript/module/src/providers/FirebasePushProvider.d.ts +28 -0
  175. package/lib/typescript/module/src/providers/FirebasePushProvider.d.ts.map +1 -0
  176. package/lib/typescript/module/src/providers/NullPushProvider.d.ts +25 -0
  177. package/lib/typescript/module/src/providers/NullPushProvider.d.ts.map +1 -0
  178. package/lib/typescript/module/src/providers/PushNotificationProvider.d.ts +105 -0
  179. package/lib/typescript/module/src/providers/PushNotificationProvider.d.ts.map +1 -0
  180. package/lib/typescript/module/src/services/DeviceRegistrationService.d.ts +60 -0
  181. package/lib/typescript/module/src/services/DeviceRegistrationService.d.ts.map +1 -0
  182. package/lib/typescript/module/src/services/PushTokenService.d.ts +82 -0
  183. package/lib/typescript/module/src/services/PushTokenService.d.ts.map +1 -0
  184. package/lib/typescript/module/src/state/AuthStateMachine.d.ts +61 -0
  185. package/lib/typescript/module/src/state/AuthStateMachine.d.ts.map +1 -0
  186. package/lib/typescript/module/src/state/DeviceStateMachine.d.ts +51 -0
  187. package/lib/typescript/module/src/state/DeviceStateMachine.d.ts.map +1 -0
  188. package/lib/typescript/module/src/state/PushStateMachine.d.ts +61 -0
  189. package/lib/typescript/module/src/state/PushStateMachine.d.ts.map +1 -0
  190. package/lib/typescript/module/src/types/EventQueue.d.ts +85 -0
  191. package/lib/typescript/module/src/types/EventQueue.d.ts.map +1 -0
  192. package/lib/typescript/module/src/types/SDK.d.ts +54 -0
  193. package/lib/typescript/module/src/types/SDK.d.ts.map +1 -0
  194. package/lib/typescript/module/src/utils/FirebaseNotificationManager.d.ts +169 -0
  195. package/lib/typescript/module/src/utils/FirebaseNotificationManager.d.ts.map +1 -0
  196. package/lib/typescript/module/src/utils/Logger.d.ts +32 -0
  197. package/lib/typescript/module/src/utils/Logger.d.ts.map +1 -0
  198. package/lib/typescript/module/src/utils/SharedCredentialsManager.d.ts +54 -0
  199. package/lib/typescript/module/src/utils/SharedCredentialsManager.d.ts.map +1 -0
  200. package/lib/typescript/module/src/version.d.ts +2 -0
  201. package/lib/typescript/module/src/version.d.ts.map +1 -0
  202. package/package.json +230 -0
  203. package/scripts/generate-version.js +25 -0
  204. package/scripts/setup-ios-extension.js +275 -0
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AuthStateMachine = exports.AuthState = void 0;
7
+ var _Logger = _interopRequireDefault(require("../utils/Logger.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ let AuthState = exports.AuthState = /*#__PURE__*/function (AuthState) {
10
+ AuthState["LOGGED_OUT"] = "logged_out";
11
+ AuthState["LOGGING_IN"] = "logging_in";
12
+ AuthState["LOGGED_IN"] = "logged_in";
13
+ AuthState["LOGGING_OUT"] = "logging_out";
14
+ AuthState["ERROR"] = "error";
15
+ return AuthState;
16
+ }({});
17
+ /**
18
+ * State machine for authentication flow (login/logout).
19
+ * Replaces isLoggingIn and isLoggingOut boolean flags.
20
+ *
21
+ * States:
22
+ * - LOGGED_OUT: No user logged in (anonymous profile)
23
+ * - LOGGING_IN: Login in progress
24
+ * - LOGGED_IN: User logged in (currentCDID set)
25
+ * - LOGGING_OUT: Logout in progress
26
+ * - ERROR: Login/logout failed
27
+ */
28
+ class AuthStateMachine {
29
+ state = AuthState.LOGGED_OUT;
30
+ listeners = [];
31
+ loginPromise = null;
32
+ logoutPromise = null;
33
+ getState() {
34
+ return this.state;
35
+ }
36
+
37
+ /**
38
+ * Subscribe to state changes
39
+ */
40
+ on(listener) {
41
+ this.listeners.push(listener);
42
+ // Return unsubscribe function
43
+ return () => {
44
+ this.listeners = this.listeners.filter(l => l !== listener);
45
+ };
46
+ }
47
+
48
+ /**
49
+ * Execute login with duplicate call protection
50
+ */
51
+ async login(loginFn) {
52
+ // Already logged in
53
+ if (this.state === AuthState.LOGGED_IN) {
54
+ _Logger.default.warn('[AuthStateMachine] Already logged in');
55
+ return;
56
+ }
57
+
58
+ // Login in progress - wait for existing promise
59
+ if (this.state === AuthState.LOGGING_IN && this.loginPromise) {
60
+ _Logger.default.warn('[AuthStateMachine] Login already in progress, ignoring duplicate call');
61
+ return this.loginPromise;
62
+ }
63
+ this.transition(AuthState.LOGGING_IN);
64
+ this.loginPromise = loginFn().then(result => {
65
+ this.transition(AuthState.LOGGED_IN);
66
+ return result;
67
+ }).catch(error => {
68
+ this.transition(AuthState.ERROR);
69
+ this.loginPromise = null;
70
+ throw error;
71
+ }).finally(() => {
72
+ this.loginPromise = null;
73
+ });
74
+ return this.loginPromise;
75
+ }
76
+
77
+ /**
78
+ * Execute logout with duplicate call protection
79
+ */
80
+ async logout(logoutFn) {
81
+ // Already logged out
82
+ if (this.state === AuthState.LOGGED_OUT) {
83
+ _Logger.default.warn('[AuthStateMachine] Already logged out');
84
+ return;
85
+ }
86
+
87
+ // Logout in progress - wait for existing promise
88
+ if (this.state === AuthState.LOGGING_OUT && this.logoutPromise) {
89
+ _Logger.default.warn('[AuthStateMachine] Logout already in progress, ignoring duplicate call');
90
+ return this.logoutPromise;
91
+ }
92
+ this.transition(AuthState.LOGGING_OUT);
93
+ this.logoutPromise = logoutFn().then(result => {
94
+ this.transition(AuthState.LOGGED_OUT);
95
+ return result;
96
+ }).catch(error => {
97
+ this.transition(AuthState.ERROR);
98
+ this.logoutPromise = null;
99
+ throw error;
100
+ }).finally(() => {
101
+ this.logoutPromise = null;
102
+ });
103
+ return this.logoutPromise;
104
+ }
105
+
106
+ /**
107
+ * Check if user is logged in
108
+ */
109
+ isLoggedIn() {
110
+ return this.state === AuthState.LOGGED_IN;
111
+ }
112
+
113
+ /**
114
+ * Check if login/logout operation is in progress
115
+ */
116
+ isOperationInProgress() {
117
+ return this.state === AuthState.LOGGING_IN || this.state === AuthState.LOGGING_OUT;
118
+ }
119
+
120
+ /**
121
+ * Reset to logged out state
122
+ */
123
+ reset() {
124
+ this.state = AuthState.LOGGED_OUT;
125
+ this.loginPromise = null;
126
+ this.logoutPromise = null;
127
+ _Logger.default.log('[AuthStateMachine] State reset to LOGGED_OUT');
128
+ }
129
+
130
+ /**
131
+ * Restore state from stored credentials (used during SDK initialization)
132
+ * @param isLoggedIn Whether user has currentCDID in stored credentials
133
+ */
134
+ restoreState(isLoggedIn) {
135
+ this.state = isLoggedIn ? AuthState.LOGGED_IN : AuthState.LOGGED_OUT;
136
+ _Logger.default.log(`[AuthStateMachine] State restored: ${this.state} (from credentials)`);
137
+ }
138
+ transition(newState) {
139
+ const oldState = this.state;
140
+ if (oldState === newState) {
141
+ return; // No transition needed
142
+ }
143
+ this.state = newState;
144
+ _Logger.default.log(`[AuthStateMachine] State transition: ${oldState} → ${newState}`);
145
+
146
+ // Notify listeners
147
+ const change = {
148
+ from: oldState,
149
+ to: newState
150
+ };
151
+ this.listeners.forEach(listener => {
152
+ try {
153
+ listener(change);
154
+ } catch (error) {
155
+ _Logger.default.error('[AuthStateMachine] Error in state change listener:', error);
156
+ }
157
+ });
158
+ }
159
+ }
160
+ exports.AuthStateMachine = AuthStateMachine;
161
+ //# sourceMappingURL=AuthStateMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Logger","_interopRequireDefault","require","e","__esModule","default","AuthState","exports","AuthStateMachine","state","LOGGED_OUT","listeners","loginPromise","logoutPromise","getState","on","listener","push","filter","l","login","loginFn","LOGGED_IN","Logger","warn","LOGGING_IN","transition","then","result","catch","error","ERROR","finally","logout","logoutFn","LOGGING_OUT","isLoggedIn","isOperationInProgress","reset","log","restoreState","newState","oldState","change","from","to","forEach"],"sourceRoot":"../../../src","sources":["state/AuthStateMachine.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DeviceStateMachine = exports.DeviceState = void 0;
7
+ var _Logger = _interopRequireDefault(require("../utils/Logger.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ let DeviceState = exports.DeviceState = /*#__PURE__*/function (DeviceState) {
10
+ DeviceState["UNINITIALIZED"] = "uninitialized";
11
+ DeviceState["REGISTERING"] = "registering";
12
+ DeviceState["REGISTERED"] = "registered";
13
+ DeviceState["FAILED"] = "failed";
14
+ return DeviceState;
15
+ }({});
16
+ /**
17
+ * State machine for device registration flow.
18
+ * Eliminates race conditions from boolean flags.
19
+ *
20
+ * States: UNINITIALIZED → REGISTERING → REGISTERED → FAILED
21
+ */
22
+ class DeviceStateMachine {
23
+ state = DeviceState.UNINITIALIZED;
24
+ registrationPromise = null;
25
+ listeners = [];
26
+ getState() {
27
+ return this.state;
28
+ }
29
+
30
+ /**
31
+ * Subscribe to state changes
32
+ */
33
+ on(listener) {
34
+ this.listeners.push(listener);
35
+ // Return unsubscribe function
36
+ return () => {
37
+ this.listeners = this.listeners.filter(l => l !== listener);
38
+ };
39
+ }
40
+
41
+ /**
42
+ * Register device with race condition protection.
43
+ * If already registered, returns cached credentials.
44
+ * If registration in progress, waits for existing promise.
45
+ * Otherwise, starts new registration.
46
+ */
47
+ async register(registrationFn) {
48
+ // Already registered - return cached result
49
+ if (this.state === DeviceState.REGISTERED && this.registrationPromise) {
50
+ _Logger.default.log('[DeviceStateMachine] Device already registered, returning cached credentials');
51
+ return this.registrationPromise;
52
+ }
53
+
54
+ // Registration in progress - wait for it
55
+ if (this.state === DeviceState.REGISTERING && this.registrationPromise) {
56
+ _Logger.default.log('[DeviceStateMachine] Device registration in progress, waiting...');
57
+ return this.registrationPromise;
58
+ }
59
+
60
+ // Start new registration
61
+ this.transition(DeviceState.REGISTERING);
62
+ this.registrationPromise = registrationFn().then(credentials => {
63
+ this.transition(DeviceState.REGISTERED);
64
+ return credentials;
65
+ }).catch(error => {
66
+ this.transition(DeviceState.FAILED);
67
+ this.registrationPromise = null; // Allow retry on failure
68
+ throw error;
69
+ });
70
+ return this.registrationPromise;
71
+ }
72
+
73
+ /**
74
+ * Reset state machine (useful for testing or logout scenarios)
75
+ */
76
+ reset() {
77
+ this.state = DeviceState.UNINITIALIZED;
78
+ this.registrationPromise = null;
79
+ _Logger.default.log('[DeviceStateMachine] State reset to UNINITIALIZED');
80
+ }
81
+ transition(newState) {
82
+ const oldState = this.state;
83
+ if (oldState === newState) {
84
+ return; // No transition needed
85
+ }
86
+ this.state = newState;
87
+ _Logger.default.log(`[DeviceStateMachine] State transition: ${oldState} → ${newState}`);
88
+
89
+ // Notify listeners
90
+ const change = {
91
+ from: oldState,
92
+ to: newState
93
+ };
94
+ this.listeners.forEach(listener => {
95
+ try {
96
+ listener(change);
97
+ } catch (error) {
98
+ _Logger.default.error('[DeviceStateMachine] Error in state change listener:', error);
99
+ }
100
+ });
101
+ }
102
+ }
103
+ exports.DeviceStateMachine = DeviceStateMachine;
104
+ //# sourceMappingURL=DeviceStateMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Logger","_interopRequireDefault","require","e","__esModule","default","DeviceState","exports","DeviceStateMachine","state","UNINITIALIZED","registrationPromise","listeners","getState","on","listener","push","filter","l","register","registrationFn","REGISTERED","Logger","log","REGISTERING","transition","then","credentials","catch","error","FAILED","reset","newState","oldState","change","from","to","forEach"],"sourceRoot":"../../../src","sources":["state/DeviceStateMachine.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PushStateMachine = exports.PushState = void 0;
7
+ var _Logger = _interopRequireDefault(require("../utils/Logger.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ let PushState = exports.PushState = /*#__PURE__*/function (PushState) {
10
+ PushState["DISABLED"] = "disabled";
11
+ PushState["INITIALIZING"] = "initializing";
12
+ PushState["READY"] = "ready";
13
+ PushState["PERMISSION_DENIED"] = "permission_denied";
14
+ PushState["TOKEN_PENDING"] = "token_pending";
15
+ PushState["ACTIVE"] = "active";
16
+ PushState["ERROR"] = "error";
17
+ return PushState;
18
+ }({});
19
+ /**
20
+ * State machine for push notification lifecycle.
21
+ * Manages the complex flow of permission → token → active states.
22
+ *
23
+ * States:
24
+ * - DISABLED: Push notifications not enabled in config
25
+ * - INITIALIZING: Loading Firebase provider
26
+ * - READY: Provider initialized, ready to request permission
27
+ * - PERMISSION_DENIED: User denied permission
28
+ * - TOKEN_PENDING: Permission granted, waiting for FCM token
29
+ * - ACTIVE: Token received and registered with backend
30
+ * - ERROR: Push initialization failed
31
+ */
32
+ class PushStateMachine {
33
+ state = PushState.DISABLED;
34
+ listeners = [];
35
+ getState() {
36
+ return this.state;
37
+ }
38
+
39
+ /**
40
+ * Subscribe to state changes
41
+ */
42
+ on(listener) {
43
+ this.listeners.push(listener);
44
+ // Return unsubscribe function
45
+ return () => {
46
+ this.listeners = this.listeners.filter(l => l !== listener);
47
+ };
48
+ }
49
+
50
+ /**
51
+ * Transition to a new state
52
+ */
53
+ transition(newState) {
54
+ const oldState = this.state;
55
+ if (oldState === newState) {
56
+ return; // No transition needed
57
+ }
58
+
59
+ // Validate state transitions (optional - can be removed for flexibility)
60
+ if (!this.isValidTransition(oldState, newState)) {
61
+ _Logger.default.warn(`[PushStateMachine] Unexpected state transition: ${oldState} → ${newState}`);
62
+ }
63
+ this.state = newState;
64
+ _Logger.default.log(`[PushStateMachine] State transition: ${oldState} → ${newState}`);
65
+
66
+ // Notify listeners
67
+ const change = {
68
+ from: oldState,
69
+ to: newState
70
+ };
71
+ this.listeners.forEach(listener => {
72
+ try {
73
+ listener(change);
74
+ } catch (error) {
75
+ _Logger.default.error('[PushStateMachine] Error in state change listener:', error);
76
+ }
77
+ });
78
+ }
79
+
80
+ /**
81
+ * Reset to disabled state
82
+ */
83
+ reset() {
84
+ this.state = PushState.DISABLED;
85
+ _Logger.default.log('[PushStateMachine] State reset to DISABLED');
86
+ }
87
+
88
+ /**
89
+ * Check if push is active (token received and synced)
90
+ */
91
+ isActive() {
92
+ return this.state === PushState.ACTIVE;
93
+ }
94
+
95
+ /**
96
+ * Check if push is in error state
97
+ */
98
+ isError() {
99
+ return this.state === PushState.ERROR;
100
+ }
101
+
102
+ /**
103
+ * Check if push is disabled
104
+ */
105
+ isDisabled() {
106
+ return this.state === PushState.DISABLED;
107
+ }
108
+
109
+ /**
110
+ * Validate state transitions (optional - for debugging)
111
+ */
112
+ isValidTransition(from, to) {
113
+ const validTransitions = {
114
+ [PushState.DISABLED]: [PushState.INITIALIZING],
115
+ [PushState.INITIALIZING]: [PushState.READY, PushState.ERROR],
116
+ [PushState.READY]: [PushState.PERMISSION_DENIED, PushState.TOKEN_PENDING, PushState.ERROR],
117
+ [PushState.PERMISSION_DENIED]: [PushState.READY],
118
+ // Can retry permission
119
+ [PushState.TOKEN_PENDING]: [PushState.ACTIVE, PushState.ERROR],
120
+ [PushState.ACTIVE]: [PushState.TOKEN_PENDING],
121
+ // Token refresh
122
+ [PushState.ERROR]: [PushState.INITIALIZING] // Can retry initialization
123
+ };
124
+ const allowedTransitions = validTransitions[from];
125
+ return allowedTransitions ? allowedTransitions.includes(to) : false;
126
+ }
127
+ }
128
+ exports.PushStateMachine = PushStateMachine;
129
+ //# sourceMappingURL=PushStateMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Logger","_interopRequireDefault","require","e","__esModule","default","PushState","exports","PushStateMachine","state","DISABLED","listeners","getState","on","listener","push","filter","l","transition","newState","oldState","isValidTransition","Logger","warn","log","change","from","to","forEach","error","reset","isActive","ACTIVE","isError","ERROR","isDisabled","validTransitions","INITIALIZING","READY","PERMISSION_DENIED","TOKEN_PENDING","allowedTransitions","includes"],"sourceRoot":"../../../src","sources":["state/PushStateMachine.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.QUEUE_CALL_TYPES = void 0;
7
+ /**
8
+ * Type definitions for Event Batching System
9
+ * Supports offline queuing, batching, and fault-tolerant event delivery
10
+ */
11
+
12
+ /**
13
+ * Event stored in the queue
14
+ */
15
+
16
+ /**
17
+ * Configuration for batch processing
18
+ */
19
+
20
+ /**
21
+ * Batch payload sent to backend
22
+ */
23
+
24
+ /**
25
+ * Individual event within a batch
26
+ */
27
+
28
+ /**
29
+ * Response from batch endpoint
30
+ */
31
+
32
+ /**
33
+ * Result for individual event in batch
34
+ */
35
+
36
+ /**
37
+ * Queue call type constants
38
+ * Used to distinguish different network call types in the queue
39
+ */
40
+ const QUEUE_CALL_TYPES = exports.QUEUE_CALL_TYPES = {
41
+ // Standard events use their actual event names (no prefix)
42
+ // e.g., 'productViewed', 'userLogin', etc.
43
+
44
+ // Special call types for non-event network operations
45
+ PUSH_SUBSCRIBE: 'PUSH_SUBSCRIBE',
46
+ PUSH_UNSUBSCRIBE: 'PUSH_UNSUBSCRIBE',
47
+ PROFILE_ENRICH: 'PROFILE_ENRICH',
48
+ NOTIFICATION_ACK: 'SWAN_NOTIFICATION_ACK' // Already exists
49
+ };
50
+ //# sourceMappingURL=EventQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["QUEUE_CALL_TYPES","exports","PUSH_SUBSCRIBE","PUSH_UNSUBSCRIBE","PROFILE_ENRICH","NOTIFICATION_ACK"],"sourceRoot":"../../../src","sources":["types/EventQueue.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAaA;AACA;AACA;;AAWA;AACA;AACA;;AAYA;AACA;AACA;;AAWA;AACA;AACA;;AAQA;AACA;AACA;;AASA;AACA;AACA;AACA;AACO,MAAMA,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EAC9B;EACA;;EAEA;EACAE,cAAc,EAAE,gBAAgB;EAChCC,gBAAgB,EAAE,kBAAkB;EACpCC,cAAc,EAAE,gBAAgB;EAChCC,gBAAgB,EAAE,uBAAuB,CAAE;AAC7C,CAAU","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=SDK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/SDK.ts"],"mappings":"","ignoreList":[]}