@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.
- package/README.md +302 -0
- package/lib/commonjs/FormoAnalytics.js +526 -0
- package/lib/commonjs/FormoAnalytics.js.map +1 -0
- package/lib/commonjs/FormoAnalyticsProvider.js +265 -0
- package/lib/commonjs/FormoAnalyticsProvider.js.map +1 -0
- package/lib/commonjs/constants/config.js +69 -0
- package/lib/commonjs/constants/config.js.map +1 -0
- package/lib/commonjs/constants/events.js +30 -0
- package/lib/commonjs/constants/events.js.map +1 -0
- package/lib/commonjs/constants/index.js +39 -0
- package/lib/commonjs/constants/index.js.map +1 -0
- package/lib/commonjs/constants/storage.js +23 -0
- package/lib/commonjs/constants/storage.js.map +1 -0
- package/lib/commonjs/index.js +65 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/lib/consent/index.js +56 -0
- package/lib/commonjs/lib/consent/index.js.map +1 -0
- package/lib/commonjs/lib/event/EventFactory.js +493 -0
- package/lib/commonjs/lib/event/EventFactory.js.map +1 -0
- package/lib/commonjs/lib/event/EventManager.js +46 -0
- package/lib/commonjs/lib/event/EventManager.js.map +1 -0
- package/lib/commonjs/lib/event/EventQueue.js +290 -0
- package/lib/commonjs/lib/event/EventQueue.js.map +1 -0
- package/lib/commonjs/lib/event/index.js +50 -0
- package/lib/commonjs/lib/event/index.js.map +1 -0
- package/lib/commonjs/lib/event/types.js +6 -0
- package/lib/commonjs/lib/event/types.js.map +1 -0
- package/lib/commonjs/lib/lifecycle/index.js +196 -0
- package/lib/commonjs/lib/lifecycle/index.js.map +1 -0
- package/lib/commonjs/lib/logger/index.js +48 -0
- package/lib/commonjs/lib/logger/index.js.map +1 -0
- package/lib/commonjs/lib/session/index.js +109 -0
- package/lib/commonjs/lib/session/index.js.map +1 -0
- package/lib/commonjs/lib/storage/AsyncStorageAdapter.js +164 -0
- package/lib/commonjs/lib/storage/AsyncStorageAdapter.js.map +1 -0
- package/lib/commonjs/lib/storage/MemoryStorage.js +41 -0
- package/lib/commonjs/lib/storage/MemoryStorage.js.map +1 -0
- package/lib/commonjs/lib/storage/StorageBlueprint.js +24 -0
- package/lib/commonjs/lib/storage/StorageBlueprint.js.map +1 -0
- package/lib/commonjs/lib/storage/StorageManager.js +126 -0
- package/lib/commonjs/lib/storage/StorageManager.js.map +1 -0
- package/lib/commonjs/lib/storage/index.js +49 -0
- package/lib/commonjs/lib/storage/index.js.map +1 -0
- package/lib/commonjs/lib/storage/types.js +2 -0
- package/lib/commonjs/lib/storage/types.js.map +1 -0
- package/lib/commonjs/lib/wagmi/WagmiEventHandler.js +445 -0
- package/lib/commonjs/lib/wagmi/WagmiEventHandler.js.map +1 -0
- package/lib/commonjs/lib/wagmi/index.js +28 -0
- package/lib/commonjs/lib/wagmi/index.js.map +1 -0
- package/lib/commonjs/lib/wagmi/types.js +2 -0
- package/lib/commonjs/lib/wagmi/types.js.map +1 -0
- package/lib/commonjs/types/base.js +6 -0
- package/lib/commonjs/types/base.js.map +1 -0
- package/lib/commonjs/types/events.js +22 -0
- package/lib/commonjs/types/events.js.map +1 -0
- package/lib/commonjs/types/index.js +28 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/utils/address.js +82 -0
- package/lib/commonjs/utils/address.js.map +1 -0
- package/lib/commonjs/utils/hash.js +30 -0
- package/lib/commonjs/utils/hash.js.map +1 -0
- package/lib/commonjs/utils/helpers.js +116 -0
- package/lib/commonjs/utils/helpers.js.map +1 -0
- package/lib/commonjs/utils/index.js +61 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/commonjs/utils/timestamp.js +34 -0
- package/lib/commonjs/utils/timestamp.js.map +1 -0
- package/lib/commonjs/utils/trafficSource.js +147 -0
- package/lib/commonjs/utils/trafficSource.js.map +1 -0
- package/lib/commonjs/version.js +10 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/FormoAnalytics.js +519 -0
- package/lib/module/FormoAnalytics.js.map +1 -0
- package/lib/module/FormoAnalyticsProvider.js +256 -0
- package/lib/module/FormoAnalyticsProvider.js.map +1 -0
- package/lib/module/constants/config.js +62 -0
- package/lib/module/constants/config.js.map +1 -0
- package/lib/module/constants/events.js +24 -0
- package/lib/module/constants/events.js.map +1 -0
- package/lib/module/constants/index.js +4 -0
- package/lib/module/constants/index.js.map +1 -0
- package/lib/module/constants/storage.js +17 -0
- package/lib/module/constants/storage.js.map +1 -0
- package/lib/module/index.js +51 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/lib/consent/index.js +49 -0
- package/lib/module/lib/consent/index.js.map +1 -0
- package/lib/module/lib/event/EventFactory.js +488 -0
- package/lib/module/lib/event/EventFactory.js.map +1 -0
- package/lib/module/lib/event/EventManager.js +41 -0
- package/lib/module/lib/event/EventManager.js.map +1 -0
- package/lib/module/lib/event/EventQueue.js +283 -0
- package/lib/module/lib/event/EventQueue.js.map +1 -0
- package/lib/module/lib/event/index.js +5 -0
- package/lib/module/lib/event/index.js.map +1 -0
- package/lib/module/lib/event/types.js +2 -0
- package/lib/module/lib/event/types.js.map +1 -0
- package/lib/module/lib/lifecycle/index.js +190 -0
- package/lib/module/lib/lifecycle/index.js.map +1 -0
- package/lib/module/lib/logger/index.js +42 -0
- package/lib/module/lib/logger/index.js.map +1 -0
- package/lib/module/lib/session/index.js +92 -0
- package/lib/module/lib/session/index.js.map +1 -0
- package/lib/module/lib/storage/AsyncStorageAdapter.js +158 -0
- package/lib/module/lib/storage/AsyncStorageAdapter.js.map +1 -0
- package/lib/module/lib/storage/MemoryStorage.js +35 -0
- package/lib/module/lib/storage/MemoryStorage.js.map +1 -0
- package/lib/module/lib/storage/StorageBlueprint.js +18 -0
- package/lib/module/lib/storage/StorageBlueprint.js.map +1 -0
- package/lib/module/lib/storage/StorageManager.js +115 -0
- package/lib/module/lib/storage/StorageManager.js.map +1 -0
- package/lib/module/lib/storage/index.js +5 -0
- package/lib/module/lib/storage/index.js.map +1 -0
- package/lib/module/lib/storage/types.js +2 -0
- package/lib/module/lib/storage/types.js.map +1 -0
- package/lib/module/lib/wagmi/WagmiEventHandler.js +439 -0
- package/lib/module/lib/wagmi/WagmiEventHandler.js.map +1 -0
- package/lib/module/lib/wagmi/index.js +3 -0
- package/lib/module/lib/wagmi/index.js.map +1 -0
- package/lib/module/lib/wagmi/types.js +2 -0
- package/lib/module/lib/wagmi/types.js.map +1 -0
- package/lib/module/types/base.js +2 -0
- package/lib/module/types/base.js.map +1 -0
- package/lib/module/types/events.js +17 -0
- package/lib/module/types/events.js.map +1 -0
- package/lib/module/types/index.js +3 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/utils/address.js +74 -0
- package/lib/module/utils/address.js.map +1 -0
- package/lib/module/utils/hash.js +24 -0
- package/lib/module/utils/hash.js.map +1 -0
- package/lib/module/utils/helpers.js +105 -0
- package/lib/module/utils/helpers.js.map +1 -0
- package/lib/module/utils/index.js +6 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/timestamp.js +26 -0
- package/lib/module/utils/timestamp.js.map +1 -0
- package/lib/module/utils/trafficSource.js +137 -0
- package/lib/module/utils/trafficSource.js.map +1 -0
- package/lib/module/version.js +4 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/FormoAnalytics.d.ts +163 -0
- package/lib/typescript/FormoAnalytics.d.ts.map +1 -0
- package/lib/typescript/FormoAnalyticsProvider.d.ts +29 -0
- package/lib/typescript/FormoAnalyticsProvider.d.ts.map +1 -0
- package/lib/typescript/constants/config.d.ts +8 -0
- package/lib/typescript/constants/config.d.ts.map +1 -0
- package/lib/typescript/constants/events.d.ts +23 -0
- package/lib/typescript/constants/events.d.ts.map +1 -0
- package/lib/typescript/constants/index.d.ts +4 -0
- package/lib/typescript/constants/index.d.ts.map +1 -0
- package/lib/typescript/constants/storage.d.ts +10 -0
- package/lib/typescript/constants/storage.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +44 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/lib/consent/index.d.ts +13 -0
- package/lib/typescript/lib/consent/index.d.ts.map +1 -0
- package/lib/typescript/lib/event/EventFactory.d.ts +61 -0
- package/lib/typescript/lib/event/EventFactory.d.ts.map +1 -0
- package/lib/typescript/lib/event/EventManager.d.ts +17 -0
- package/lib/typescript/lib/event/EventManager.d.ts.map +1 -0
- package/lib/typescript/lib/event/EventQueue.d.ts +74 -0
- package/lib/typescript/lib/event/EventQueue.d.ts.map +1 -0
- package/lib/typescript/lib/event/index.d.ts +5 -0
- package/lib/typescript/lib/event/index.d.ts.map +1 -0
- package/lib/typescript/lib/event/types.d.ts +23 -0
- package/lib/typescript/lib/event/types.d.ts.map +1 -0
- package/lib/typescript/lib/lifecycle/index.d.ts +46 -0
- package/lib/typescript/lib/lifecycle/index.d.ts.map +1 -0
- package/lib/typescript/lib/logger/index.d.ts +19 -0
- package/lib/typescript/lib/logger/index.d.ts.map +1 -0
- package/lib/typescript/lib/session/index.d.ts +41 -0
- package/lib/typescript/lib/session/index.d.ts.map +1 -0
- package/lib/typescript/lib/storage/AsyncStorageAdapter.d.ts +48 -0
- package/lib/typescript/lib/storage/AsyncStorageAdapter.d.ts.map +1 -0
- package/lib/typescript/lib/storage/MemoryStorage.d.ts +18 -0
- package/lib/typescript/lib/storage/MemoryStorage.d.ts.map +1 -0
- package/lib/typescript/lib/storage/StorageBlueprint.d.ts +21 -0
- package/lib/typescript/lib/storage/StorageBlueprint.d.ts.map +1 -0
- package/lib/typescript/lib/storage/StorageManager.d.ts +45 -0
- package/lib/typescript/lib/storage/StorageManager.d.ts.map +1 -0
- package/lib/typescript/lib/storage/index.d.ts +5 -0
- package/lib/typescript/lib/storage/index.d.ts.map +1 -0
- package/lib/typescript/lib/storage/types.d.ts +22 -0
- package/lib/typescript/lib/storage/types.d.ts.map +1 -0
- package/lib/typescript/lib/wagmi/WagmiEventHandler.d.ts +104 -0
- package/lib/typescript/lib/wagmi/WagmiEventHandler.d.ts.map +1 -0
- package/lib/typescript/lib/wagmi/index.d.ts +3 -0
- package/lib/typescript/lib/wagmi/index.d.ts.map +1 -0
- package/lib/typescript/lib/wagmi/types.d.ts +54 -0
- package/lib/typescript/lib/wagmi/types.d.ts.map +1 -0
- package/lib/typescript/types/base.d.ts +219 -0
- package/lib/typescript/types/base.d.ts.map +1 -0
- package/lib/typescript/types/events.d.ts +111 -0
- package/lib/typescript/types/events.d.ts.map +1 -0
- package/lib/typescript/types/index.d.ts +3 -0
- package/lib/typescript/types/index.d.ts.map +1 -0
- package/lib/typescript/utils/address.d.ts +25 -0
- package/lib/typescript/utils/address.d.ts.map +1 -0
- package/lib/typescript/utils/hash.d.ts +10 -0
- package/lib/typescript/utils/hash.d.ts.map +1 -0
- package/lib/typescript/utils/helpers.d.ts +26 -0
- package/lib/typescript/utils/helpers.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +6 -0
- package/lib/typescript/utils/index.d.ts.map +1 -0
- package/lib/typescript/utils/timestamp.d.ts +13 -0
- package/lib/typescript/utils/timestamp.d.ts.map +1 -0
- package/lib/typescript/utils/trafficSource.d.ts +30 -0
- package/lib/typescript/utils/trafficSource.d.ts.map +1 -0
- package/lib/typescript/version.d.ts +2 -0
- package/lib/typescript/version.d.ts.map +1 -0
- package/package.json +143 -0
- package/src/FormoAnalytics.ts +685 -0
- package/src/FormoAnalyticsProvider.tsx +296 -0
- package/src/constants/config.ts +62 -0
- package/src/constants/events.ts +26 -0
- package/src/constants/index.ts +3 -0
- package/src/constants/storage.ts +16 -0
- package/src/index.ts +55 -0
- package/src/lib/consent/index.ts +52 -0
- package/src/lib/event/EventFactory.ts +682 -0
- package/src/lib/event/EventManager.ts +50 -0
- package/src/lib/event/EventQueue.ts +371 -0
- package/src/lib/event/index.ts +4 -0
- package/src/lib/event/types.ts +107 -0
- package/src/lib/lifecycle/index.ts +215 -0
- package/src/lib/logger/index.ts +56 -0
- package/src/lib/session/index.ts +103 -0
- package/src/lib/storage/AsyncStorageAdapter.ts +173 -0
- package/src/lib/storage/MemoryStorage.ts +43 -0
- package/src/lib/storage/StorageBlueprint.ts +30 -0
- package/src/lib/storage/StorageManager.ts +121 -0
- package/src/lib/storage/index.ts +4 -0
- package/src/lib/storage/types.ts +23 -0
- package/src/lib/wagmi/WagmiEventHandler.ts +574 -0
- package/src/lib/wagmi/index.ts +2 -0
- package/src/lib/wagmi/types.ts +71 -0
- package/src/types/base.ts +287 -0
- package/src/types/events.ts +140 -0
- package/src/types/index.ts +2 -0
- package/src/utils/address.ts +84 -0
- package/src/utils/hash.ts +23 -0
- package/src/utils/helpers.ts +139 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/timestamp.ts +25 -0
- package/src/utils/trafficSource.ts +153 -0
- package/src/version.ts +3 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clamp a number between min and max values
|
|
3
|
+
*/
|
|
4
|
+
export function clampNumber(value, max, min) {
|
|
5
|
+
return Math.min(Math.max(value, min), max);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Check if value is undefined
|
|
10
|
+
*/
|
|
11
|
+
export function isUndefined(value) {
|
|
12
|
+
return value === undefined;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Convert a camelCase/PascalCase string to snake_case
|
|
17
|
+
* Handles consecutive uppercase letters (acronyms) correctly:
|
|
18
|
+
* - "userID" -> "user_id"
|
|
19
|
+
* - "XMLParser" -> "xml_parser"
|
|
20
|
+
* - "getHTTPResponse" -> "get_http_response"
|
|
21
|
+
*/
|
|
22
|
+
function camelToSnake(str) {
|
|
23
|
+
return str
|
|
24
|
+
// Insert underscore before sequences of uppercase followed by lowercase (e.g., "XMLParser" -> "XML_Parser")
|
|
25
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2")
|
|
26
|
+
// Insert underscore before single uppercase preceded by lowercase (e.g., "userID" -> "user_ID")
|
|
27
|
+
.replace(/([a-z\d])([A-Z])/g, "$1_$2").toLowerCase();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Check if value is a plain object (not Date, Map, Set, RegExp, etc.)
|
|
32
|
+
*/
|
|
33
|
+
function isPlainObject(value) {
|
|
34
|
+
if (value === null || typeof value !== "object") {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const proto = Object.getPrototypeOf(value);
|
|
38
|
+
return proto === Object.prototype || proto === null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Convert object keys to snake_case (recursively handles nested objects and arrays)
|
|
43
|
+
* Preserves Date, Map, Set, RegExp, and other built-in objects unchanged
|
|
44
|
+
*/
|
|
45
|
+
export function toSnakeCase(obj) {
|
|
46
|
+
const result = {};
|
|
47
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
48
|
+
const snakeKey = camelToSnake(key);
|
|
49
|
+
if (Array.isArray(value)) {
|
|
50
|
+
// Recursively convert plain objects inside arrays
|
|
51
|
+
result[snakeKey] = value.map(item => isPlainObject(item) ? toSnakeCase(item) : item);
|
|
52
|
+
} else if (isPlainObject(value)) {
|
|
53
|
+
result[snakeKey] = toSnakeCase(value);
|
|
54
|
+
} else {
|
|
55
|
+
// Preserve Date, Map, Set, RegExp, and other built-in objects unchanged
|
|
56
|
+
result[snakeKey] = value;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Deep merge two objects
|
|
64
|
+
*/
|
|
65
|
+
export function mergeDeepRight(target, source) {
|
|
66
|
+
const output = {
|
|
67
|
+
...target
|
|
68
|
+
};
|
|
69
|
+
for (const key in source) {
|
|
70
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
71
|
+
const sourceValue = source[key];
|
|
72
|
+
const targetValue = output[key];
|
|
73
|
+
if (sourceValue !== null && typeof sourceValue === "object" && !Array.isArray(sourceValue) && targetValue !== null && typeof targetValue === "object" && !Array.isArray(targetValue)) {
|
|
74
|
+
output[key] = mergeDeepRight(targetValue, sourceValue);
|
|
75
|
+
} else if (sourceValue !== undefined) {
|
|
76
|
+
output[key] = sourceValue;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return output;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Get action descriptor for logging
|
|
85
|
+
*/
|
|
86
|
+
export function getActionDescriptor(type, properties) {
|
|
87
|
+
if (type === "track" && properties?.event) {
|
|
88
|
+
return `track:${properties.event}`;
|
|
89
|
+
}
|
|
90
|
+
if (type === "screen" && properties?.name) {
|
|
91
|
+
return `screen:${properties.name}`;
|
|
92
|
+
}
|
|
93
|
+
return type;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Check if error is a network error
|
|
98
|
+
*/
|
|
99
|
+
export function isNetworkError(error) {
|
|
100
|
+
if (!error) return false;
|
|
101
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
102
|
+
const networkErrorMessages = ["Network request failed", "Failed to fetch", "Network Error", "timeout", "ETIMEDOUT", "ECONNREFUSED", "ENOTFOUND"];
|
|
103
|
+
return networkErrorMessages.some(msg => message.toLowerCase().includes(msg.toLowerCase()));
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["clampNumber","value","max","min","Math","isUndefined","undefined","camelToSnake","str","replace","toLowerCase","isPlainObject","proto","Object","getPrototypeOf","prototype","toSnakeCase","obj","result","key","entries","snakeKey","Array","isArray","map","item","mergeDeepRight","target","source","output","hasOwnProperty","call","sourceValue","targetValue","getActionDescriptor","type","properties","event","name","isNetworkError","error","message","Error","String","networkErrorMessages","some","msg","includes"],"sourceRoot":"../../../src","sources":["utils/helpers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,cAAc,WAAW;AACzB,cAAc,iBAAiB","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get current time in ISO format
|
|
3
|
+
*/
|
|
4
|
+
export function getCurrentTimeFormatted() {
|
|
5
|
+
return new Date().toISOString();
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Format date to YYYY-MM-DD HH:mm format for hashing
|
|
10
|
+
*/
|
|
11
|
+
export function toDateHourMinute(date) {
|
|
12
|
+
const year = date.getFullYear();
|
|
13
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
14
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
15
|
+
const hours = String(date.getHours()).padStart(2, "0");
|
|
16
|
+
const minutes = String(date.getMinutes()).padStart(2, "0");
|
|
17
|
+
return `${year}-${month}-${day} ${hours}:${minutes}`;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Convert milliseconds to seconds
|
|
22
|
+
*/
|
|
23
|
+
export function millisecondsToSecond(ms) {
|
|
24
|
+
return Math.floor(ms / 1000);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=timestamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getCurrentTimeFormatted","Date","toISOString","toDateHourMinute","date","year","getFullYear","month","String","getMonth","padStart","day","getDate","hours","getHours","minutes","getMinutes","millisecondsToSecond","ms","Math","floor"],"sourceRoot":"../../../src","sources":["utils/timestamp.ts"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,SAASA,uBAAuBA,CAAA,EAAW;EAChD,OAAO,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;AACjC;;AAEA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,IAAU,EAAU;EACnD,MAAMC,IAAI,GAAGD,IAAI,CAACE,WAAW,CAAC,CAAC;EAC/B,MAAMC,KAAK,GAAGC,MAAM,CAACJ,IAAI,CAACK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC1D,MAAMC,GAAG,GAAGH,MAAM,CAACJ,IAAI,CAACQ,OAAO,CAAC,CAAC,CAAC,CAACF,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EACnD,MAAMG,KAAK,GAAGL,MAAM,CAACJ,IAAI,CAACU,QAAQ,CAAC,CAAC,CAAC,CAACJ,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EACtD,MAAMK,OAAO,GAAGP,MAAM,CAACJ,IAAI,CAACY,UAAU,CAAC,CAAC,CAAC,CAACN,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC1D,OAAO,GAAGL,IAAI,IAAIE,KAAK,IAAII,GAAG,IAAIE,KAAK,IAAIE,OAAO,EAAE;AACtD;;AAEA;AACA;AACA;AACA,OAAO,SAASE,oBAAoBA,CAACC,EAAU,EAAU;EACvD,OAAOC,IAAI,CAACC,KAAK,CAACF,EAAE,GAAG,IAAI,CAAC;AAC9B","ignoreList":[]}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traffic Source Utilities
|
|
3
|
+
* Parse UTM parameters and referral information from URLs
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { logger } from "../lib/logger";
|
|
7
|
+
import { storage } from "../lib/storage";
|
|
8
|
+
import { SESSION_TRAFFIC_SOURCE_KEY } from "../constants";
|
|
9
|
+
/**
|
|
10
|
+
* Parse UTM parameters and referral info from URL
|
|
11
|
+
* Supports both web URLs (https://) and deep link URLs (myapp://)
|
|
12
|
+
*/
|
|
13
|
+
export function parseTrafficSource(url, customRefParams, pathPattern) {
|
|
14
|
+
try {
|
|
15
|
+
// Handle deep link URLs that may not have standard URL format
|
|
16
|
+
let urlObj;
|
|
17
|
+
try {
|
|
18
|
+
urlObj = new URL(url);
|
|
19
|
+
} catch {
|
|
20
|
+
// If URL parsing fails, try to extract query string manually
|
|
21
|
+
const queryStart = url.indexOf("?");
|
|
22
|
+
if (queryStart === -1) {
|
|
23
|
+
return {
|
|
24
|
+
referrer: url
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Create a fake URL for parsing query params
|
|
29
|
+
urlObj = new URL(`http://localhost${url.substring(queryStart)}`);
|
|
30
|
+
}
|
|
31
|
+
const params = urlObj.searchParams;
|
|
32
|
+
const trafficSource = {};
|
|
33
|
+
|
|
34
|
+
// Extract UTM parameters
|
|
35
|
+
if (params.has("utm_source")) trafficSource.utm_source = params.get("utm_source");
|
|
36
|
+
if (params.has("utm_medium")) trafficSource.utm_medium = params.get("utm_medium");
|
|
37
|
+
if (params.has("utm_campaign")) trafficSource.utm_campaign = params.get("utm_campaign");
|
|
38
|
+
if (params.has("utm_term")) trafficSource.utm_term = params.get("utm_term");
|
|
39
|
+
if (params.has("utm_content")) trafficSource.utm_content = params.get("utm_content");
|
|
40
|
+
|
|
41
|
+
// Extract referral codes (check common parameter names + custom ones, deduplicated)
|
|
42
|
+
const defaultRefParams = ["ref", "referral", "refcode", "referrer_code"];
|
|
43
|
+
const refParams = customRefParams ? [...new Set([...defaultRefParams, ...customRefParams])] : defaultRefParams;
|
|
44
|
+
for (const param of refParams) {
|
|
45
|
+
if (params.has(param)) {
|
|
46
|
+
trafficSource.ref = params.get(param);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Extract referral code from URL path if pathPattern is provided
|
|
52
|
+
if (pathPattern && !trafficSource.ref) {
|
|
53
|
+
try {
|
|
54
|
+
const pathRegex = new RegExp(pathPattern);
|
|
55
|
+
const pathname = urlObj.pathname;
|
|
56
|
+
const match = pathname.match(pathRegex);
|
|
57
|
+
if (match && match[1]) {
|
|
58
|
+
trafficSource.ref = match[1];
|
|
59
|
+
}
|
|
60
|
+
} catch (e) {
|
|
61
|
+
logger.error("Error parsing pathPattern for referral:", e);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Store the full URL as referrer
|
|
66
|
+
trafficSource.referrer = url;
|
|
67
|
+
return trafficSource;
|
|
68
|
+
} catch (error) {
|
|
69
|
+
logger.error("Error parsing traffic source from URL:", error);
|
|
70
|
+
return {
|
|
71
|
+
referrer: url
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Store traffic source in session storage
|
|
78
|
+
* Only stores if we have actual UTM or ref data
|
|
79
|
+
*/
|
|
80
|
+
export function storeTrafficSource(trafficSource) {
|
|
81
|
+
try {
|
|
82
|
+
// Check if we have meaningful data to store (not just referrer)
|
|
83
|
+
const hasData = trafficSource.utm_source || trafficSource.utm_medium || trafficSource.utm_campaign || trafficSource.utm_term || trafficSource.utm_content || trafficSource.ref;
|
|
84
|
+
if (hasData || trafficSource.referrer) {
|
|
85
|
+
storage().set(SESSION_TRAFFIC_SOURCE_KEY, JSON.stringify(trafficSource));
|
|
86
|
+
logger.debug("Stored traffic source:", trafficSource);
|
|
87
|
+
}
|
|
88
|
+
} catch (error) {
|
|
89
|
+
logger.error("Error storing traffic source:", error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Get stored traffic source from session
|
|
95
|
+
* Returns undefined if no traffic source is stored
|
|
96
|
+
*/
|
|
97
|
+
export function getStoredTrafficSource() {
|
|
98
|
+
try {
|
|
99
|
+
const stored = storage().get(SESSION_TRAFFIC_SOURCE_KEY);
|
|
100
|
+
if (stored && typeof stored === "string") {
|
|
101
|
+
return JSON.parse(stored);
|
|
102
|
+
}
|
|
103
|
+
} catch (error) {
|
|
104
|
+
logger.debug("Failed to get stored traffic source:", error);
|
|
105
|
+
}
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Clear stored traffic source from session
|
|
111
|
+
*/
|
|
112
|
+
export function clearTrafficSource() {
|
|
113
|
+
try {
|
|
114
|
+
storage().remove(SESSION_TRAFFIC_SOURCE_KEY);
|
|
115
|
+
logger.debug("Cleared traffic source from session");
|
|
116
|
+
} catch (error) {
|
|
117
|
+
logger.error("Error clearing traffic source:", error);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Merge stored traffic source with current context
|
|
123
|
+
* Stored traffic source is used as fallback - current context takes priority
|
|
124
|
+
*/
|
|
125
|
+
export function mergeWithStoredTrafficSource(context) {
|
|
126
|
+
const stored = getStoredTrafficSource();
|
|
127
|
+
if (!stored) {
|
|
128
|
+
return context || {};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Merge: stored values as base, context values override
|
|
132
|
+
return {
|
|
133
|
+
...stored,
|
|
134
|
+
...(context || {})
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=trafficSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["logger","storage","SESSION_TRAFFIC_SOURCE_KEY","parseTrafficSource","url","customRefParams","pathPattern","urlObj","URL","queryStart","indexOf","referrer","substring","params","searchParams","trafficSource","has","utm_source","get","utm_medium","utm_campaign","utm_term","utm_content","defaultRefParams","refParams","Set","param","ref","pathRegex","RegExp","pathname","match","e","error","storeTrafficSource","hasData","set","JSON","stringify","debug","getStoredTrafficSource","stored","parse","undefined","clearTrafficSource","remove","mergeWithStoredTrafficSource","context"],"sourceRoot":"../../../src","sources":["utils/trafficSource.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["version"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":"AAAA;AACA;AACA,OAAO,MAAMA,OAAO,GAAG,OAAO","ignoreList":[]}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FormoAnalytics for React Native
|
|
3
|
+
*
|
|
4
|
+
* Main SDK class for tracking wallet events and user analytics in mobile dApps
|
|
5
|
+
*/
|
|
6
|
+
import { AsyncStorageInterface } from "./lib/storage";
|
|
7
|
+
import { Address, ChainID, Config, IFormoAnalytics, IFormoEventContext, IFormoEventProperties, Options, SignatureStatus, TransactionStatus } from "./types";
|
|
8
|
+
export declare class FormoAnalytics implements IFormoAnalytics {
|
|
9
|
+
readonly writeKey: string;
|
|
10
|
+
options: Options;
|
|
11
|
+
private session;
|
|
12
|
+
private eventManager;
|
|
13
|
+
private eventQueue;
|
|
14
|
+
private wagmiHandler?;
|
|
15
|
+
private lifecycleManager?;
|
|
16
|
+
config: Config;
|
|
17
|
+
currentChainId?: ChainID;
|
|
18
|
+
currentAddress?: Address;
|
|
19
|
+
currentUserId?: string;
|
|
20
|
+
private constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Initialize the SDK
|
|
23
|
+
* @param writeKey - Your Formo write key
|
|
24
|
+
* @param options - Configuration options
|
|
25
|
+
* @param asyncStorage - AsyncStorage instance from @react-native-async-storage/async-storage
|
|
26
|
+
*/
|
|
27
|
+
static init(writeKey: string, options?: Options, asyncStorage?: AsyncStorageInterface): Promise<FormoAnalytics>;
|
|
28
|
+
/**
|
|
29
|
+
* Track a screen view (mobile equivalent of page view)
|
|
30
|
+
*/
|
|
31
|
+
screen(name: string, category?: string, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Set traffic source from deep link URL
|
|
34
|
+
* Parses UTM parameters and referrer information from URL
|
|
35
|
+
* This is automatically persisted for the session
|
|
36
|
+
*
|
|
37
|
+
* @param url - Deep link URL (e.g., "myapp://product?utm_source=facebook&ref=friend123")
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* import { Linking } from 'react-native';
|
|
42
|
+
*
|
|
43
|
+
* // Listen for deep links
|
|
44
|
+
* Linking.addEventListener('url', (event) => {
|
|
45
|
+
* formo.setTrafficSourceFromUrl(event.url);
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* // Or get initial URL
|
|
49
|
+
* Linking.getInitialURL().then((url) => {
|
|
50
|
+
* if (url) formo.setTrafficSourceFromUrl(url);
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
setTrafficSourceFromUrl(url: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Reset the current user session
|
|
57
|
+
*/
|
|
58
|
+
reset(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Clean up resources
|
|
61
|
+
*/
|
|
62
|
+
cleanup(): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Track wallet connect event
|
|
65
|
+
*/
|
|
66
|
+
connect({ chainId, address }: {
|
|
67
|
+
chainId: ChainID;
|
|
68
|
+
address: Address;
|
|
69
|
+
}, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Track wallet disconnect event
|
|
72
|
+
*/
|
|
73
|
+
disconnect(params?: {
|
|
74
|
+
chainId?: ChainID;
|
|
75
|
+
address?: Address;
|
|
76
|
+
}, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Track chain change event
|
|
79
|
+
*/
|
|
80
|
+
chain({ chainId, address }: {
|
|
81
|
+
chainId: ChainID;
|
|
82
|
+
address?: Address;
|
|
83
|
+
}, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Track signature event
|
|
86
|
+
*/
|
|
87
|
+
signature({ status, chainId, address, message, signatureHash, }: {
|
|
88
|
+
status: SignatureStatus;
|
|
89
|
+
chainId?: ChainID;
|
|
90
|
+
address: Address;
|
|
91
|
+
message: string;
|
|
92
|
+
signatureHash?: string;
|
|
93
|
+
}, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Track transaction event
|
|
96
|
+
*/
|
|
97
|
+
transaction({ status, chainId, address, data, to, value, transactionHash, function_name, function_args, }: {
|
|
98
|
+
status: TransactionStatus;
|
|
99
|
+
chainId: ChainID;
|
|
100
|
+
address: Address;
|
|
101
|
+
data?: string;
|
|
102
|
+
to?: string;
|
|
103
|
+
value?: string;
|
|
104
|
+
transactionHash?: string;
|
|
105
|
+
function_name?: string;
|
|
106
|
+
function_args?: Record<string, unknown>;
|
|
107
|
+
}, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Track identify event
|
|
110
|
+
*/
|
|
111
|
+
identify(params: {
|
|
112
|
+
address: Address;
|
|
113
|
+
providerName?: string;
|
|
114
|
+
userId?: string;
|
|
115
|
+
rdns?: string;
|
|
116
|
+
}, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Track detect wallet event
|
|
119
|
+
*/
|
|
120
|
+
detect({ providerName, rdns }: {
|
|
121
|
+
providerName: string;
|
|
122
|
+
rdns: string;
|
|
123
|
+
}, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Track custom event
|
|
126
|
+
*/
|
|
127
|
+
track(event: string, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Opt out of tracking
|
|
130
|
+
*/
|
|
131
|
+
optOutTracking(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Opt back into tracking
|
|
134
|
+
*/
|
|
135
|
+
optInTracking(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Check if user has opted out
|
|
138
|
+
*/
|
|
139
|
+
hasOptedOutTracking(): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Check if autocapture is enabled for event type
|
|
142
|
+
*/
|
|
143
|
+
isAutocaptureEnabled(eventType: "connect" | "disconnect" | "signature" | "transaction" | "chain" | "lifecycle"): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Internal method to track events
|
|
146
|
+
* This is the single enforcement point for shouldTrack() - all public tracking
|
|
147
|
+
* methods (track, screen, connect, etc.) route through here
|
|
148
|
+
*/
|
|
149
|
+
private trackEvent;
|
|
150
|
+
/**
|
|
151
|
+
* Check if tracking should be enabled
|
|
152
|
+
*/
|
|
153
|
+
private shouldTrack;
|
|
154
|
+
/**
|
|
155
|
+
* Validate and checksum address
|
|
156
|
+
*/
|
|
157
|
+
private validateAndChecksumAddress;
|
|
158
|
+
/**
|
|
159
|
+
* Flush pending events
|
|
160
|
+
*/
|
|
161
|
+
flush(): Promise<void>;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=FormoAnalytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormoAnalytics.d.ts","sourceRoot":"","sources":["../../src/FormoAnalytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { FC } from "react";
|
|
2
|
+
import { FormoAnalyticsProviderProps, IFormoAnalytics } from "./types";
|
|
3
|
+
export declare const FormoAnalyticsContext: React.Context<IFormoAnalytics>;
|
|
4
|
+
/**
|
|
5
|
+
* Formo Analytics Provider for React Native
|
|
6
|
+
*
|
|
7
|
+
* Wraps your app to provide analytics context
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
12
|
+
* import { FormoAnalyticsProvider } from '@formo/analytics-react-native';
|
|
13
|
+
*
|
|
14
|
+
* function App() {
|
|
15
|
+
* return (
|
|
16
|
+
* <FormoAnalyticsProvider
|
|
17
|
+
* writeKey="your-write-key"
|
|
18
|
+
* asyncStorage={AsyncStorage}
|
|
19
|
+
* options={{ wagmi: { config, queryClient } }}
|
|
20
|
+
* >
|
|
21
|
+
* <YourApp />
|
|
22
|
+
* </FormoAnalyticsProvider>
|
|
23
|
+
* );
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare const FormoAnalyticsProvider: FC<FormoAnalyticsProviderProps>;
|
|
28
|
+
export declare const useFormo: () => IFormoAnalytics;
|
|
29
|
+
//# sourceMappingURL=FormoAnalyticsProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormoAnalyticsProvider.d.ts","sourceRoot":"","sources":["../../src/FormoAnalyticsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAOZ,EAAE,EACH,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqBvE,eAAO,MAAM,qBAAqB,gCACc,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAwBlE,CAAC;AAgMF,eAAO,MAAM,QAAQ,QAAO,eAmB3B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const EVENTS_API_ORIGIN = "https://events.formo.so";
|
|
2
|
+
export declare const EVENTS_API_HOST = "https://events.formo.so/v0/raw_events";
|
|
3
|
+
export declare const EVENTS_API_REQUEST_HEADER: (writeKey: string) => {
|
|
4
|
+
"Content-Type": string;
|
|
5
|
+
Authorization: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const COUNTRY_LIST: Record<string, string>;
|
|
8
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/constants/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAC3D,eAAO,MAAM,eAAe,0CAAuC,CAAC;AAEpE,eAAO,MAAM,yBAAyB,GAAI,UAAU,MAAM;;;CAGxD,CAAC;AAGH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoD/C,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare enum EventType {
|
|
2
|
+
PAGE = "page",
|
|
3
|
+
SCREEN = "screen",
|
|
4
|
+
IDENTIFY = "identify",
|
|
5
|
+
DETECT = "detect",
|
|
6
|
+
CONNECT = "connect",
|
|
7
|
+
DISCONNECT = "disconnect",
|
|
8
|
+
CHAIN = "chain",
|
|
9
|
+
SIGNATURE = "signature",
|
|
10
|
+
TRANSACTION = "transaction",
|
|
11
|
+
TRACK = "track"
|
|
12
|
+
}
|
|
13
|
+
export declare enum EventChannel {
|
|
14
|
+
WEB = "web",
|
|
15
|
+
MOBILE = "mobile",
|
|
16
|
+
SERVER = "server",
|
|
17
|
+
SOURCE = "source"
|
|
18
|
+
}
|
|
19
|
+
export type TEventType = Lowercase<EventType>;
|
|
20
|
+
export type TEventChannel = Lowercase<EventChannel>;
|
|
21
|
+
export declare const CHANNEL: TEventChannel;
|
|
22
|
+
export declare const VERSION = "1";
|
|
23
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/constants/events.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAChB;AAED,oBAAY,YAAY;IACtB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AAC9C,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAGpD,eAAO,MAAM,OAAO,EAAE,aAAwB,CAAC;AAC/C,eAAO,MAAM,OAAO,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const STORAGE_PREFIX = "formo_rn_";
|
|
2
|
+
export declare const LOCAL_ANONYMOUS_ID_KEY = "anonymous_id";
|
|
3
|
+
export declare const LOCAL_APP_VERSION_KEY = "app_version";
|
|
4
|
+
export declare const LOCAL_APP_BUILD_KEY = "app_build";
|
|
5
|
+
export declare const SESSION_USER_ID_KEY = "user_id";
|
|
6
|
+
export declare const SESSION_TRAFFIC_SOURCE_KEY = "traffic_source";
|
|
7
|
+
export declare const SESSION_WALLET_DETECTED_KEY = "wallet_detected";
|
|
8
|
+
export declare const SESSION_WALLET_IDENTIFIED_KEY = "wallet_identified";
|
|
9
|
+
export declare const CONSENT_OPT_OUT_KEY = "opt_out_tracking";
|
|
10
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/constants/storage.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,cAAc,CAAC;AAG1C,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AACrD,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AACnD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAG/C,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAC7C,eAAO,MAAM,0BAA0B,mBAAmB,CAAC;AAC3D,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAC7D,eAAO,MAAM,6BAA6B,sBAAsB,CAAC;AAGjE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formo Analytics SDK for React Native
|
|
3
|
+
*
|
|
4
|
+
* Track wallet events and user analytics in mobile dApps
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
9
|
+
* import { FormoAnalyticsProvider, useFormo } from '@formo/analytics-react-native';
|
|
10
|
+
*
|
|
11
|
+
* // Wrap your app with the provider
|
|
12
|
+
* function App() {
|
|
13
|
+
* return (
|
|
14
|
+
* <FormoAnalyticsProvider
|
|
15
|
+
* writeKey="your-write-key"
|
|
16
|
+
* asyncStorage={AsyncStorage}
|
|
17
|
+
* options={{
|
|
18
|
+
* wagmi: { config, queryClient },
|
|
19
|
+
* app: { name: 'MyApp', version: '1.0.0' },
|
|
20
|
+
* }}
|
|
21
|
+
* >
|
|
22
|
+
* <YourApp />
|
|
23
|
+
* </FormoAnalyticsProvider>
|
|
24
|
+
* );
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* // Use the hook in your components
|
|
28
|
+
* function MyScreen() {
|
|
29
|
+
* const formo = useFormo();
|
|
30
|
+
*
|
|
31
|
+
* useEffect(() => {
|
|
32
|
+
* formo.screen('Home');
|
|
33
|
+
* }, []);
|
|
34
|
+
*
|
|
35
|
+
* return <View>...</View>;
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export { FormoAnalytics } from "./FormoAnalytics";
|
|
40
|
+
export { FormoAnalyticsProvider, FormoAnalyticsContext, useFormo, } from "./FormoAnalyticsProvider";
|
|
41
|
+
export * from "./types";
|
|
42
|
+
export { SignatureStatus, TransactionStatus } from "./types/events";
|
|
43
|
+
export type { AsyncStorageInterface } from "./lib/storage";
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,QAAQ,GACT,MAAM,0BAA0B,CAAC;AAGlC,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Set a consent flag
|
|
3
|
+
*/
|
|
4
|
+
export declare function setConsentFlag(writeKey: string, key: string, value: string): void;
|
|
5
|
+
/**
|
|
6
|
+
* Get a consent flag
|
|
7
|
+
*/
|
|
8
|
+
export declare function getConsentFlag(writeKey: string, key: string): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* Remove a consent flag
|
|
11
|
+
*/
|
|
12
|
+
export declare function removeConsentFlag(writeKey: string, key: string): void;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/consent/index.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,IAAI,CAON;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAOrE"}
|