@formo/analytics-react-native 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/README.md +302 -0
  2. package/lib/commonjs/FormoAnalytics.js +526 -0
  3. package/lib/commonjs/FormoAnalytics.js.map +1 -0
  4. package/lib/commonjs/FormoAnalyticsProvider.js +265 -0
  5. package/lib/commonjs/FormoAnalyticsProvider.js.map +1 -0
  6. package/lib/commonjs/constants/config.js +69 -0
  7. package/lib/commonjs/constants/config.js.map +1 -0
  8. package/lib/commonjs/constants/events.js +30 -0
  9. package/lib/commonjs/constants/events.js.map +1 -0
  10. package/lib/commonjs/constants/index.js +39 -0
  11. package/lib/commonjs/constants/index.js.map +1 -0
  12. package/lib/commonjs/constants/storage.js +23 -0
  13. package/lib/commonjs/constants/storage.js.map +1 -0
  14. package/lib/commonjs/index.js +65 -0
  15. package/lib/commonjs/index.js.map +1 -0
  16. package/lib/commonjs/lib/consent/index.js +56 -0
  17. package/lib/commonjs/lib/consent/index.js.map +1 -0
  18. package/lib/commonjs/lib/event/EventFactory.js +493 -0
  19. package/lib/commonjs/lib/event/EventFactory.js.map +1 -0
  20. package/lib/commonjs/lib/event/EventManager.js +46 -0
  21. package/lib/commonjs/lib/event/EventManager.js.map +1 -0
  22. package/lib/commonjs/lib/event/EventQueue.js +290 -0
  23. package/lib/commonjs/lib/event/EventQueue.js.map +1 -0
  24. package/lib/commonjs/lib/event/index.js +50 -0
  25. package/lib/commonjs/lib/event/index.js.map +1 -0
  26. package/lib/commonjs/lib/event/types.js +6 -0
  27. package/lib/commonjs/lib/event/types.js.map +1 -0
  28. package/lib/commonjs/lib/lifecycle/index.js +196 -0
  29. package/lib/commonjs/lib/lifecycle/index.js.map +1 -0
  30. package/lib/commonjs/lib/logger/index.js +48 -0
  31. package/lib/commonjs/lib/logger/index.js.map +1 -0
  32. package/lib/commonjs/lib/session/index.js +109 -0
  33. package/lib/commonjs/lib/session/index.js.map +1 -0
  34. package/lib/commonjs/lib/storage/AsyncStorageAdapter.js +164 -0
  35. package/lib/commonjs/lib/storage/AsyncStorageAdapter.js.map +1 -0
  36. package/lib/commonjs/lib/storage/MemoryStorage.js +41 -0
  37. package/lib/commonjs/lib/storage/MemoryStorage.js.map +1 -0
  38. package/lib/commonjs/lib/storage/StorageBlueprint.js +24 -0
  39. package/lib/commonjs/lib/storage/StorageBlueprint.js.map +1 -0
  40. package/lib/commonjs/lib/storage/StorageManager.js +126 -0
  41. package/lib/commonjs/lib/storage/StorageManager.js.map +1 -0
  42. package/lib/commonjs/lib/storage/index.js +49 -0
  43. package/lib/commonjs/lib/storage/index.js.map +1 -0
  44. package/lib/commonjs/lib/storage/types.js +2 -0
  45. package/lib/commonjs/lib/storage/types.js.map +1 -0
  46. package/lib/commonjs/lib/wagmi/WagmiEventHandler.js +445 -0
  47. package/lib/commonjs/lib/wagmi/WagmiEventHandler.js.map +1 -0
  48. package/lib/commonjs/lib/wagmi/index.js +28 -0
  49. package/lib/commonjs/lib/wagmi/index.js.map +1 -0
  50. package/lib/commonjs/lib/wagmi/types.js +2 -0
  51. package/lib/commonjs/lib/wagmi/types.js.map +1 -0
  52. package/lib/commonjs/types/base.js +6 -0
  53. package/lib/commonjs/types/base.js.map +1 -0
  54. package/lib/commonjs/types/events.js +22 -0
  55. package/lib/commonjs/types/events.js.map +1 -0
  56. package/lib/commonjs/types/index.js +28 -0
  57. package/lib/commonjs/types/index.js.map +1 -0
  58. package/lib/commonjs/utils/address.js +82 -0
  59. package/lib/commonjs/utils/address.js.map +1 -0
  60. package/lib/commonjs/utils/hash.js +30 -0
  61. package/lib/commonjs/utils/hash.js.map +1 -0
  62. package/lib/commonjs/utils/helpers.js +116 -0
  63. package/lib/commonjs/utils/helpers.js.map +1 -0
  64. package/lib/commonjs/utils/index.js +61 -0
  65. package/lib/commonjs/utils/index.js.map +1 -0
  66. package/lib/commonjs/utils/timestamp.js +34 -0
  67. package/lib/commonjs/utils/timestamp.js.map +1 -0
  68. package/lib/commonjs/utils/trafficSource.js +147 -0
  69. package/lib/commonjs/utils/trafficSource.js.map +1 -0
  70. package/lib/commonjs/version.js +10 -0
  71. package/lib/commonjs/version.js.map +1 -0
  72. package/lib/module/FormoAnalytics.js +519 -0
  73. package/lib/module/FormoAnalytics.js.map +1 -0
  74. package/lib/module/FormoAnalyticsProvider.js +256 -0
  75. package/lib/module/FormoAnalyticsProvider.js.map +1 -0
  76. package/lib/module/constants/config.js +62 -0
  77. package/lib/module/constants/config.js.map +1 -0
  78. package/lib/module/constants/events.js +24 -0
  79. package/lib/module/constants/events.js.map +1 -0
  80. package/lib/module/constants/index.js +4 -0
  81. package/lib/module/constants/index.js.map +1 -0
  82. package/lib/module/constants/storage.js +17 -0
  83. package/lib/module/constants/storage.js.map +1 -0
  84. package/lib/module/index.js +51 -0
  85. package/lib/module/index.js.map +1 -0
  86. package/lib/module/lib/consent/index.js +49 -0
  87. package/lib/module/lib/consent/index.js.map +1 -0
  88. package/lib/module/lib/event/EventFactory.js +488 -0
  89. package/lib/module/lib/event/EventFactory.js.map +1 -0
  90. package/lib/module/lib/event/EventManager.js +41 -0
  91. package/lib/module/lib/event/EventManager.js.map +1 -0
  92. package/lib/module/lib/event/EventQueue.js +283 -0
  93. package/lib/module/lib/event/EventQueue.js.map +1 -0
  94. package/lib/module/lib/event/index.js +5 -0
  95. package/lib/module/lib/event/index.js.map +1 -0
  96. package/lib/module/lib/event/types.js +2 -0
  97. package/lib/module/lib/event/types.js.map +1 -0
  98. package/lib/module/lib/lifecycle/index.js +190 -0
  99. package/lib/module/lib/lifecycle/index.js.map +1 -0
  100. package/lib/module/lib/logger/index.js +42 -0
  101. package/lib/module/lib/logger/index.js.map +1 -0
  102. package/lib/module/lib/session/index.js +92 -0
  103. package/lib/module/lib/session/index.js.map +1 -0
  104. package/lib/module/lib/storage/AsyncStorageAdapter.js +158 -0
  105. package/lib/module/lib/storage/AsyncStorageAdapter.js.map +1 -0
  106. package/lib/module/lib/storage/MemoryStorage.js +35 -0
  107. package/lib/module/lib/storage/MemoryStorage.js.map +1 -0
  108. package/lib/module/lib/storage/StorageBlueprint.js +18 -0
  109. package/lib/module/lib/storage/StorageBlueprint.js.map +1 -0
  110. package/lib/module/lib/storage/StorageManager.js +115 -0
  111. package/lib/module/lib/storage/StorageManager.js.map +1 -0
  112. package/lib/module/lib/storage/index.js +5 -0
  113. package/lib/module/lib/storage/index.js.map +1 -0
  114. package/lib/module/lib/storage/types.js +2 -0
  115. package/lib/module/lib/storage/types.js.map +1 -0
  116. package/lib/module/lib/wagmi/WagmiEventHandler.js +439 -0
  117. package/lib/module/lib/wagmi/WagmiEventHandler.js.map +1 -0
  118. package/lib/module/lib/wagmi/index.js +3 -0
  119. package/lib/module/lib/wagmi/index.js.map +1 -0
  120. package/lib/module/lib/wagmi/types.js +2 -0
  121. package/lib/module/lib/wagmi/types.js.map +1 -0
  122. package/lib/module/types/base.js +2 -0
  123. package/lib/module/types/base.js.map +1 -0
  124. package/lib/module/types/events.js +17 -0
  125. package/lib/module/types/events.js.map +1 -0
  126. package/lib/module/types/index.js +3 -0
  127. package/lib/module/types/index.js.map +1 -0
  128. package/lib/module/utils/address.js +74 -0
  129. package/lib/module/utils/address.js.map +1 -0
  130. package/lib/module/utils/hash.js +24 -0
  131. package/lib/module/utils/hash.js.map +1 -0
  132. package/lib/module/utils/helpers.js +105 -0
  133. package/lib/module/utils/helpers.js.map +1 -0
  134. package/lib/module/utils/index.js +6 -0
  135. package/lib/module/utils/index.js.map +1 -0
  136. package/lib/module/utils/timestamp.js +26 -0
  137. package/lib/module/utils/timestamp.js.map +1 -0
  138. package/lib/module/utils/trafficSource.js +137 -0
  139. package/lib/module/utils/trafficSource.js.map +1 -0
  140. package/lib/module/version.js +4 -0
  141. package/lib/module/version.js.map +1 -0
  142. package/lib/typescript/FormoAnalytics.d.ts +163 -0
  143. package/lib/typescript/FormoAnalytics.d.ts.map +1 -0
  144. package/lib/typescript/FormoAnalyticsProvider.d.ts +29 -0
  145. package/lib/typescript/FormoAnalyticsProvider.d.ts.map +1 -0
  146. package/lib/typescript/constants/config.d.ts +8 -0
  147. package/lib/typescript/constants/config.d.ts.map +1 -0
  148. package/lib/typescript/constants/events.d.ts +23 -0
  149. package/lib/typescript/constants/events.d.ts.map +1 -0
  150. package/lib/typescript/constants/index.d.ts +4 -0
  151. package/lib/typescript/constants/index.d.ts.map +1 -0
  152. package/lib/typescript/constants/storage.d.ts +10 -0
  153. package/lib/typescript/constants/storage.d.ts.map +1 -0
  154. package/lib/typescript/index.d.ts +44 -0
  155. package/lib/typescript/index.d.ts.map +1 -0
  156. package/lib/typescript/lib/consent/index.d.ts +13 -0
  157. package/lib/typescript/lib/consent/index.d.ts.map +1 -0
  158. package/lib/typescript/lib/event/EventFactory.d.ts +61 -0
  159. package/lib/typescript/lib/event/EventFactory.d.ts.map +1 -0
  160. package/lib/typescript/lib/event/EventManager.d.ts +17 -0
  161. package/lib/typescript/lib/event/EventManager.d.ts.map +1 -0
  162. package/lib/typescript/lib/event/EventQueue.d.ts +74 -0
  163. package/lib/typescript/lib/event/EventQueue.d.ts.map +1 -0
  164. package/lib/typescript/lib/event/index.d.ts +5 -0
  165. package/lib/typescript/lib/event/index.d.ts.map +1 -0
  166. package/lib/typescript/lib/event/types.d.ts +23 -0
  167. package/lib/typescript/lib/event/types.d.ts.map +1 -0
  168. package/lib/typescript/lib/lifecycle/index.d.ts +46 -0
  169. package/lib/typescript/lib/lifecycle/index.d.ts.map +1 -0
  170. package/lib/typescript/lib/logger/index.d.ts +19 -0
  171. package/lib/typescript/lib/logger/index.d.ts.map +1 -0
  172. package/lib/typescript/lib/session/index.d.ts +41 -0
  173. package/lib/typescript/lib/session/index.d.ts.map +1 -0
  174. package/lib/typescript/lib/storage/AsyncStorageAdapter.d.ts +48 -0
  175. package/lib/typescript/lib/storage/AsyncStorageAdapter.d.ts.map +1 -0
  176. package/lib/typescript/lib/storage/MemoryStorage.d.ts +18 -0
  177. package/lib/typescript/lib/storage/MemoryStorage.d.ts.map +1 -0
  178. package/lib/typescript/lib/storage/StorageBlueprint.d.ts +21 -0
  179. package/lib/typescript/lib/storage/StorageBlueprint.d.ts.map +1 -0
  180. package/lib/typescript/lib/storage/StorageManager.d.ts +45 -0
  181. package/lib/typescript/lib/storage/StorageManager.d.ts.map +1 -0
  182. package/lib/typescript/lib/storage/index.d.ts +5 -0
  183. package/lib/typescript/lib/storage/index.d.ts.map +1 -0
  184. package/lib/typescript/lib/storage/types.d.ts +22 -0
  185. package/lib/typescript/lib/storage/types.d.ts.map +1 -0
  186. package/lib/typescript/lib/wagmi/WagmiEventHandler.d.ts +104 -0
  187. package/lib/typescript/lib/wagmi/WagmiEventHandler.d.ts.map +1 -0
  188. package/lib/typescript/lib/wagmi/index.d.ts +3 -0
  189. package/lib/typescript/lib/wagmi/index.d.ts.map +1 -0
  190. package/lib/typescript/lib/wagmi/types.d.ts +54 -0
  191. package/lib/typescript/lib/wagmi/types.d.ts.map +1 -0
  192. package/lib/typescript/types/base.d.ts +219 -0
  193. package/lib/typescript/types/base.d.ts.map +1 -0
  194. package/lib/typescript/types/events.d.ts +111 -0
  195. package/lib/typescript/types/events.d.ts.map +1 -0
  196. package/lib/typescript/types/index.d.ts +3 -0
  197. package/lib/typescript/types/index.d.ts.map +1 -0
  198. package/lib/typescript/utils/address.d.ts +25 -0
  199. package/lib/typescript/utils/address.d.ts.map +1 -0
  200. package/lib/typescript/utils/hash.d.ts +10 -0
  201. package/lib/typescript/utils/hash.d.ts.map +1 -0
  202. package/lib/typescript/utils/helpers.d.ts +26 -0
  203. package/lib/typescript/utils/helpers.d.ts.map +1 -0
  204. package/lib/typescript/utils/index.d.ts +6 -0
  205. package/lib/typescript/utils/index.d.ts.map +1 -0
  206. package/lib/typescript/utils/timestamp.d.ts +13 -0
  207. package/lib/typescript/utils/timestamp.d.ts.map +1 -0
  208. package/lib/typescript/utils/trafficSource.d.ts +30 -0
  209. package/lib/typescript/utils/trafficSource.d.ts.map +1 -0
  210. package/lib/typescript/version.d.ts +2 -0
  211. package/lib/typescript/version.d.ts.map +1 -0
  212. package/package.json +143 -0
  213. package/src/FormoAnalytics.ts +685 -0
  214. package/src/FormoAnalyticsProvider.tsx +296 -0
  215. package/src/constants/config.ts +62 -0
  216. package/src/constants/events.ts +26 -0
  217. package/src/constants/index.ts +3 -0
  218. package/src/constants/storage.ts +16 -0
  219. package/src/index.ts +55 -0
  220. package/src/lib/consent/index.ts +52 -0
  221. package/src/lib/event/EventFactory.ts +682 -0
  222. package/src/lib/event/EventManager.ts +50 -0
  223. package/src/lib/event/EventQueue.ts +371 -0
  224. package/src/lib/event/index.ts +4 -0
  225. package/src/lib/event/types.ts +107 -0
  226. package/src/lib/lifecycle/index.ts +215 -0
  227. package/src/lib/logger/index.ts +56 -0
  228. package/src/lib/session/index.ts +103 -0
  229. package/src/lib/storage/AsyncStorageAdapter.ts +173 -0
  230. package/src/lib/storage/MemoryStorage.ts +43 -0
  231. package/src/lib/storage/StorageBlueprint.ts +30 -0
  232. package/src/lib/storage/StorageManager.ts +121 -0
  233. package/src/lib/storage/index.ts +4 -0
  234. package/src/lib/storage/types.ts +23 -0
  235. package/src/lib/wagmi/WagmiEventHandler.ts +574 -0
  236. package/src/lib/wagmi/index.ts +2 -0
  237. package/src/lib/wagmi/types.ts +71 -0
  238. package/src/types/base.ts +287 -0
  239. package/src/types/events.ts +140 -0
  240. package/src/types/index.ts +2 -0
  241. package/src/utils/address.ts +84 -0
  242. package/src/utils/hash.ts +23 -0
  243. package/src/utils/helpers.ts +139 -0
  244. package/src/utils/index.ts +5 -0
  245. package/src/utils/timestamp.ts +25 -0
  246. package/src/utils/trafficSource.ts +153 -0
  247. package/src/version.ts +3 -0
@@ -0,0 +1,158 @@
1
+ import StorageBlueprint from "./StorageBlueprint";
2
+ import { logger } from "../logger";
3
+
4
+ /**
5
+ * AsyncStorage adapter for React Native
6
+ * Provides persistent storage across app restarts
7
+ */
8
+ class AsyncStorageAdapter extends StorageBlueprint {
9
+ asyncStorage = null;
10
+ cache = new Map();
11
+ constructor(writeKey, asyncStorage) {
12
+ super(writeKey);
13
+ if (asyncStorage) {
14
+ this.asyncStorage = asyncStorage;
15
+ }
16
+ }
17
+
18
+ /**
19
+ * Initialize with AsyncStorage instance and preload all Formo keys
20
+ * This ensures consent flags and other critical data are available synchronously
21
+ */
22
+ async initialize(asyncStorage) {
23
+ this.asyncStorage = asyncStorage;
24
+
25
+ // Preload all Formo keys into cache for synchronous access
26
+ // This is critical for consent checks on cold start (GDPR compliance)
27
+ try {
28
+ const allKeys = await asyncStorage.getAllKeys();
29
+ // getKey("") returns "formo_rn_{writeKey}_" - use this exact prefix
30
+ // to avoid matching keys from other instances (e.g., "abc" matching "abc123")
31
+ const formoPrefix = this.getKey("");
32
+
33
+ // Filter to only our keys (exact prefix match including trailing underscore)
34
+ const formoKeys = allKeys.filter(key => key.startsWith(formoPrefix));
35
+ if (formoKeys.length > 0) {
36
+ const pairs = await asyncStorage.multiGet(formoKeys);
37
+ for (const [key, value] of pairs) {
38
+ if (value !== null) {
39
+ this.cache.set(key, value);
40
+ }
41
+ }
42
+ logger.debug(`AsyncStorageAdapter: Preloaded ${formoKeys.length} keys into cache`);
43
+ }
44
+ } catch (error) {
45
+ logger.error("AsyncStorageAdapter: Failed to preload keys", error);
46
+ }
47
+ logger.debug("AsyncStorageAdapter: Initialized");
48
+ }
49
+ isAvailable() {
50
+ return this.asyncStorage !== null;
51
+ }
52
+
53
+ /**
54
+ * Synchronous get from cache (may return stale data)
55
+ * Use getAsync for guaranteed fresh data
56
+ */
57
+ get(key) {
58
+ const cachedValue = this.cache.get(this.getKey(key));
59
+ if (cachedValue !== undefined) {
60
+ return cachedValue;
61
+ }
62
+
63
+ // Trigger async fetch to populate cache
64
+ this.getAsync(key).catch(() => {
65
+ // Ignore errors in background fetch
66
+ });
67
+ return null;
68
+ }
69
+
70
+ /**
71
+ * Async get from storage
72
+ */
73
+ async getAsync(key) {
74
+ if (!this.asyncStorage) {
75
+ return this.cache.get(this.getKey(key)) ?? null;
76
+ }
77
+ try {
78
+ const fullKey = this.getKey(key);
79
+ const value = await this.asyncStorage.getItem(fullKey);
80
+ if (value !== null) {
81
+ this.cache.set(fullKey, value);
82
+ }
83
+ return value;
84
+ } catch (error) {
85
+ logger.error("AsyncStorageAdapter: Failed to get item", error);
86
+ return this.cache.get(this.getKey(key)) ?? null;
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Synchronous set (writes to cache immediately, persists async)
92
+ */
93
+ set(key, value) {
94
+ const fullKey = this.getKey(key);
95
+ this.cache.set(fullKey, value);
96
+
97
+ // Persist asynchronously
98
+ this.setAsync(key, value).catch(error => {
99
+ logger.error("AsyncStorageAdapter: Failed to persist item", error);
100
+ });
101
+ }
102
+
103
+ /**
104
+ * Async set to storage
105
+ */
106
+ async setAsync(key, value) {
107
+ const fullKey = this.getKey(key);
108
+ this.cache.set(fullKey, value);
109
+ if (!this.asyncStorage) {
110
+ return;
111
+ }
112
+ try {
113
+ await this.asyncStorage.setItem(fullKey, value);
114
+ } catch (error) {
115
+ logger.error("AsyncStorageAdapter: Failed to set item", error);
116
+ throw error;
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Synchronous remove (removes from cache immediately, persists async)
122
+ */
123
+ remove(key) {
124
+ const fullKey = this.getKey(key);
125
+ this.cache.delete(fullKey);
126
+
127
+ // Persist asynchronously
128
+ this.removeAsync(key).catch(error => {
129
+ logger.error("AsyncStorageAdapter: Failed to remove item", error);
130
+ });
131
+ }
132
+
133
+ /**
134
+ * Async remove from storage
135
+ */
136
+ async removeAsync(key) {
137
+ const fullKey = this.getKey(key);
138
+ this.cache.delete(fullKey);
139
+ if (!this.asyncStorage) {
140
+ return;
141
+ }
142
+ try {
143
+ await this.asyncStorage.removeItem(fullKey);
144
+ } catch (error) {
145
+ logger.error("AsyncStorageAdapter: Failed to remove item", error);
146
+ throw error;
147
+ }
148
+ }
149
+
150
+ /**
151
+ * Clear all cached data
152
+ */
153
+ clearCache() {
154
+ this.cache.clear();
155
+ }
156
+ }
157
+ export default AsyncStorageAdapter;
158
+ //# sourceMappingURL=AsyncStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StorageBlueprint","logger","AsyncStorageAdapter","asyncStorage","cache","Map","constructor","writeKey","initialize","allKeys","getAllKeys","formoPrefix","getKey","formoKeys","filter","key","startsWith","length","pairs","multiGet","value","set","debug","error","isAvailable","get","cachedValue","undefined","getAsync","catch","fullKey","getItem","setAsync","setItem","remove","delete","removeAsync","removeItem","clearCache","clear"],"sourceRoot":"../../../../src","sources":["lib/storage/AsyncStorageAdapter.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ import StorageBlueprint from "./StorageBlueprint";
2
+
3
+ /**
4
+ * In-memory storage fallback
5
+ * Data is lost when the app is closed
6
+ */
7
+ class MemoryStorage extends StorageBlueprint {
8
+ storage = new Map();
9
+ isAvailable() {
10
+ return true;
11
+ }
12
+ get(key) {
13
+ return this.storage.get(this.getKey(key)) ?? null;
14
+ }
15
+ async getAsync(key) {
16
+ return this.get(key);
17
+ }
18
+ set(key, value) {
19
+ this.storage.set(this.getKey(key), value);
20
+ }
21
+ async setAsync(key, value) {
22
+ this.set(key, value);
23
+ }
24
+ remove(key) {
25
+ this.storage.delete(this.getKey(key));
26
+ }
27
+ async removeAsync(key) {
28
+ this.remove(key);
29
+ }
30
+ clear() {
31
+ this.storage.clear();
32
+ }
33
+ }
34
+ export default MemoryStorage;
35
+ //# sourceMappingURL=MemoryStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StorageBlueprint","MemoryStorage","storage","Map","isAvailable","get","key","getKey","getAsync","set","value","setAsync","remove","delete","removeAsync","clear"],"sourceRoot":"../../../../src","sources":["lib/storage/MemoryStorage.ts"],"mappings":"AAAA,OAAOA,gBAAgB,MAAM,oBAAoB;;AAEjD;AACA;AACA;AACA;AACA,MAAMC,aAAa,SAASD,gBAAgB,CAAC;EACnCE,OAAO,GAAwB,IAAIC,GAAG,CAAC,CAAC;EAEzCC,WAAWA,CAAA,EAAY;IAC5B,OAAO,IAAI;EACb;EAEOC,GAAGA,CAACC,GAAW,EAAiB;IACrC,OAAO,IAAI,CAACJ,OAAO,CAACG,GAAG,CAAC,IAAI,CAACE,MAAM,CAACD,GAAG,CAAC,CAAC,IAAI,IAAI;EACnD;EAEA,MAAaE,QAAQA,CAACF,GAAW,EAA0B;IACzD,OAAO,IAAI,CAACD,GAAG,CAACC,GAAG,CAAC;EACtB;EAEOG,GAAGA,CAACH,GAAW,EAAEI,KAAa,EAAQ;IAC3C,IAAI,CAACR,OAAO,CAACO,GAAG,CAAC,IAAI,CAACF,MAAM,CAACD,GAAG,CAAC,EAAEI,KAAK,CAAC;EAC3C;EAEA,MAAaC,QAAQA,CAACL,GAAW,EAAEI,KAAa,EAAiB;IAC/D,IAAI,CAACD,GAAG,CAACH,GAAG,EAAEI,KAAK,CAAC;EACtB;EAEOE,MAAMA,CAACN,GAAW,EAAQ;IAC/B,IAAI,CAACJ,OAAO,CAACW,MAAM,CAAC,IAAI,CAACN,MAAM,CAACD,GAAG,CAAC,CAAC;EACvC;EAEA,MAAaQ,WAAWA,CAACR,GAAW,EAAiB;IACnD,IAAI,CAACM,MAAM,CAACN,GAAG,CAAC;EAClB;EAEOS,KAAKA,CAAA,EAAS;IACnB,IAAI,CAACb,OAAO,CAACa,KAAK,CAAC,CAAC;EACtB;AACF;AAEA,eAAed,aAAa","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import { STORAGE_PREFIX } from "../../constants";
2
+ /**
3
+ * Base storage class with key prefixing
4
+ */
5
+ class StorageBlueprint {
6
+ constructor(writeKey) {
7
+ this.writeKey = writeKey;
8
+ }
9
+
10
+ /**
11
+ * Generate storage key with prefix
12
+ */
13
+ getKey(key) {
14
+ return `${STORAGE_PREFIX}${this.writeKey}_${key}`;
15
+ }
16
+ }
17
+ export default StorageBlueprint;
18
+ //# sourceMappingURL=StorageBlueprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["STORAGE_PREFIX","StorageBlueprint","constructor","writeKey","getKey","key"],"sourceRoot":"../../../../src","sources":["lib/storage/StorageBlueprint.ts"],"mappings":"AAAA,SAASA,cAAc,QAAQ,iBAAiB;AAGhD;AACA;AACA;AACA,MAAeC,gBAAgB,CAAqB;EAGlDC,WAAWA,CAACC,QAAgB,EAAE;IAC5B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;;EAEA;AACF;AACA;EACSC,MAAMA,CAACC,GAAW,EAAU;IACjC,OAAO,GAAGL,cAAc,GAAG,IAAI,CAACG,QAAQ,IAAIE,GAAG,EAAE;EACnD;AASF;AAEA,eAAeJ,gBAAgB","ignoreList":[]}
@@ -0,0 +1,115 @@
1
+ import { logger } from "../logger";
2
+ import AsyncStorageAdapter from "./AsyncStorageAdapter";
3
+ import MemoryStorage from "./MemoryStorage";
4
+ /**
5
+ * Storage manager for React Native SDK
6
+ * Uses AsyncStorage as primary storage with MemoryStorage fallback
7
+ */
8
+ export class StorageManager {
9
+ storages = new Map();
10
+ constructor(writeKey) {
11
+ this.writeKey = writeKey;
12
+ }
13
+
14
+ /**
15
+ * Initialize with AsyncStorage instance
16
+ * This should be called during SDK initialization
17
+ */
18
+ async initialize(asyncStorage) {
19
+ // Create and initialize the AsyncStorage adapter directly.
20
+ // We bypass getStorage() here because it checks isAvailable() which
21
+ // returns false on an uninitialized adapter and would fall back to
22
+ // MemoryStorage, causing a crash when we call adapter.initialize().
23
+ const adapter = new AsyncStorageAdapter(this.writeKey);
24
+ await adapter.initialize(asyncStorage);
25
+ this.storages.set("asyncStorage", adapter);
26
+ logger.debug("StorageManager: Initialized with AsyncStorage");
27
+ }
28
+
29
+ /**
30
+ * Get storage instance by type
31
+ */
32
+ getStorage(type) {
33
+ if (!this.storages.has(type)) {
34
+ const storage = this.createStorage(type);
35
+
36
+ // If storage is not available, fallback to memory and cache the fallback
37
+ if (!storage.isAvailable() && type !== "memoryStorage") {
38
+ logger.warn(`Storage ${type} is not available, falling back to memoryStorage`);
39
+ const fallback = this.getStorage("memoryStorage");
40
+ this.storages.set(type, fallback);
41
+ return fallback;
42
+ }
43
+ this.storages.set(type, storage);
44
+ }
45
+ return this.storages.get(type);
46
+ }
47
+
48
+ /**
49
+ * Create storage instance
50
+ */
51
+ createStorage(type) {
52
+ switch (type) {
53
+ case "asyncStorage":
54
+ return new AsyncStorageAdapter(this.writeKey);
55
+ case "memoryStorage":
56
+ default:
57
+ return new MemoryStorage(this.writeKey);
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Get primary storage (AsyncStorage with fallback)
63
+ */
64
+ getPrimaryStorage() {
65
+ const asyncStorage = this.getStorage("asyncStorage");
66
+ if (asyncStorage.isAvailable()) {
67
+ return asyncStorage;
68
+ }
69
+ return this.getStorage("memoryStorage");
70
+ }
71
+
72
+ /**
73
+ * Check if persistent storage (AsyncStorage) has been initialized.
74
+ * Returns false if only MemoryStorage is available.
75
+ */
76
+ hasPersistentStorage() {
77
+ const stored = this.storages.get("asyncStorage");
78
+ return stored instanceof AsyncStorageAdapter && stored.isAvailable();
79
+ }
80
+ }
81
+
82
+ // Global storage manager instance
83
+ let storageManagerInstance = null;
84
+
85
+ /**
86
+ * Initialize global storage manager
87
+ */
88
+ export function initStorageManager(writeKey) {
89
+ if (!storageManagerInstance || storageManagerInstance["writeKey"] !== writeKey) {
90
+ // Clean up old instance before creating new one
91
+ if (storageManagerInstance) {
92
+ logger.debug("StorageManager: Replacing instance with new writeKey");
93
+ }
94
+ storageManagerInstance = new StorageManager(writeKey);
95
+ }
96
+ return storageManagerInstance;
97
+ }
98
+
99
+ /**
100
+ * Get global storage manager instance
101
+ */
102
+ export function getStorageManager() {
103
+ return storageManagerInstance;
104
+ }
105
+
106
+ /**
107
+ * Get primary storage
108
+ */
109
+ export function storage() {
110
+ if (!storageManagerInstance) {
111
+ throw new Error("StorageManager not initialized. Call initStorageManager first.");
112
+ }
113
+ return storageManagerInstance.getPrimaryStorage();
114
+ }
115
+ //# sourceMappingURL=StorageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["logger","AsyncStorageAdapter","MemoryStorage","StorageManager","storages","Map","constructor","writeKey","initialize","asyncStorage","adapter","set","debug","getStorage","type","has","storage","createStorage","isAvailable","warn","fallback","get","getPrimaryStorage","hasPersistentStorage","stored","storageManagerInstance","initStorageManager","getStorageManager","Error"],"sourceRoot":"../../../../src","sources":["lib/storage/StorageManager.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ export * from "./StorageManager";
2
+ export * from "./types";
3
+ export { default as AsyncStorageAdapter } from "./AsyncStorageAdapter";
4
+ export { default as MemoryStorage } from "./MemoryStorage";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","AsyncStorageAdapter","MemoryStorage"],"sourceRoot":"../../../../src","sources":["lib/storage/index.ts"],"mappings":"AAAA,cAAc,kBAAkB;AAChC,cAAc,SAAS;AACvB,SAASA,OAAO,IAAIC,mBAAmB,QAAQ,uBAAuB;AACtE,SAASD,OAAO,IAAIE,aAAa,QAAQ,iBAAiB","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["lib/storage/types.ts"],"mappings":"","ignoreList":[]}