@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,265 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useFormo = exports.FormoAnalyticsProvider = exports.FormoAnalyticsContext = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _FormoAnalytics = require("./FormoAnalytics");
9
+ var _storage = require("./lib/storage");
10
+ var _logger = require("./lib/logger");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ // Default context with no-op methods
13
+ const defaultContext = {
14
+ chain: () => Promise.resolve(),
15
+ screen: () => Promise.resolve(),
16
+ reset: () => {},
17
+ cleanup: () => Promise.resolve(),
18
+ detect: () => Promise.resolve(),
19
+ connect: () => Promise.resolve(),
20
+ disconnect: () => Promise.resolve(),
21
+ signature: () => Promise.resolve(),
22
+ transaction: () => Promise.resolve(),
23
+ identify: () => Promise.resolve(),
24
+ track: () => Promise.resolve(),
25
+ setTrafficSourceFromUrl: () => {},
26
+ optOutTracking: () => {},
27
+ optInTracking: () => {},
28
+ hasOptedOutTracking: () => false
29
+ };
30
+ const FormoAnalyticsContext = exports.FormoAnalyticsContext = /*#__PURE__*/(0, _react.createContext)(defaultContext);
31
+
32
+ /**
33
+ * Formo Analytics Provider for React Native
34
+ *
35
+ * Wraps your app to provide analytics context
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * import AsyncStorage from '@react-native-async-storage/async-storage';
40
+ * import { FormoAnalyticsProvider } from '@formo/analytics-react-native';
41
+ *
42
+ * function App() {
43
+ * return (
44
+ * <FormoAnalyticsProvider
45
+ * writeKey="your-write-key"
46
+ * asyncStorage={AsyncStorage}
47
+ * options={{ wagmi: { config, queryClient } }}
48
+ * >
49
+ * <YourApp />
50
+ * </FormoAnalyticsProvider>
51
+ * );
52
+ * }
53
+ * ```
54
+ */
55
+ const FormoAnalyticsProvider = props => {
56
+ const {
57
+ writeKey,
58
+ disabled = false,
59
+ children
60
+ } = props;
61
+ if (!writeKey) {
62
+ _logger.logger.error("FormoAnalyticsProvider: No Write Key provided");
63
+ return /*#__PURE__*/_react.default.createElement(FormoAnalyticsContext.Provider, {
64
+ value: defaultContext
65
+ }, children);
66
+ }
67
+ if (disabled) {
68
+ _logger.logger.warn("FormoAnalytics is disabled");
69
+ return /*#__PURE__*/_react.default.createElement(FormoAnalyticsContext.Provider, {
70
+ value: defaultContext
71
+ }, children);
72
+ }
73
+ return /*#__PURE__*/_react.default.createElement(InitializedAnalytics, props);
74
+ };
75
+ exports.FormoAnalyticsProvider = FormoAnalyticsProvider;
76
+ const InitializedAnalytics = ({
77
+ writeKey,
78
+ options,
79
+ asyncStorage,
80
+ onReady,
81
+ onError,
82
+ children
83
+ }) => {
84
+ const [sdk, setSdk] = (0, _react.useState)(defaultContext);
85
+ const sdkRef = (0, _react.useRef)(defaultContext);
86
+ const storageInitKeyRef = (0, _react.useRef)(null);
87
+ const cleanupPromiseRef = (0, _react.useRef)(Promise.resolve());
88
+ const initializationIdRef = (0, _react.useRef)(0);
89
+
90
+ // Only initialize storage manager when writeKey changes, not on every render
91
+ if (storageInitKeyRef.current !== writeKey) {
92
+ (0, _storage.initStorageManager)(writeKey);
93
+ storageInitKeyRef.current = writeKey;
94
+ }
95
+
96
+ // Store callbacks and options in refs to avoid re-initialization when references change
97
+ // This fixes the issue where inline arrow functions cause repeated SDK init
98
+ const onReadyRef = (0, _react.useRef)(onReady);
99
+ const onErrorRef = (0, _react.useRef)(onError);
100
+ const optionsRef = (0, _react.useRef)(options);
101
+
102
+ // Update refs when values change (without triggering effect)
103
+ (0, _react.useEffect)(() => {
104
+ onReadyRef.current = onReady;
105
+ }, [onReady]);
106
+ (0, _react.useEffect)(() => {
107
+ onErrorRef.current = onError;
108
+ }, [onError]);
109
+ (0, _react.useEffect)(() => {
110
+ optionsRef.current = options;
111
+ }, [options]);
112
+
113
+ // Extract individual option values to avoid reference equality issues with options object
114
+ const tracking = options?.tracking;
115
+ const autocapture = options?.autocapture;
116
+ const apiHost = options?.apiHost;
117
+ const flushAt = options?.flushAt;
118
+ const flushInterval = options?.flushInterval;
119
+ const retryCount = options?.retryCount;
120
+ const maxQueueSize = options?.maxQueueSize;
121
+ const loggerOption = options?.logger;
122
+ const app = options?.app;
123
+ const hasReady = !!options?.ready;
124
+ const wagmiConfig = options?.wagmi?.config;
125
+ const wagmiQueryClient = options?.wagmi?.queryClient;
126
+
127
+ // Create stable key from serializable options
128
+ const optionsKey = (0, _react.useMemo)(() => {
129
+ const serializableOptions = {
130
+ tracking,
131
+ autocapture,
132
+ apiHost,
133
+ flushAt,
134
+ flushInterval,
135
+ retryCount,
136
+ maxQueueSize,
137
+ logger: loggerOption,
138
+ app,
139
+ hasReady
140
+ };
141
+ try {
142
+ return JSON.stringify(serializableOptions);
143
+ } catch (error) {
144
+ _logger.logger.warn("Failed to serialize options, using timestamp", error);
145
+ return Date.now().toString();
146
+ }
147
+ }, [tracking, autocapture, apiHost, flushAt, flushInterval, retryCount, maxQueueSize, loggerOption, app, hasReady]);
148
+ (0, _react.useEffect)(() => {
149
+ // Increment initialization ID to track which initialization is current
150
+ const currentInitId = ++initializationIdRef.current;
151
+ let isCleanedUp = false;
152
+ const initialize = async () => {
153
+ // Wait for any pending cleanup to complete before re-initializing
154
+ // This prevents race conditions between cleanup and init
155
+ await cleanupPromiseRef.current;
156
+
157
+ // Check if this initialization is still current after awaiting cleanup
158
+ if (currentInitId !== initializationIdRef.current || isCleanedUp) {
159
+ _logger.logger.debug("Skipping stale initialization");
160
+ return;
161
+ }
162
+
163
+ // Clean up existing SDK and await flush completion
164
+ if (sdkRef.current && sdkRef.current !== defaultContext) {
165
+ _logger.logger.log("Cleaning up existing FormoAnalytics SDK instance");
166
+ const cleanup = sdkRef.current.cleanup();
167
+ cleanupPromiseRef.current = cleanup;
168
+ await cleanup;
169
+ sdkRef.current = defaultContext;
170
+ setSdk(defaultContext);
171
+ }
172
+
173
+ // Check again after cleanup
174
+ if (currentInitId !== initializationIdRef.current || isCleanedUp) {
175
+ _logger.logger.debug("Skipping stale initialization after cleanup");
176
+ return;
177
+ }
178
+ try {
179
+ // Use optionsRef.current to ensure we have the latest options
180
+ const sdkInstance = await _FormoAnalytics.FormoAnalytics.init(writeKey, optionsRef.current, asyncStorage);
181
+
182
+ // Verify this initialization is still current
183
+ if (currentInitId !== initializationIdRef.current || isCleanedUp) {
184
+ _logger.logger.log("Initialization superseded, cleaning up new instance");
185
+ await sdkInstance.cleanup();
186
+ return;
187
+ }
188
+ setSdk(sdkInstance);
189
+ sdkRef.current = sdkInstance;
190
+ _logger.logger.log("Successfully initialized FormoAnalytics SDK");
191
+
192
+ // Call onReady callback using the ref (stable reference)
193
+ onReadyRef.current?.(sdkInstance);
194
+ } catch (error) {
195
+ if (currentInitId === initializationIdRef.current && !isCleanedUp) {
196
+ _logger.logger.error("Failed to initialize FormoAnalytics SDK", error);
197
+ // Call onError callback using the ref (stable reference)
198
+ onErrorRef.current?.(error instanceof Error ? error : new Error(String(error)));
199
+ }
200
+ }
201
+ };
202
+ initialize();
203
+ return () => {
204
+ isCleanedUp = true;
205
+ if (sdkRef.current && sdkRef.current !== defaultContext) {
206
+ _logger.logger.log("Cleaning up FormoAnalytics SDK instance");
207
+ // Store cleanup promise so next initialization can await it
208
+ const cleanup = sdkRef.current.cleanup().catch(error => {
209
+ _logger.logger.error("Error during SDK cleanup:", error);
210
+ });
211
+ cleanupPromiseRef.current = cleanup;
212
+ sdkRef.current = defaultContext;
213
+ }
214
+ };
215
+ // Note: onReady and onError are NOT in the dependency array
216
+ // They are accessed via refs to prevent re-initialization
217
+ // wagmiConfig and wagmiQueryClient are tracked separately since they're not serializable
218
+ }, [writeKey, optionsKey, asyncStorage, wagmiConfig, wagmiQueryClient]);
219
+ return /*#__PURE__*/_react.default.createElement(FormoAnalyticsContext.Provider, {
220
+ value: sdk
221
+ }, children);
222
+ };
223
+
224
+ /**
225
+ * Hook to access Formo Analytics
226
+ *
227
+ * @example
228
+ * ```tsx
229
+ * import { useFormo } from '@formo/analytics-react-native';
230
+ *
231
+ * function MyScreen() {
232
+ * const formo = useFormo();
233
+ *
234
+ * useEffect(() => {
235
+ * formo.screen('Home');
236
+ * }, []);
237
+ *
238
+ * const handleButtonPress = () => {
239
+ * formo.track('Button Pressed', { buttonName: 'signup' });
240
+ * };
241
+ *
242
+ * return <Button onPress={handleButtonPress}>Sign Up</Button>;
243
+ * }
244
+ * ```
245
+ */
246
+ // Track if the useFormo warning has been logged to avoid console spam
247
+ let hasLoggedUseFormoWarning = false;
248
+ const useFormo = () => {
249
+ const context = (0, _react.useContext)(FormoAnalyticsContext);
250
+
251
+ // Check if SDK has been initialized (context will be defaultContext before init completes)
252
+ // Only log the warning once to avoid flooding the console during async initialization
253
+ if (context === defaultContext && !hasLoggedUseFormoWarning) {
254
+ hasLoggedUseFormoWarning = true;
255
+ _logger.logger.warn("useFormo called before SDK initialization complete. " + "Ensure FormoAnalyticsProvider is mounted and writeKey is provided.");
256
+ }
257
+
258
+ // Reset the warning flag when SDK is initialized so it can warn again after a reset
259
+ if (context !== defaultContext) {
260
+ hasLoggedUseFormoWarning = false;
261
+ }
262
+ return context;
263
+ };
264
+ exports.useFormo = useFormo;
265
+ //# sourceMappingURL=FormoAnalyticsProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_FormoAnalytics","_storage","_logger","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","defaultContext","chain","Promise","resolve","screen","reset","cleanup","detect","connect","disconnect","signature","transaction","identify","track","setTrafficSourceFromUrl","optOutTracking","optInTracking","hasOptedOutTracking","FormoAnalyticsContext","exports","createContext","FormoAnalyticsProvider","props","writeKey","disabled","children","logger","error","createElement","Provider","value","warn","InitializedAnalytics","options","asyncStorage","onReady","onError","sdk","setSdk","useState","sdkRef","useRef","storageInitKeyRef","cleanupPromiseRef","initializationIdRef","current","initStorageManager","onReadyRef","onErrorRef","optionsRef","useEffect","tracking","autocapture","apiHost","flushAt","flushInterval","retryCount","maxQueueSize","loggerOption","app","hasReady","ready","wagmiConfig","wagmi","config","wagmiQueryClient","queryClient","optionsKey","useMemo","serializableOptions","JSON","stringify","Date","now","toString","currentInitId","isCleanedUp","initialize","debug","log","sdkInstance","FormoAnalytics","init","Error","String","catch","hasLoggedUseFormoWarning","useFormo","context","useContext"],"sourceRoot":"../../src","sources":["FormoAnalyticsProvider.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EVENTS_API_REQUEST_HEADER = exports.EVENTS_API_ORIGIN = exports.EVENTS_API_HOST = exports.COUNTRY_LIST = void 0;
7
+ const EVENTS_API_ORIGIN = exports.EVENTS_API_ORIGIN = "https://events.formo.so";
8
+ const EVENTS_API_HOST = exports.EVENTS_API_HOST = `${EVENTS_API_ORIGIN}/v0/raw_events`;
9
+ const EVENTS_API_REQUEST_HEADER = writeKey => ({
10
+ "Content-Type": "application/json",
11
+ Authorization: `Bearer ${writeKey}`
12
+ });
13
+
14
+ // Timezone to country mapping
15
+ exports.EVENTS_API_REQUEST_HEADER = EVENTS_API_REQUEST_HEADER;
16
+ const COUNTRY_LIST = exports.COUNTRY_LIST = {
17
+ // Africa
18
+ "Africa/Abidjan": "CI",
19
+ "Africa/Accra": "GH",
20
+ "Africa/Addis_Ababa": "ET",
21
+ "Africa/Algiers": "DZ",
22
+ "Africa/Cairo": "EG",
23
+ "Africa/Casablanca": "MA",
24
+ "Africa/Johannesburg": "ZA",
25
+ "Africa/Lagos": "NG",
26
+ "Africa/Nairobi": "KE",
27
+ // America
28
+ "America/Anchorage": "US",
29
+ "America/Argentina/Buenos_Aires": "AR",
30
+ "America/Bogota": "CO",
31
+ "America/Chicago": "US",
32
+ "America/Denver": "US",
33
+ "America/Los_Angeles": "US",
34
+ "America/Mexico_City": "MX",
35
+ "America/New_York": "US",
36
+ "America/Phoenix": "US",
37
+ "America/Sao_Paulo": "BR",
38
+ "America/Toronto": "CA",
39
+ "America/Vancouver": "CA",
40
+ // Asia
41
+ "Asia/Bangkok": "TH",
42
+ "Asia/Dubai": "AE",
43
+ "Asia/Ho_Chi_Minh": "VN",
44
+ "Asia/Hong_Kong": "HK",
45
+ "Asia/Jakarta": "ID",
46
+ "Asia/Kolkata": "IN",
47
+ "Asia/Manila": "PH",
48
+ "Asia/Seoul": "KR",
49
+ "Asia/Shanghai": "CN",
50
+ "Asia/Singapore": "SG",
51
+ "Asia/Taipei": "TW",
52
+ "Asia/Tokyo": "JP",
53
+ // Australia
54
+ "Australia/Melbourne": "AU",
55
+ "Australia/Sydney": "AU",
56
+ // Europe
57
+ "Europe/Amsterdam": "NL",
58
+ "Europe/Berlin": "DE",
59
+ "Europe/London": "GB",
60
+ "Europe/Madrid": "ES",
61
+ "Europe/Moscow": "RU",
62
+ "Europe/Paris": "FR",
63
+ "Europe/Rome": "IT",
64
+ "Europe/Zurich": "CH",
65
+ // Pacific
66
+ "Pacific/Auckland": "NZ",
67
+ "Pacific/Honolulu": "US"
68
+ };
69
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EVENTS_API_ORIGIN","exports","EVENTS_API_HOST","EVENTS_API_REQUEST_HEADER","writeKey","Authorization","COUNTRY_LIST"],"sourceRoot":"../../../src","sources":["constants/config.ts"],"mappings":";;;;;;AAAO,MAAMA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,yBAAyB;AACnD,MAAME,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAG,GAAGF,iBAAiB,gBAAgB;AAE5D,MAAMG,yBAAyB,GAAIC,QAAgB,KAAM;EAC9D,cAAc,EAAE,kBAAkB;EAClCC,aAAa,EAAE,UAAUD,QAAQ;AACnC,CAAC,CAAC;;AAEF;AAAAH,OAAA,CAAAE,yBAAA,GAAAA,yBAAA;AACO,MAAMG,YAAoC,GAAAL,OAAA,CAAAK,YAAA,GAAG;EAClD;EACA,gBAAgB,EAAE,IAAI;EACtB,cAAc,EAAE,IAAI;EACpB,oBAAoB,EAAE,IAAI;EAC1B,gBAAgB,EAAE,IAAI;EACtB,cAAc,EAAE,IAAI;EACpB,mBAAmB,EAAE,IAAI;EACzB,qBAAqB,EAAE,IAAI;EAC3B,cAAc,EAAE,IAAI;EACpB,gBAAgB,EAAE,IAAI;EACtB;EACA,mBAAmB,EAAE,IAAI;EACzB,gCAAgC,EAAE,IAAI;EACtC,gBAAgB,EAAE,IAAI;EACtB,iBAAiB,EAAE,IAAI;EACvB,gBAAgB,EAAE,IAAI;EACtB,qBAAqB,EAAE,IAAI;EAC3B,qBAAqB,EAAE,IAAI;EAC3B,kBAAkB,EAAE,IAAI;EACxB,iBAAiB,EAAE,IAAI;EACvB,mBAAmB,EAAE,IAAI;EACzB,iBAAiB,EAAE,IAAI;EACvB,mBAAmB,EAAE,IAAI;EACzB;EACA,cAAc,EAAE,IAAI;EACpB,YAAY,EAAE,IAAI;EAClB,kBAAkB,EAAE,IAAI;EACxB,gBAAgB,EAAE,IAAI;EACtB,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,IAAI;EACpB,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,IAAI;EAClB,eAAe,EAAE,IAAI;EACrB,gBAAgB,EAAE,IAAI;EACtB,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,IAAI;EAClB;EACA,qBAAqB,EAAE,IAAI;EAC3B,kBAAkB,EAAE,IAAI;EACxB;EACA,kBAAkB,EAAE,IAAI;EACxB,eAAe,EAAE,IAAI;EACrB,eAAe,EAAE,IAAI;EACrB,eAAe,EAAE,IAAI;EACrB,eAAe,EAAE,IAAI;EACrB,cAAc,EAAE,IAAI;EACpB,aAAa,EAAE,IAAI;EACnB,eAAe,EAAE,IAAI;EACrB;EACA,kBAAkB,EAAE,IAAI;EACxB,kBAAkB,EAAE;AACtB,CAAC","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.VERSION = exports.EventType = exports.EventChannel = exports.CHANNEL = void 0;
7
+ let EventType = exports.EventType = /*#__PURE__*/function (EventType) {
8
+ EventType["PAGE"] = "page";
9
+ EventType["SCREEN"] = "screen";
10
+ EventType["IDENTIFY"] = "identify";
11
+ EventType["DETECT"] = "detect";
12
+ EventType["CONNECT"] = "connect";
13
+ EventType["DISCONNECT"] = "disconnect";
14
+ EventType["CHAIN"] = "chain";
15
+ EventType["SIGNATURE"] = "signature";
16
+ EventType["TRANSACTION"] = "transaction";
17
+ EventType["TRACK"] = "track";
18
+ return EventType;
19
+ }({});
20
+ let EventChannel = exports.EventChannel = /*#__PURE__*/function (EventChannel) {
21
+ EventChannel["WEB"] = "web";
22
+ EventChannel["MOBILE"] = "mobile";
23
+ EventChannel["SERVER"] = "server";
24
+ EventChannel["SOURCE"] = "source";
25
+ return EventChannel;
26
+ }({});
27
+ // React Native SDK uses mobile channel
28
+ const CHANNEL = exports.CHANNEL = "mobile";
29
+ const VERSION = exports.VERSION = "1";
30
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EventType","exports","EventChannel","CHANNEL","VERSION"],"sourceRoot":"../../../src","sources":["constants/events.ts"],"mappings":";;;;;;IAAYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAAA,IAaTE,YAAY,GAAAD,OAAA,CAAAC,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAUxB;AACO,MAAMC,OAAsB,GAAAF,OAAA,CAAAE,OAAA,GAAG,QAAQ;AACvC,MAAMC,OAAO,GAAAH,OAAA,CAAAG,OAAA,GAAG,GAAG","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _events = require("./events");
7
+ Object.keys(_events).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _events[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _events[key];
14
+ }
15
+ });
16
+ });
17
+ var _config = require("./config");
18
+ Object.keys(_config).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _config[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _config[key];
25
+ }
26
+ });
27
+ });
28
+ var _storage = require("./storage");
29
+ Object.keys(_storage).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _storage[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _storage[key];
36
+ }
37
+ });
38
+ });
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_events","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_config","_storage"],"sourceRoot":"../../../src","sources":["constants/index.ts"],"mappings":";;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,OAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,OAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,OAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,QAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,QAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,QAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,QAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.STORAGE_PREFIX = exports.SESSION_WALLET_IDENTIFIED_KEY = exports.SESSION_WALLET_DETECTED_KEY = exports.SESSION_USER_ID_KEY = exports.SESSION_TRAFFIC_SOURCE_KEY = exports.LOCAL_APP_VERSION_KEY = exports.LOCAL_APP_BUILD_KEY = exports.LOCAL_ANONYMOUS_ID_KEY = exports.CONSENT_OPT_OUT_KEY = void 0;
7
+ // Storage keys for React Native SDK
8
+ const STORAGE_PREFIX = exports.STORAGE_PREFIX = "formo_rn_";
9
+
10
+ // Local storage keys (persistent)
11
+ const LOCAL_ANONYMOUS_ID_KEY = exports.LOCAL_ANONYMOUS_ID_KEY = "anonymous_id";
12
+ const LOCAL_APP_VERSION_KEY = exports.LOCAL_APP_VERSION_KEY = "app_version";
13
+ const LOCAL_APP_BUILD_KEY = exports.LOCAL_APP_BUILD_KEY = "app_build";
14
+
15
+ // Session storage keys (cleared on app restart)
16
+ const SESSION_USER_ID_KEY = exports.SESSION_USER_ID_KEY = "user_id";
17
+ const SESSION_TRAFFIC_SOURCE_KEY = exports.SESSION_TRAFFIC_SOURCE_KEY = "traffic_source";
18
+ const SESSION_WALLET_DETECTED_KEY = exports.SESSION_WALLET_DETECTED_KEY = "wallet_detected";
19
+ const SESSION_WALLET_IDENTIFIED_KEY = exports.SESSION_WALLET_IDENTIFIED_KEY = "wallet_identified";
20
+
21
+ // Consent keys
22
+ const CONSENT_OPT_OUT_KEY = exports.CONSENT_OPT_OUT_KEY = "opt_out_tracking";
23
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["STORAGE_PREFIX","exports","LOCAL_ANONYMOUS_ID_KEY","LOCAL_APP_VERSION_KEY","LOCAL_APP_BUILD_KEY","SESSION_USER_ID_KEY","SESSION_TRAFFIC_SOURCE_KEY","SESSION_WALLET_DETECTED_KEY","SESSION_WALLET_IDENTIFIED_KEY","CONSENT_OPT_OUT_KEY"],"sourceRoot":"../../../src","sources":["constants/storage.ts"],"mappings":";;;;;;AAAA;AACO,MAAMA,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,WAAW;;AAEzC;AACO,MAAME,sBAAsB,GAAAD,OAAA,CAAAC,sBAAA,GAAG,cAAc;AAC7C,MAAMC,qBAAqB,GAAAF,OAAA,CAAAE,qBAAA,GAAG,aAAa;AAC3C,MAAMC,mBAAmB,GAAAH,OAAA,CAAAG,mBAAA,GAAG,WAAW;;AAE9C;AACO,MAAMC,mBAAmB,GAAAJ,OAAA,CAAAI,mBAAA,GAAG,SAAS;AACrC,MAAMC,0BAA0B,GAAAL,OAAA,CAAAK,0BAAA,GAAG,gBAAgB;AACnD,MAAMC,2BAA2B,GAAAN,OAAA,CAAAM,2BAAA,GAAG,iBAAiB;AACrD,MAAMC,6BAA6B,GAAAP,OAAA,CAAAO,6BAAA,GAAG,mBAAmB;;AAEhE;AACO,MAAMC,mBAAmB,GAAAR,OAAA,CAAAQ,mBAAA,GAAG,kBAAkB","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ FormoAnalytics: true,
8
+ FormoAnalyticsProvider: true,
9
+ FormoAnalyticsContext: true,
10
+ useFormo: true,
11
+ SignatureStatus: true,
12
+ TransactionStatus: true
13
+ };
14
+ Object.defineProperty(exports, "FormoAnalytics", {
15
+ enumerable: true,
16
+ get: function () {
17
+ return _FormoAnalytics.FormoAnalytics;
18
+ }
19
+ });
20
+ Object.defineProperty(exports, "FormoAnalyticsContext", {
21
+ enumerable: true,
22
+ get: function () {
23
+ return _FormoAnalyticsProvider.FormoAnalyticsContext;
24
+ }
25
+ });
26
+ Object.defineProperty(exports, "FormoAnalyticsProvider", {
27
+ enumerable: true,
28
+ get: function () {
29
+ return _FormoAnalyticsProvider.FormoAnalyticsProvider;
30
+ }
31
+ });
32
+ Object.defineProperty(exports, "SignatureStatus", {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _events.SignatureStatus;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "TransactionStatus", {
39
+ enumerable: true,
40
+ get: function () {
41
+ return _events.TransactionStatus;
42
+ }
43
+ });
44
+ Object.defineProperty(exports, "useFormo", {
45
+ enumerable: true,
46
+ get: function () {
47
+ return _FormoAnalyticsProvider.useFormo;
48
+ }
49
+ });
50
+ var _FormoAnalytics = require("./FormoAnalytics");
51
+ var _FormoAnalyticsProvider = require("./FormoAnalyticsProvider");
52
+ var _types = require("./types");
53
+ Object.keys(_types).forEach(function (key) {
54
+ if (key === "default" || key === "__esModule") return;
55
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
56
+ if (key in exports && exports[key] === _types[key]) return;
57
+ Object.defineProperty(exports, key, {
58
+ enumerable: true,
59
+ get: function () {
60
+ return _types[key];
61
+ }
62
+ });
63
+ });
64
+ var _events = require("./types/events");
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_FormoAnalytics","require","_FormoAnalyticsProvider","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_events"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAOA,IAAAE,MAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAGA,IAAAS,OAAA,GAAAf,OAAA","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getConsentFlag = getConsentFlag;
7
+ exports.removeConsentFlag = removeConsentFlag;
8
+ exports.setConsentFlag = setConsentFlag;
9
+ var _storage = require("../storage");
10
+ var _logger = require("../logger");
11
+ /**
12
+ * Get consent storage key
13
+ * Note: The storage adapter already prefixes keys with formo_rn_{writeKey}_
14
+ * so we just need a simple consent prefix here
15
+ */
16
+ function getConsentKey(_writeKey, key) {
17
+ return `consent_${key}`;
18
+ }
19
+
20
+ /**
21
+ * Set a consent flag
22
+ */
23
+ function setConsentFlag(writeKey, key, value) {
24
+ try {
25
+ const consentKey = getConsentKey(writeKey, key);
26
+ (0, _storage.storage)().set(consentKey, value);
27
+ } catch (error) {
28
+ _logger.logger.error("Consent: Failed to set flag", error);
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Get a consent flag
34
+ */
35
+ function getConsentFlag(writeKey, key) {
36
+ try {
37
+ const consentKey = getConsentKey(writeKey, key);
38
+ return (0, _storage.storage)().get(consentKey);
39
+ } catch (error) {
40
+ _logger.logger.error("Consent: Failed to get flag", error);
41
+ return null;
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Remove a consent flag
47
+ */
48
+ function removeConsentFlag(writeKey, key) {
49
+ try {
50
+ const consentKey = getConsentKey(writeKey, key);
51
+ (0, _storage.storage)().remove(consentKey);
52
+ } catch (error) {
53
+ _logger.logger.error("Consent: Failed to remove flag", error);
54
+ }
55
+ }
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_storage","require","_logger","getConsentKey","_writeKey","key","setConsentFlag","writeKey","value","consentKey","storage","set","error","logger","getConsentFlag","get","removeConsentFlag","remove"],"sourceRoot":"../../../../src","sources":["lib/consent/index.ts"],"mappings":";;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,aAAaA,CAACC,SAAiB,EAAEC,GAAW,EAAU;EAC7D,OAAO,WAAWA,GAAG,EAAE;AACzB;;AAEA;AACA;AACA;AACO,SAASC,cAAcA,CAC5BC,QAAgB,EAChBF,GAAW,EACXG,KAAa,EACP;EACN,IAAI;IACF,MAAMC,UAAU,GAAGN,aAAa,CAACI,QAAQ,EAAEF,GAAG,CAAC;IAC/C,IAAAK,gBAAO,EAAC,CAAC,CAACC,GAAG,CAACF,UAAU,EAAED,KAAK,CAAC;EAClC,CAAC,CAAC,OAAOI,KAAK,EAAE;IACdC,cAAM,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;EACpD;AACF;;AAEA;AACA;AACA;AACO,SAASE,cAAcA,CAACP,QAAgB,EAAEF,GAAW,EAAiB;EAC3E,IAAI;IACF,MAAMI,UAAU,GAAGN,aAAa,CAACI,QAAQ,EAAEF,GAAG,CAAC;IAC/C,OAAO,IAAAK,gBAAO,EAAC,CAAC,CAACK,GAAG,CAACN,UAAU,CAAC;EAClC,CAAC,CAAC,OAAOG,KAAK,EAAE;IACdC,cAAM,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;IAClD,OAAO,IAAI;EACb;AACF;;AAEA;AACA;AACA;AACO,SAASI,iBAAiBA,CAACT,QAAgB,EAAEF,GAAW,EAAQ;EACrE,IAAI;IACF,MAAMI,UAAU,GAAGN,aAAa,CAACI,QAAQ,EAAEF,GAAG,CAAC;IAC/C,IAAAK,gBAAO,EAAC,CAAC,CAACO,MAAM,CAACR,UAAU,CAAC;EAC9B,CAAC,CAAC,OAAOG,KAAK,EAAE;IACdC,cAAM,CAACD,KAAK,CAAC,gCAAgC,EAAEA,KAAK,CAAC;EACvD;AACF","ignoreList":[]}