@formo/analytics-react-native 1.0.0 → 1.0.2
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/lib/commonjs/FormoAnalytics.js +141 -12
- package/lib/commonjs/FormoAnalytics.js.map +1 -1
- package/lib/commonjs/FormoAnalyticsProvider.js +3 -0
- package/lib/commonjs/FormoAnalyticsProvider.js.map +1 -1
- package/lib/commonjs/constants/events.js +30 -3
- package/lib/commonjs/constants/events.js.map +1 -1
- package/lib/commonjs/lib/crash/index.js +121 -0
- package/lib/commonjs/lib/crash/index.js.map +1 -0
- package/lib/commonjs/lib/event/EventFactory.js +88 -8
- package/lib/commonjs/lib/event/EventFactory.js.map +1 -1
- package/lib/commonjs/lib/lifecycle/index.js +29 -6
- package/lib/commonjs/lib/lifecycle/index.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/FormoAnalytics.js +138 -8
- package/lib/module/FormoAnalytics.js.map +1 -1
- package/lib/module/FormoAnalyticsProvider.js +3 -0
- package/lib/module/FormoAnalyticsProvider.js.map +1 -1
- package/lib/module/constants/events.js +29 -2
- package/lib/module/constants/events.js.map +1 -1
- package/lib/module/lib/crash/index.js +117 -0
- package/lib/module/lib/crash/index.js.map +1 -0
- package/lib/module/lib/event/EventFactory.js +86 -8
- package/lib/module/lib/event/EventFactory.js.map +1 -1
- package/lib/module/lib/lifecycle/index.js +29 -6
- package/lib/module/lib/lifecycle/index.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/commonjs/FormoAnalytics.d.ts +52 -1
- package/lib/typescript/commonjs/FormoAnalytics.d.ts.map +1 -1
- package/lib/typescript/commonjs/FormoAnalyticsProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/constants/events.d.ts +23 -0
- package/lib/typescript/commonjs/constants/events.d.ts.map +1 -1
- package/lib/typescript/commonjs/lib/crash/index.d.ts +41 -0
- package/lib/typescript/commonjs/lib/crash/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/event/EventFactory.d.ts +26 -7
- package/lib/typescript/commonjs/lib/event/EventFactory.d.ts.map +1 -1
- package/lib/typescript/commonjs/lib/lifecycle/index.d.ts +10 -0
- package/lib/typescript/commonjs/lib/lifecycle/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/types/base.d.ts +40 -0
- package/lib/typescript/commonjs/types/base.d.ts.map +1 -1
- package/lib/typescript/commonjs/version.d.ts +1 -1
- package/lib/typescript/module/FormoAnalytics.d.ts +52 -1
- package/lib/typescript/module/FormoAnalytics.d.ts.map +1 -1
- package/lib/typescript/module/FormoAnalyticsProvider.d.ts.map +1 -1
- package/lib/typescript/module/constants/events.d.ts +23 -0
- package/lib/typescript/module/constants/events.d.ts.map +1 -1
- package/lib/typescript/module/lib/crash/index.d.ts +41 -0
- package/lib/typescript/module/lib/crash/index.d.ts.map +1 -0
- package/lib/typescript/module/lib/event/EventFactory.d.ts +26 -7
- package/lib/typescript/module/lib/event/EventFactory.d.ts.map +1 -1
- package/lib/typescript/module/lib/lifecycle/index.d.ts +10 -0
- package/lib/typescript/module/lib/lifecycle/index.d.ts.map +1 -1
- package/lib/typescript/module/types/base.d.ts +40 -0
- package/lib/typescript/module/types/base.d.ts.map +1 -1
- package/lib/typescript/module/version.d.ts +1 -1
- package/package.json +8 -8
- package/src/FormoAnalytics.ts +151 -8
- package/src/FormoAnalyticsProvider.tsx +3 -0
- package/src/constants/events.ts +32 -2
- package/src/lib/crash/index.ts +145 -0
- package/src/lib/event/EventFactory.ts +115 -21
- package/src/lib/lifecycle/index.ts +35 -6
- package/src/types/base.ts +47 -0
- package/src/version.ts +1 -1
|
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.EventFactory = void 0;
|
|
7
|
+
exports.buildScreenUrl = buildScreenUrl;
|
|
7
8
|
exports.getSessionId = getSessionId;
|
|
9
|
+
exports.resolveExpoDeviceType = resolveExpoDeviceType;
|
|
8
10
|
exports.synthesizeUserAgent = synthesizeUserAgent;
|
|
9
11
|
var _reactNative = require("react-native");
|
|
10
12
|
var _netinfo = _interopRequireDefault(require("@react-native-community/netinfo"));
|
|
@@ -92,6 +94,49 @@ function getSessionId() {
|
|
|
92
94
|
* containing the tokens the classifier keys off (iphone/ipad/android + version)
|
|
93
95
|
* so mobile device and OS resolve correctly. Returns "" for unknown platforms.
|
|
94
96
|
*/
|
|
97
|
+
/**
|
|
98
|
+
* Resolve `device_type` from expo-device's `deviceType` enum.
|
|
99
|
+
*
|
|
100
|
+
* Extracted and guarded because the Expo branch of getDeviceInfo() runs when
|
|
101
|
+
* EITHER expo-device or expo-application is installed, so `deviceType` may be
|
|
102
|
+
* undefined. A bare `deviceType === DeviceType.TABLET` is then
|
|
103
|
+
* `undefined === undefined` — true — and every device reports as a tablet,
|
|
104
|
+
* which also flips the synthesized user agent to iPad/Tablet and corrupts
|
|
105
|
+
* device breakdowns downstream. Unknown means "mobile", the safe default for a
|
|
106
|
+
* React Native app.
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Compose a screen view's `page_url` as `app://<bundle id>/<screen>`.
|
|
111
|
+
*
|
|
112
|
+
* Well-formed on purpose: the bundle id occupies the authority slot and the
|
|
113
|
+
* screen the path, so a standard URL parser yields both without any
|
|
114
|
+
* mobile-specific handling — the same shape as `https://<host>/<path>`.
|
|
115
|
+
*
|
|
116
|
+
* @param bundleId Application bundle id, e.g. "com.acme.wallet". When empty the
|
|
117
|
+
* authority is omitted (`app:///<screen>`), which still parses to a correct
|
|
118
|
+
* path; the pipeline resolves origin from context in that case.
|
|
119
|
+
* @param name Screen name. Leading slashes are stripped so a router-style name
|
|
120
|
+
* ("/tabs/leaderboard") does not produce a doubled separator.
|
|
121
|
+
*/
|
|
122
|
+
function buildScreenUrl(bundleId, name) {
|
|
123
|
+
const screen = (name ?? "").replace(/^\/+/, "")
|
|
124
|
+
// Percent-encode the characters that would otherwise change the URL's
|
|
125
|
+
// STRUCTURE rather than its path. '?' starts a query and '#' a fragment, so
|
|
126
|
+
// screen("Checkout?coupon=X") would parse with pathname "/Checkout" and the
|
|
127
|
+
// rest silently dropped from the screen name. '/' is deliberately NOT
|
|
128
|
+
// encoded — router-style names like "/tabs/leaderboard" are meant to be
|
|
129
|
+
// path segments.
|
|
130
|
+
// '%' FIRST, so the transform stays injective. Without it a screen literally
|
|
131
|
+
// named "Checkout%3Fx" and one named "Checkout?x" both produce
|
|
132
|
+
// ".../Checkout%3Fx" and two distinct screens merge in the analytics.
|
|
133
|
+
.replace(/%/g, "%25").replace(/\?/g, "%3F").replace(/#/g, "%23");
|
|
134
|
+
return `app://${bundleId ?? ""}/${screen}`;
|
|
135
|
+
}
|
|
136
|
+
function resolveExpoDeviceType(deviceType, tabletEnumValue) {
|
|
137
|
+
if (deviceType == null || tabletEnumValue == null) return "mobile";
|
|
138
|
+
return deviceType === tabletEnumValue ? "tablet" : "mobile";
|
|
139
|
+
}
|
|
95
140
|
function synthesizeUserAgent(info) {
|
|
96
141
|
const os = (info.os_name || "").toLowerCase();
|
|
97
142
|
const version = info.os_version || "";
|
|
@@ -114,6 +159,8 @@ function synthesizeUserAgent(info) {
|
|
|
114
159
|
* Creates event payloads with mobile-specific context
|
|
115
160
|
*/
|
|
116
161
|
class EventFactory {
|
|
162
|
+
/** Memoised device/app identity — see getDeviceInfo(). */
|
|
163
|
+
|
|
117
164
|
constructor(options) {
|
|
118
165
|
this.options = options;
|
|
119
166
|
}
|
|
@@ -221,7 +268,28 @@ class EventFactory {
|
|
|
221
268
|
* Get device information
|
|
222
269
|
* Supports both react-native-device-info (bare RN) and expo-device/expo-application (Expo Go)
|
|
223
270
|
*/
|
|
271
|
+
/**
|
|
272
|
+
* The app bundle id as it will appear in context.
|
|
273
|
+
*
|
|
274
|
+
* Must mirror generateContext's precedence: an explicitly configured
|
|
275
|
+
* `options.app.bundleId` overrides whatever the native modules report. Reading
|
|
276
|
+
* getDeviceInfo() alone would ignore that configuration and silently fall back
|
|
277
|
+
* to the authority-less URL form — and on React Native Web, where neither
|
|
278
|
+
* react-native-device-info nor expo-application resolves a bundle id, that is
|
|
279
|
+
* the ONLY value available.
|
|
280
|
+
*/
|
|
281
|
+
async resolveAppBundleId() {
|
|
282
|
+
return this.options?.app?.bundleId || (await this.getDeviceInfo()).app_bundle_id || "";
|
|
283
|
+
}
|
|
224
284
|
async getDeviceInfo() {
|
|
285
|
+
// Device and app identity do not change for the lifetime of the process,
|
|
286
|
+
// and resolving them crosses the native bridge. Memoise the promise so
|
|
287
|
+
// every event after the first is free, and so callers that need only the
|
|
288
|
+
// app identifier (screen events) can ask without paying twice.
|
|
289
|
+
this.deviceInfoPromise ??= this.resolveDeviceInfo();
|
|
290
|
+
return this.deviceInfoPromise;
|
|
291
|
+
}
|
|
292
|
+
async resolveDeviceInfo() {
|
|
225
293
|
// Try react-native-device-info first (bare RN and Expo dev builds)
|
|
226
294
|
if (DeviceInfo) {
|
|
227
295
|
try {
|
|
@@ -255,11 +323,10 @@ class EventFactory {
|
|
|
255
323
|
// Fall back to Expo modules (Expo Go)
|
|
256
324
|
if (ExpoDevice || ExpoApplication) {
|
|
257
325
|
try {
|
|
258
|
-
const isTablet = ExpoDevice?.deviceType === ExpoDevice?.DeviceType?.TABLET;
|
|
259
326
|
const os_name = ExpoDevice?.osName || _reactNative.Platform.OS;
|
|
260
327
|
const os_version = ExpoDevice?.osVersion || String(_reactNative.Platform.Version);
|
|
261
328
|
const device_model = ExpoDevice?.modelName || "Unknown";
|
|
262
|
-
const device_type =
|
|
329
|
+
const device_type = resolveExpoDeviceType(ExpoDevice?.deviceType, ExpoDevice?.DeviceType?.TABLET);
|
|
263
330
|
return {
|
|
264
331
|
os_name,
|
|
265
332
|
os_version,
|
|
@@ -406,15 +473,28 @@ class EventFactory {
|
|
|
406
473
|
};
|
|
407
474
|
|
|
408
475
|
// Map screen name to page-equivalent context fields so mobile screens flow
|
|
409
|
-
// through the same analytics as web page views.
|
|
410
|
-
//
|
|
411
|
-
//
|
|
412
|
-
//
|
|
413
|
-
// host
|
|
476
|
+
// through the same analytics as web page views.
|
|
477
|
+
//
|
|
478
|
+
// The URL is app://<bundle id>/<screen>, which is a WELL-FORMED URL: the
|
|
479
|
+
// bundle id is the authority and the screen is the path, exactly mirroring
|
|
480
|
+
// https://<host>/<path> on web. That is what lets the ingestion pipeline
|
|
481
|
+
// parse it with the same URL functions it uses for web — the authority
|
|
482
|
+
// becomes `origin` and the path becomes `page_path`, with no mobile
|
|
483
|
+
// special-casing.
|
|
484
|
+
//
|
|
485
|
+
// The earlier form was app://<screen>, which is malformed: the screen name
|
|
486
|
+
// lands in the authority slot and there is no path at all, so a URL parser
|
|
487
|
+
// yields an empty path and the pipeline had to reconstruct both fields by
|
|
488
|
+
// hand. The bundle id is also the right choice of authority because, like a
|
|
489
|
+
// hostname, it is stable and globally unique — a display name is neither.
|
|
490
|
+
//
|
|
491
|
+
// Falls back to an empty authority (app:///<screen>) when the bundle id is
|
|
492
|
+
// unavailable, which keeps the path parseable and lets the pipeline resolve
|
|
493
|
+
// origin from context instead.
|
|
414
494
|
// User-supplied context values take precedence (spread last).
|
|
415
495
|
const screenContext = {
|
|
416
496
|
page_title: name,
|
|
417
|
-
page_url:
|
|
497
|
+
page_url: buildScreenUrl(await this.resolveAppBundleId(), name),
|
|
418
498
|
...(context ?? {})
|
|
419
499
|
};
|
|
420
500
|
const screenEvent = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_netinfo","_interopRequireDefault","_index","_index2","_timestamp","_hash","_index3","_index4","_version","e","__esModule","default","DeviceInfo","ExpoDevice","ExpoApplication","generateAnonymousId","key","existing","storage","get","newId","generateUUID","set","getSessionId","now","Date","existingId","LOCAL_SESSION_ID_KEY","lastActivityRaw","LOCAL_SESSION_LAST_ACTIVITY_KEY","lastActivity","parseInt","isExpired","SESSION_TIMEOUT_MS","sessionId","String","synthesizeUserAgent","info","os","os_name","toLowerCase","version","os_version","model","device_model","isTablet","device_type","device","osVersion","replace","formFactor","EventFactory","constructor","options","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","error","logger","getLocation","timezone","COUNTRY_LIST","getLanguage","locale","Platform","OS","NativeModules","SettingsManager","settings","AppleLocale","AppleLanguages","I18nManager","localeIdentifier","debug","getScreen","width","height","scale","Dimensions","screen_width","Math","round","screen_height","screen_density","getNetworkInfo","netState","NetInfo","fetch","networkInfo","type","network_wifi","network_cellular","details","network_carrier","carrier","undefined","getDeviceInfo","manufacturer","deviceName","userAgent","Promise","all","getModel","getManufacturer","getDeviceName","getUserAgent","getSystemVersion","device_manufacturer","device_name","user_agent","app_name","getApplicationName","app_version","getVersion","app_build","getBuildNumber","app_bundle_id","getBundleId","deviceType","DeviceType","TABLET","osName","Version","modelName","applicationName","nativeApplicationVersion","nativeBuildVersion","applicationId","generateContext","context","language","location","deviceInfo","screenInfo","storedTrafficSource","getStoredTrafficSource","defaultContext","library_name","library_version","SDK_VERSION","app","name","build","bundleId","mergedContext","mergeDeepRight","getEnrichedEvent","formoEvent","commonEventData","original_timestamp","getCurrentTimeFormatted","user_id","channel","CHANNEL","VERSION","anonymous_id","LOCAL_ANONYMOUS_ID_KEY","session_id","validAddress","address","validateAddress","processedEvent","event","properties","functionArgs","function_args","converted","toSnakeCase","generateScreenEvent","category","props","screenContext","page_title","page_url","screenEvent","generateDetectWalletEvent","providerName","rdns","detectEvent","generateIdentifyEvent","userId","identifyEvent","generateConnectEvent","chainId","connectEvent","generateDisconnectEvent","disconnectEvent","generateChainChangedEvent","chainEvent","generateSignatureEvent","status","message","signatureEvent","generateTransactionEvent","data","to","value","transactionHash","function_name","transactionEvent","generateTrackEvent","trackEvent","revenue","Number","currency","points","volume","create","exports"],"sourceRoot":"../../../../src","sources":["lib/event/EventFactory.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_netinfo","_interopRequireDefault","_index","_index2","_timestamp","_hash","_index3","_index4","_version","e","__esModule","default","DeviceInfo","ExpoDevice","ExpoApplication","generateAnonymousId","key","existing","storage","get","newId","generateUUID","set","getSessionId","now","Date","existingId","LOCAL_SESSION_ID_KEY","lastActivityRaw","LOCAL_SESSION_LAST_ACTIVITY_KEY","lastActivity","parseInt","isExpired","SESSION_TIMEOUT_MS","sessionId","String","buildScreenUrl","bundleId","name","screen","replace","resolveExpoDeviceType","deviceType","tabletEnumValue","synthesizeUserAgent","info","os","os_name","toLowerCase","version","os_version","model","device_model","isTablet","device_type","device","osVersion","formFactor","EventFactory","constructor","options","getTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","error","logger","getLocation","timezone","COUNTRY_LIST","getLanguage","locale","Platform","OS","NativeModules","SettingsManager","settings","AppleLocale","AppleLanguages","I18nManager","localeIdentifier","debug","getScreen","width","height","scale","Dimensions","screen_width","Math","round","screen_height","screen_density","getNetworkInfo","netState","NetInfo","fetch","networkInfo","type","network_wifi","network_cellular","details","network_carrier","carrier","undefined","resolveAppBundleId","app","getDeviceInfo","app_bundle_id","deviceInfoPromise","resolveDeviceInfo","manufacturer","deviceName","userAgent","Promise","all","getModel","getManufacturer","getDeviceName","getUserAgent","getSystemVersion","device_manufacturer","device_name","user_agent","app_name","getApplicationName","app_version","getVersion","app_build","getBuildNumber","getBundleId","osName","Version","modelName","DeviceType","TABLET","applicationName","nativeApplicationVersion","nativeBuildVersion","applicationId","generateContext","context","language","location","deviceInfo","screenInfo","storedTrafficSource","getStoredTrafficSource","defaultContext","library_name","library_version","SDK_VERSION","build","mergedContext","mergeDeepRight","getEnrichedEvent","formoEvent","commonEventData","original_timestamp","getCurrentTimeFormatted","user_id","channel","CHANNEL","VERSION","anonymous_id","LOCAL_ANONYMOUS_ID_KEY","session_id","validAddress","address","validateAddress","processedEvent","event","properties","functionArgs","function_args","converted","toSnakeCase","generateScreenEvent","category","props","screenContext","page_title","page_url","screenEvent","generateDetectWalletEvent","providerName","rdns","detectEvent","generateIdentifyEvent","userId","identifyEvent","generateConnectEvent","chainId","connectEvent","generateDisconnectEvent","disconnectEvent","generateChainChangedEvent","chainEvent","generateSignatureEvent","status","message","signatureEvent","generateTransactionEvent","data","to","value","transactionHash","function_name","transactionEvent","generateTrackEvent","trackEvent","revenue","Number","currency","points","volume","create","exports"],"sourceRoot":"../../../../src","sources":["lib/event/EventFactory.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,6 +9,7 @@ var _index = require("../logger/index.js");
|
|
|
9
9
|
var _index2 = require("../storage/index.js");
|
|
10
10
|
var _storage = require("../../constants/storage.js");
|
|
11
11
|
var _trafficSource = require("../../utils/trafficSource.js");
|
|
12
|
+
var _events = require("../../constants/events.js");
|
|
12
13
|
/**
|
|
13
14
|
* Application Lifecycle Event Manager
|
|
14
15
|
*
|
|
@@ -17,8 +18,15 @@ var _trafficSource = require("../../utils/trafficSource.js");
|
|
|
17
18
|
* - Application Updated (version/build changed)
|
|
18
19
|
* - Application Opened (every cold start + foreground return)
|
|
19
20
|
* - Application Backgrounded (app goes to background)
|
|
21
|
+
* - Application Foregrounded (foreground return; opt-in, see AutocaptureOptions)
|
|
20
22
|
*
|
|
21
23
|
* Detection is JS-side using AsyncStorage (no native modules required).
|
|
24
|
+
*
|
|
25
|
+
* The remaining spec events live outside this manager because they are not
|
|
26
|
+
* AppState-driven: `Deep Link Opened` is emitted from the Linking hook in
|
|
27
|
+
* FormoAnalytics, `Application Crashed` from lib/crash, and the push
|
|
28
|
+
* notification events from explicit FormoAnalytics methods (the SDK cannot
|
|
29
|
+
* observe push delivery without a native module).
|
|
22
30
|
*/
|
|
23
31
|
|
|
24
32
|
/** Interface for the analytics instance to avoid circular deps */
|
|
@@ -71,6 +79,7 @@ class AppLifecycleManager {
|
|
|
71
79
|
version: "",
|
|
72
80
|
build: ""
|
|
73
81
|
};
|
|
82
|
+
trackForegrounded = false;
|
|
74
83
|
constructor(analytics) {
|
|
75
84
|
this.analytics = analytics;
|
|
76
85
|
}
|
|
@@ -79,7 +88,8 @@ class AppLifecycleManager {
|
|
|
79
88
|
* Initialize lifecycle tracking.
|
|
80
89
|
* Detects install/update, fires Application Opened, and sets up AppState listener.
|
|
81
90
|
*/
|
|
82
|
-
async start(appOptions) {
|
|
91
|
+
async start(appOptions, options) {
|
|
92
|
+
this.trackForegrounded = options?.trackForegrounded ?? false;
|
|
83
93
|
this.appVersionInfo = await resolveAppVersionInfo(appOptions);
|
|
84
94
|
|
|
85
95
|
// Detect install vs update
|
|
@@ -95,7 +105,7 @@ class AppLifecycleManager {
|
|
|
95
105
|
} catch {
|
|
96
106
|
// Linking not available
|
|
97
107
|
}
|
|
98
|
-
await this.analytics.track(
|
|
108
|
+
await this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_OPENED, {
|
|
99
109
|
version: this.appVersionInfo.version,
|
|
100
110
|
build: this.appVersionInfo.build,
|
|
101
111
|
from_background: false,
|
|
@@ -135,7 +145,7 @@ class AppLifecycleManager {
|
|
|
135
145
|
const trafficSource = (0, _trafficSource.getStoredTrafficSource)() ?? {};
|
|
136
146
|
const attribution = Object.fromEntries(Object.entries(trafficSource).filter(([, value]) => Boolean(value)));
|
|
137
147
|
_index.logger.info("AppLifecycleManager: Application Installed");
|
|
138
|
-
await this.analytics.track(
|
|
148
|
+
await this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_INSTALLED, {
|
|
139
149
|
version,
|
|
140
150
|
build,
|
|
141
151
|
...attribution
|
|
@@ -143,7 +153,7 @@ class AppLifecycleManager {
|
|
|
143
153
|
} else if (previousVersion !== version || previousBuild !== build) {
|
|
144
154
|
// Version or build changed — update
|
|
145
155
|
_index.logger.info("AppLifecycleManager: Application Updated");
|
|
146
|
-
await this.analytics.track(
|
|
156
|
+
await this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_UPDATED, {
|
|
147
157
|
version,
|
|
148
158
|
build,
|
|
149
159
|
previous_version: previousVersion || "",
|
|
@@ -168,17 +178,30 @@ class AppLifecycleManager {
|
|
|
168
178
|
}
|
|
169
179
|
if (nextAppState === "active" && this.lastAppState === "background") {
|
|
170
180
|
// Returning from background
|
|
171
|
-
this.analytics.track(
|
|
181
|
+
this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_OPENED, {
|
|
172
182
|
version: this.appVersionInfo.version,
|
|
173
183
|
build: this.appVersionInfo.build,
|
|
174
184
|
from_background: true
|
|
175
185
|
}).catch(error => {
|
|
176
186
|
_index.logger.error("AppLifecycleManager: Error tracking Application Opened", error);
|
|
177
187
|
});
|
|
188
|
+
|
|
189
|
+
// The Segment spec's dedicated name for this same transition. Opt-in,
|
|
190
|
+
// because emitting it alongside Application Opened doubles foreground
|
|
191
|
+
// volume for no extra information — it exists for consumers that key on
|
|
192
|
+
// the spec name rather than on `from_background`.
|
|
193
|
+
if (this.trackForegrounded) {
|
|
194
|
+
this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_FOREGROUNDED, {
|
|
195
|
+
version: this.appVersionInfo.version,
|
|
196
|
+
build: this.appVersionInfo.build
|
|
197
|
+
}).catch(error => {
|
|
198
|
+
_index.logger.error("AppLifecycleManager: Error tracking Application Foregrounded", error);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
178
201
|
}
|
|
179
202
|
if (nextAppState === "background" && this.lastAppState === "active") {
|
|
180
203
|
// Going to background
|
|
181
|
-
this.analytics.track(
|
|
204
|
+
this.analytics.track(_events.LIFECYCLE_EVENT.APPLICATION_BACKGROUNDED, {
|
|
182
205
|
version: this.appVersionInfo.version,
|
|
183
206
|
build: this.appVersionInfo.build
|
|
184
207
|
}).catch(error => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_index","_index2","_storage","_trafficSource","resolveAppVersionInfo","appOptions","version","build","DeviceInfo","default","getVersion","getBuildNumber","ExpoApplication","nativeApplicationVersion","nativeBuildVersion","AppLifecycleManager","appStateSubscription","lastAppState","AppState","currentState","appVersionInfo","constructor","analytics","start","detectInstallOrUpdate","initialUrl","url","Linking","getInitialURL","track","from_background","addEventListener","handleAppStateChange","bind","logger","info","manager","getStorageManager","hasPersistentStorage","warn","previousVersion","storage","get","LOCAL_APP_VERSION_KEY","previousBuild","LOCAL_APP_BUILD_KEY","trafficSource","getStoredTrafficSource","attribution","Object","fromEntries","entries","filter","value","Boolean","previous_version","previous_build","setAsync","nextAppState","catch","error","cleanup","remove","exports"],"sourceRoot":"../../../../src","sources":["lib/lifecycle/index.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_index","_index2","_storage","_trafficSource","_events","resolveAppVersionInfo","appOptions","version","build","DeviceInfo","default","getVersion","getBuildNumber","ExpoApplication","nativeApplicationVersion","nativeBuildVersion","AppLifecycleManager","appStateSubscription","lastAppState","AppState","currentState","appVersionInfo","trackForegrounded","constructor","analytics","start","options","detectInstallOrUpdate","initialUrl","url","Linking","getInitialURL","track","LIFECYCLE_EVENT","APPLICATION_OPENED","from_background","addEventListener","handleAppStateChange","bind","logger","info","manager","getStorageManager","hasPersistentStorage","warn","previousVersion","storage","get","LOCAL_APP_VERSION_KEY","previousBuild","LOCAL_APP_BUILD_KEY","trafficSource","getStoredTrafficSource","attribution","Object","fromEntries","entries","filter","value","Boolean","APPLICATION_INSTALLED","APPLICATION_UPDATED","previous_version","previous_build","setAsync","nextAppState","catch","error","APPLICATION_FOREGROUNDED","APPLICATION_BACKGROUNDED","cleanup","remove","exports"],"sourceRoot":"../../../../src","sources":["lib/lifecycle/index.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/version.js
CHANGED
|
@@ -6,5 +6,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.version = void 0;
|
|
7
7
|
// This file is auto-generated by scripts/update-version.js during npm version
|
|
8
8
|
// Do not edit manually - it will be overwritten
|
|
9
|
-
const version = exports.version = '1.0.
|
|
9
|
+
const version = exports.version = '1.0.2';
|
|
10
10
|
//# sourceMappingURL=version.js.map
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { EVENTS_API_HOST, EventType, LOCAL_ANONYMOUS_ID_KEY, LOCAL_SESSION_ID_KEY, LOCAL_SESSION_LAST_ACTIVITY_KEY, SESSION_USER_ID_KEY, CONSENT_OPT_OUT_KEY } from "./constants/index.js";
|
|
10
|
+
import { LIFECYCLE_EVENT } from "./constants/events.js";
|
|
10
11
|
import { initStorageManager, storage } from "./lib/storage/index.js";
|
|
11
12
|
import { EventManager, EventQueue } from "./lib/event/index.js";
|
|
12
13
|
import { logger, Logger } from "./lib/logger/index.js";
|
|
@@ -14,10 +15,18 @@ import { setConsentFlag, getConsentFlag, removeConsentFlag } from "./lib/consent
|
|
|
14
15
|
import { FormoAnalyticsSession } from "./lib/session/index.js";
|
|
15
16
|
import { WagmiEventHandler } from "./lib/wagmi/index.js";
|
|
16
17
|
import { AppLifecycleManager } from "./lib/lifecycle/index.js";
|
|
18
|
+
import { CrashReporter } from "./lib/crash/index.js";
|
|
17
19
|
import { validateAddress } from "./utils/index.js";
|
|
18
20
|
import { parseTrafficSource, updateStoredTrafficSource } from "./utils/trafficSource.js";
|
|
19
21
|
import { captureInstallReferrer } from "./lib/installReferrer/index.js";
|
|
20
22
|
import { Linking } from "react-native";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Autocapture behaviors that are OFF unless explicitly enabled, because
|
|
26
|
+
* turning them on by default would change how an existing app behaves after a
|
|
27
|
+
* routine SDK upgrade. See AutocaptureOptions for the reasoning per option.
|
|
28
|
+
*/
|
|
29
|
+
const OPT_IN_AUTOCAPTURE = new Set(["foregrounded", "crashes"]);
|
|
21
30
|
export class FormoAnalytics {
|
|
22
31
|
currentUserId = "";
|
|
23
32
|
constructor(writeKey, options = {}) {
|
|
@@ -97,7 +106,13 @@ export class FormoAnalytics {
|
|
|
97
106
|
// is a fast native bridge call; the Android Play Install Referrer is a fast
|
|
98
107
|
// one-shot native call (and no-ops instantly when the native module or the
|
|
99
108
|
// platform isn't Android), so awaiting it does not meaningfully delay init.
|
|
100
|
-
if
|
|
109
|
+
// Hook Linking if EITHER consumer needs it. The two flags control different
|
|
110
|
+
// things — attribution.deeplinks parses UTMs into context, autocapture
|
|
111
|
+
// .deepLinks emits Deep Link Opened — but both depend on observing the link
|
|
112
|
+
// in the first place. Gating the hook on attribution alone silently
|
|
113
|
+
// disabled the event for anyone who turned attribution off, with no
|
|
114
|
+
// indication that an unrelated setting was responsible.
|
|
115
|
+
if (analytics.isAttributionEnabled("deeplinks") || analytics.isAutocaptureEnabled("deepLinks")) {
|
|
101
116
|
try {
|
|
102
117
|
await analytics.startDeepLinkCapture();
|
|
103
118
|
} catch (error) {
|
|
@@ -120,12 +135,32 @@ export class FormoAnalytics {
|
|
|
120
135
|
if (analytics.isAutocaptureEnabled("lifecycle")) {
|
|
121
136
|
try {
|
|
122
137
|
analytics.lifecycleManager = new AppLifecycleManager(analytics);
|
|
123
|
-
await analytics.lifecycleManager.start(options?.app
|
|
138
|
+
await analytics.lifecycleManager.start(options?.app, {
|
|
139
|
+
trackForegrounded: analytics.isAutocaptureEnabled("foregrounded")
|
|
140
|
+
});
|
|
124
141
|
} catch (error) {
|
|
125
142
|
logger.error("FormoAnalytics: Failed to initialize lifecycle tracking", error);
|
|
126
143
|
}
|
|
127
144
|
}
|
|
128
145
|
|
|
146
|
+
// Emit Deep Link Opened for the launch URL AFTER lifecycle tracking, so it
|
|
147
|
+
// follows Application Opened as the Segment spec orders it.
|
|
148
|
+
try {
|
|
149
|
+
await analytics.trackInitialDeepLink();
|
|
150
|
+
} catch (error) {
|
|
151
|
+
logger.error("FormoAnalytics: Failed to track initial deep link", error);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Opt-in: installs a global JS error handler (chained, never swallowing).
|
|
155
|
+
if (analytics.isAutocaptureEnabled("crashes")) {
|
|
156
|
+
try {
|
|
157
|
+
analytics.crashReporter = new CrashReporter(analytics);
|
|
158
|
+
analytics.crashReporter.start();
|
|
159
|
+
} catch (error) {
|
|
160
|
+
logger.error("FormoAnalytics: Failed to initialize crash tracking", error);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
129
164
|
// Call ready callback
|
|
130
165
|
if (options?.ready) {
|
|
131
166
|
options.ready(analytics);
|
|
@@ -141,17 +176,98 @@ export class FormoAnalytics {
|
|
|
141
176
|
async startDeepLinkCapture() {
|
|
142
177
|
try {
|
|
143
178
|
const url = await Linking.getInitialURL();
|
|
144
|
-
if (url)
|
|
179
|
+
if (url) {
|
|
180
|
+
if (this.isAttributionEnabled("deeplinks")) {
|
|
181
|
+
this.setTrafficSourceFromUrl(url);
|
|
182
|
+
}
|
|
183
|
+
// Held, not emitted: this runs before lifecycle tracking starts, and
|
|
184
|
+
// the Segment spec orders `Deep Link Opened` after `Application
|
|
185
|
+
// Opened`. Emitted by trackInitialDeepLink() once lifecycle has fired.
|
|
186
|
+
this.initialDeepLinkUrl = url;
|
|
187
|
+
}
|
|
145
188
|
} catch (error) {
|
|
146
189
|
logger.debug("FormoAnalytics: Linking.getInitialURL failed", error);
|
|
147
190
|
}
|
|
148
191
|
|
|
149
192
|
// Runtime deep links (foreground opens, universal links).
|
|
150
193
|
this.linkingSubscription = Linking.addEventListener("url", event => {
|
|
151
|
-
if (event?.url)
|
|
194
|
+
if (!event?.url) return;
|
|
195
|
+
// Each behaviour checks its own flag: the hook may exist because only one
|
|
196
|
+
// of them is enabled.
|
|
197
|
+
if (this.isAttributionEnabled("deeplinks")) {
|
|
198
|
+
this.setTrafficSourceFromUrl(event.url);
|
|
199
|
+
}
|
|
200
|
+
void this.trackDeepLinkOpened(event.url);
|
|
152
201
|
});
|
|
153
202
|
}
|
|
154
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Emit `Deep Link Opened` for the URL the app was launched with, if any.
|
|
206
|
+
* Separate from capture so it can be ordered after `Application Opened`.
|
|
207
|
+
*/
|
|
208
|
+
async trackInitialDeepLink() {
|
|
209
|
+
const url = this.initialDeepLinkUrl;
|
|
210
|
+
this.initialDeepLinkUrl = undefined;
|
|
211
|
+
if (url) await this.trackDeepLinkOpened(url);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Emit the Segment-spec `Deep Link Opened` event.
|
|
216
|
+
*
|
|
217
|
+
* `provider` is deliberately omitted: the spec uses it to name the
|
|
218
|
+
* attribution provider that resolved the link (Branch, Adjust, …). The SDK
|
|
219
|
+
* reads the link straight from React Native's Linking API, so there is no
|
|
220
|
+
* provider to name, and emitting a placeholder would misreport the source.
|
|
221
|
+
*/
|
|
222
|
+
async trackDeepLinkOpened(url) {
|
|
223
|
+
if (!this.isAutocaptureEnabled("deepLinks")) return;
|
|
224
|
+
try {
|
|
225
|
+
await this.track(LIFECYCLE_EVENT.DEEP_LINK_OPENED, {
|
|
226
|
+
url
|
|
227
|
+
});
|
|
228
|
+
} catch (error) {
|
|
229
|
+
logger.error("FormoAnalytics: Error tracking Deep Link Opened", error);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Track that a push notification was delivered to the device.
|
|
235
|
+
*
|
|
236
|
+
* Push delivery cannot be observed without a native module, so the SDK
|
|
237
|
+
* cannot autocapture these — call this from your push handler
|
|
238
|
+
* (`@react-native-firebase/messaging`, `expo-notifications`, …).
|
|
239
|
+
*
|
|
240
|
+
* @param properties Segment's push spec suggests `campaign_id`, `campaign_name`,
|
|
241
|
+
* `message_id`, `action` and `title`/`body`. Any properties are accepted.
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```tsx
|
|
245
|
+
* messaging().onMessage(async (message) => {
|
|
246
|
+
* await formo.pushNotificationReceived({ message_id: message.messageId });
|
|
247
|
+
* });
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
async pushNotificationReceived(properties) {
|
|
251
|
+
await this.track(LIFECYCLE_EVENT.PUSH_NOTIFICATION_RECEIVED, properties);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Track that the user opened the app by tapping a push notification.
|
|
256
|
+
* See {@link pushNotificationReceived} for why this is not autocaptured.
|
|
257
|
+
*/
|
|
258
|
+
async pushNotificationTapped(properties) {
|
|
259
|
+
await this.track(LIFECYCLE_EVENT.PUSH_NOTIFICATION_TAPPED, properties);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Track that a push notification was not delivered — e.g. the OS suppressed
|
|
264
|
+
* it, or the device token was rejected.
|
|
265
|
+
* See {@link pushNotificationReceived} for why this is not autocaptured.
|
|
266
|
+
*/
|
|
267
|
+
async pushNotificationBounced(properties) {
|
|
268
|
+
await this.track(LIFECYCLE_EVENT.PUSH_NOTIFICATION_BOUNCED, properties);
|
|
269
|
+
}
|
|
270
|
+
|
|
155
271
|
/**
|
|
156
272
|
* Track a screen view (mobile equivalent of page view)
|
|
157
273
|
*/
|
|
@@ -213,6 +329,10 @@ export class FormoAnalytics {
|
|
|
213
329
|
*/
|
|
214
330
|
async cleanup() {
|
|
215
331
|
logger.info("FormoAnalytics: Cleaning up resources");
|
|
332
|
+
if (this.crashReporter) {
|
|
333
|
+
this.crashReporter.cleanup();
|
|
334
|
+
this.crashReporter = undefined;
|
|
335
|
+
}
|
|
216
336
|
if (this.lifecycleManager) {
|
|
217
337
|
this.lifecycleManager.cleanup();
|
|
218
338
|
this.lifecycleManager = undefined;
|
|
@@ -487,19 +607,29 @@ export class FormoAnalytics {
|
|
|
487
607
|
* Applies only to event-generating behaviors (wallet events, lifecycle
|
|
488
608
|
* events). Attribution is controlled separately via `options.attribution`
|
|
489
609
|
* because it enriches events rather than generating them.
|
|
610
|
+
*
|
|
611
|
+
* Most behaviors are on unless explicitly disabled. The two in
|
|
612
|
+
* {@link OPT_IN_AUTOCAPTURE} invert that and require an explicit `true`,
|
|
613
|
+
* because switching them on by default would change existing apps on a
|
|
614
|
+
* version bump: `foregrounded` doubles foreground event volume, and
|
|
615
|
+
* `crashes` installs a global error handler.
|
|
490
616
|
*/
|
|
491
617
|
isAutocaptureEnabled(eventType) {
|
|
618
|
+
const isOptIn = OPT_IN_AUTOCAPTURE.has(eventType);
|
|
492
619
|
if (this.options.autocapture === undefined) {
|
|
493
|
-
return
|
|
620
|
+
return !isOptIn;
|
|
494
621
|
}
|
|
622
|
+
|
|
623
|
+
// `autocapture: true` means "the usual set", not "everything including the
|
|
624
|
+
// opt-in behaviors" — those still need naming individually.
|
|
495
625
|
if (typeof this.options.autocapture === "boolean") {
|
|
496
|
-
return this.options.autocapture;
|
|
626
|
+
return this.options.autocapture && !isOptIn;
|
|
497
627
|
}
|
|
498
628
|
if (this.options.autocapture !== null && typeof this.options.autocapture === "object") {
|
|
499
629
|
const eventConfig = this.options.autocapture[eventType];
|
|
500
|
-
return eventConfig !== false;
|
|
630
|
+
return isOptIn ? eventConfig === true : eventConfig !== false;
|
|
501
631
|
}
|
|
502
|
-
return
|
|
632
|
+
return !isOptIn;
|
|
503
633
|
}
|
|
504
634
|
|
|
505
635
|
/**
|