@metamask-previews/analytics-controller 0.0.0-preview-aabe1c65 → 0.0.0-preview-1dd40c75
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 +179 -105
- package/dist/AnalyticsController-method-action-types.cjs.map +1 -1
- package/dist/AnalyticsController-method-action-types.d.cts +8 -24
- package/dist/AnalyticsController-method-action-types.d.cts.map +1 -1
- package/dist/AnalyticsController-method-action-types.d.mts +8 -24
- package/dist/AnalyticsController-method-action-types.d.mts.map +1 -1
- package/dist/AnalyticsController-method-action-types.mjs.map +1 -1
- package/dist/AnalyticsController.cjs +102 -78
- package/dist/AnalyticsController.cjs.map +1 -1
- package/dist/AnalyticsController.d.cts +48 -34
- package/dist/AnalyticsController.d.cts.map +1 -1
- package/dist/AnalyticsController.d.mts +48 -34
- package/dist/AnalyticsController.d.mts.map +1 -1
- package/dist/AnalyticsController.mjs +103 -79
- package/dist/AnalyticsController.mjs.map +1 -1
- package/dist/AnalyticsPlatformAdapter.types.cjs.map +1 -1
- package/dist/AnalyticsPlatformAdapter.types.d.cts +63 -15
- package/dist/AnalyticsPlatformAdapter.types.d.cts.map +1 -1
- package/dist/AnalyticsPlatformAdapter.types.d.mts +63 -15
- package/dist/AnalyticsPlatformAdapter.types.d.mts.map +1 -1
- package/dist/AnalyticsPlatformAdapter.types.mjs.map +1 -1
- package/dist/AnalyticsPlatformAdapterSetupError.cjs +17 -0
- package/dist/AnalyticsPlatformAdapterSetupError.cjs.map +1 -0
- package/dist/AnalyticsPlatformAdapterSetupError.d.cts +8 -0
- package/dist/AnalyticsPlatformAdapterSetupError.d.cts.map +1 -0
- package/dist/AnalyticsPlatformAdapterSetupError.d.mts +8 -0
- package/dist/AnalyticsPlatformAdapterSetupError.d.mts.map +1 -0
- package/dist/AnalyticsPlatformAdapterSetupError.mjs +13 -0
- package/dist/AnalyticsPlatformAdapterSetupError.mjs.map +1 -0
- package/dist/analyticsControllerStateValidator.cjs +34 -0
- package/dist/analyticsControllerStateValidator.cjs.map +1 -0
- package/dist/analyticsControllerStateValidator.d.cts +16 -0
- package/dist/analyticsControllerStateValidator.d.cts.map +1 -0
- package/dist/analyticsControllerStateValidator.d.mts +16 -0
- package/dist/analyticsControllerStateValidator.d.mts.map +1 -0
- package/dist/analyticsControllerStateValidator.mjs +29 -0
- package/dist/analyticsControllerStateValidator.mjs.map +1 -0
- package/dist/index.cjs +9 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -5
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +6 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +6 -3
- package/dist/index.mjs.map +1 -1
- package/dist/selectors.cjs +36 -0
- package/dist/selectors.cjs.map +1 -0
- package/dist/selectors.d.cts +11 -0
- package/dist/selectors.d.cts.map +1 -0
- package/dist/selectors.d.mts +11 -0
- package/dist/selectors.d.mts.map +1 -0
- package/dist/selectors.mjs +33 -0
- package/dist/selectors.mjs.map +1 -0
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -4,13 +4,10 @@ Common Analytics controller for event tracking.
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- Tracking analytics events
|
|
9
|
-
- Identifying users
|
|
10
|
-
- Managing analytics preferences (enable/disable, opt-in/opt-out)
|
|
7
|
+
- Unified interface for tracking analytics events, identifying users, and managing preferences
|
|
11
8
|
- Delegates platform-specific implementation to `AnalyticsPlatformAdapter`
|
|
12
9
|
- Integrates with the MetaMask messenger system for inter-controller communication
|
|
13
|
-
-
|
|
10
|
+
- Platform-managed storage: controller doesn't persist state internally
|
|
14
11
|
|
|
15
12
|
## Installation
|
|
16
13
|
|
|
@@ -24,184 +21,261 @@ or
|
|
|
24
21
|
|
|
25
22
|
### 1. Create a Platform Adapter
|
|
26
23
|
|
|
27
|
-
The controller delegates platform-specific analytics implementation to
|
|
24
|
+
The controller delegates platform-specific analytics implementation to an `AnalyticsPlatformAdapter`:
|
|
28
25
|
|
|
29
26
|
```typescript
|
|
30
27
|
import type { AnalyticsPlatformAdapter } from '@metamask/analytics-controller';
|
|
31
28
|
|
|
32
29
|
const platformAdapter: AnalyticsPlatformAdapter = {
|
|
33
|
-
|
|
34
|
-
// Platform-specific implementation (e.g., Segment, Mixpanel, etc.)
|
|
30
|
+
track: (eventName: string, properties?: Record<string, unknown>) => {
|
|
35
31
|
segment.track(eventName, properties);
|
|
36
32
|
},
|
|
37
33
|
identify: (userId: string, traits?: Record<string, unknown>) => {
|
|
38
34
|
segment.identify(userId, traits);
|
|
39
35
|
},
|
|
40
|
-
|
|
41
|
-
segment.page(
|
|
36
|
+
view: (name: string, properties?: Record<string, unknown>) => {
|
|
37
|
+
segment.page(name, properties);
|
|
38
|
+
},
|
|
39
|
+
onSetupCompleted: (analyticsId: string) => {
|
|
40
|
+
// Lifecycle hook called after controller initialization
|
|
41
|
+
// The analyticsId is guaranteed to be set when this method is called
|
|
42
|
+
// Use this for platform-specific setup that requires the analytics ID
|
|
43
|
+
// For example, adding plugins that need the analytics ID:
|
|
44
|
+
segment.add({
|
|
45
|
+
plugin: new PrivacyPlugin(analyticsId),
|
|
46
|
+
});
|
|
42
47
|
},
|
|
43
48
|
};
|
|
44
49
|
```
|
|
45
50
|
|
|
46
|
-
### 2.
|
|
51
|
+
### 2. Load Analytics Settings from Storage
|
|
52
|
+
|
|
53
|
+
The platform is responsible for loading and persisting analytics settings—the controller does not handle storage internally. This design allows:
|
|
47
54
|
|
|
48
|
-
|
|
55
|
+
- **Early access**: Platform can read the `analyticsId` before the controller is initialized (useful for other controllers or early startup code)
|
|
56
|
+
- **Resilience**: Storing analytics settings separately from main state protects them from state corruption, allowing analytics to continue working even when main state is corrupted
|
|
49
57
|
|
|
50
|
-
|
|
58
|
+
Load settings **before** initializing the controller:
|
|
51
59
|
|
|
52
60
|
```typescript
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
62
|
+
import {
|
|
63
|
+
getDefaultAnalyticsControllerState,
|
|
64
|
+
type AnalyticsControllerState,
|
|
65
|
+
} from '@metamask/analytics-controller';
|
|
66
|
+
|
|
67
|
+
async function loadAnalyticsSettings(): Promise<AnalyticsControllerState> {
|
|
68
|
+
// Load from platform storage (e.g., MMKV, AsyncStorage, localStorage)
|
|
69
|
+
const [savedAnalyticsId, savedOptedIn] = await Promise.all([
|
|
70
|
+
storage.getItem('analytics.id'),
|
|
71
|
+
storage.getItem('analytics.optedIn'),
|
|
72
|
+
]);
|
|
73
|
+
|
|
74
|
+
const defaults = getDefaultAnalyticsControllerState();
|
|
75
|
+
|
|
76
|
+
// Generate UUID on first run if not in storage
|
|
77
|
+
let analyticsId = savedAnalyticsId;
|
|
78
|
+
if (!analyticsId) {
|
|
79
|
+
analyticsId = uuidv4();
|
|
80
|
+
// Persist immediately - this ID must never change
|
|
81
|
+
await storage.setItem('analytics.id', analyticsId);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Parse boolean values (stored as strings)
|
|
85
|
+
const optedIn =
|
|
86
|
+
savedOptedIn !== null ? savedOptedIn === 'true' : defaults.optedIn;
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
analyticsId,
|
|
90
|
+
optedIn,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
66
93
|
```
|
|
67
94
|
|
|
68
|
-
|
|
95
|
+
### 3. Initialize the Controller
|
|
69
96
|
|
|
70
|
-
|
|
97
|
+
Create the controller with loaded state and subscribe to state changes for persistence:
|
|
71
98
|
|
|
72
99
|
```typescript
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
100
|
+
import {
|
|
101
|
+
AnalyticsController,
|
|
102
|
+
type AnalyticsControllerState,
|
|
103
|
+
} from '@metamask/analytics-controller';
|
|
104
|
+
|
|
105
|
+
// Persist state changes to storage (fire-and-forget)
|
|
106
|
+
function persistAnalyticsSettings(state: AnalyticsControllerState): void {
|
|
107
|
+
storage.setItem('analytics.id', state.analyticsId);
|
|
108
|
+
storage.setItem('analytics.optedIn', String(state.optedIn));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async function initializeAnalyticsController(
|
|
112
|
+
messenger: AnalyticsControllerMessenger,
|
|
113
|
+
): Promise<AnalyticsController> {
|
|
114
|
+
// 1. Load settings from storage
|
|
115
|
+
const state = await loadAnalyticsSettings();
|
|
116
|
+
|
|
117
|
+
// 2. Create controller with loaded state
|
|
118
|
+
const controller = new AnalyticsController({
|
|
119
|
+
messenger,
|
|
120
|
+
platformAdapter,
|
|
121
|
+
state, // Must include valid UUIDv4 analyticsId
|
|
122
|
+
anonymousEventsFeature: false, // Optional: enables anonymous event tracking (default: false)
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// 3. Initialize the controller (calls platform adapter's onSetupCompleted hook)
|
|
126
|
+
controller.init();
|
|
127
|
+
|
|
128
|
+
// 4. Subscribe to state changes for persistence
|
|
129
|
+
messenger.subscribe('AnalyticsController:stateChange', (newState) => {
|
|
130
|
+
persistAnalyticsSettings(newState);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
return controller;
|
|
134
|
+
}
|
|
82
135
|
```
|
|
83
136
|
|
|
84
|
-
|
|
137
|
+
### 4. Access Analytics ID Before Controller Init
|
|
85
138
|
|
|
86
|
-
|
|
139
|
+
One benefit of platform-managed storage is accessing the analytics ID before the controller is initialized:
|
|
87
140
|
|
|
88
141
|
```typescript
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
142
|
+
async function getAnalyticsId(): Promise<string | null> {
|
|
143
|
+
return storage.getItem('analytics.id');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Use in other controllers or early initialization
|
|
147
|
+
const analyticsId = await getAnalyticsId();
|
|
148
|
+
if (analyticsId) {
|
|
149
|
+
// Use analyticsId before AnalyticsController is ready
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 5. Track Events
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
// Track event with properties
|
|
157
|
+
controller.trackEvent({
|
|
158
|
+
name: 'wallet_connected',
|
|
159
|
+
properties: { network: 'ethereum', account_type: 'hd' },
|
|
160
|
+
sensitiveProperties: {},
|
|
161
|
+
hasProperties: true,
|
|
162
|
+
saveDataRecording: true,
|
|
93
163
|
});
|
|
94
164
|
|
|
95
|
-
// Events are
|
|
96
|
-
controller.disable();
|
|
97
|
-
controller.trackEvent('some_event'); // This will not be tracked
|
|
165
|
+
// Events are filtered when analytics is disabled (optedIn is false)
|
|
98
166
|
```
|
|
99
167
|
|
|
100
|
-
|
|
168
|
+
#### Anonymous Events Feature
|
|
169
|
+
|
|
170
|
+
When `anonymousEventsFeature` is enabled in the constructor, events with sensitive properties are split into separate events:
|
|
171
|
+
|
|
172
|
+
- **Regular properties event**: Tracked first with only `properties` (uses user ID)
|
|
173
|
+
- **Sensitive properties event**: Tracked separately with both `properties` and `sensitiveProperties` (uses anonymous ID)
|
|
174
|
+
|
|
175
|
+
This allows sensitive data to be tracked anonymously while maintaining user identification for regular properties.
|
|
176
|
+
|
|
177
|
+
When `anonymousEventsFeature` is disabled (default), all properties are tracked in a single event.
|
|
178
|
+
|
|
179
|
+
### 6. Identify Users
|
|
101
180
|
|
|
102
181
|
```typescript
|
|
103
|
-
controller.identify(
|
|
104
|
-
|
|
105
|
-
|
|
182
|
+
controller.identify({
|
|
183
|
+
ENABLE_OPENSEA_API: 'ON',
|
|
184
|
+
NFT_AUTODETECTION: 'ON',
|
|
106
185
|
});
|
|
107
186
|
|
|
108
|
-
//
|
|
109
|
-
console.log(controller.state.analyticsId); // '550e8400-e29b-41d4-a716-446655440000'
|
|
187
|
+
// Uses the analyticsId from controller state
|
|
110
188
|
```
|
|
111
189
|
|
|
112
|
-
###
|
|
190
|
+
### 7. Track Page Views
|
|
113
191
|
|
|
114
192
|
```typescript
|
|
115
|
-
controller.
|
|
193
|
+
controller.trackView('home', {
|
|
116
194
|
referrer: 'google',
|
|
117
195
|
campaign: 'summer-2024',
|
|
118
196
|
});
|
|
119
197
|
```
|
|
120
198
|
|
|
121
|
-
###
|
|
199
|
+
### 8. Manage Analytics Preferences
|
|
122
200
|
|
|
123
201
|
```typescript
|
|
124
|
-
// Enable/disable analytics
|
|
125
|
-
controller.enable();
|
|
126
|
-
controller.disable();
|
|
127
|
-
|
|
128
202
|
// Opt in/out
|
|
129
203
|
controller.optIn();
|
|
130
204
|
controller.optOut();
|
|
131
|
-
```
|
|
132
205
|
|
|
133
|
-
|
|
206
|
+
// Changes trigger stateChange event → platform persists to storage
|
|
207
|
+
```
|
|
134
208
|
|
|
135
|
-
|
|
209
|
+
### 9. Use Messenger Actions
|
|
136
210
|
|
|
137
211
|
```typescript
|
|
138
212
|
// From another controller
|
|
139
|
-
messenger.call('AnalyticsController:trackEvent',
|
|
140
|
-
|
|
213
|
+
messenger.call('AnalyticsController:trackEvent', {
|
|
214
|
+
name: 'wallet_created',
|
|
215
|
+
properties: { wallet_type: 'hd' },
|
|
216
|
+
sensitiveProperties: {},
|
|
217
|
+
hasProperties: true,
|
|
218
|
+
saveDataRecording: true,
|
|
141
219
|
});
|
|
142
220
|
|
|
143
|
-
messenger.call(
|
|
144
|
-
'AnalyticsController:identify',
|
|
145
|
-
'550e8400-e29b-41d4-a716-446655440000',
|
|
146
|
-
{
|
|
147
|
-
email: 'newuser@example.com',
|
|
148
|
-
},
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
messenger.call('AnalyticsController:enable');
|
|
152
|
-
messenger.call('AnalyticsController:disable');
|
|
153
221
|
messenger.call('AnalyticsController:optIn');
|
|
154
|
-
messenger.call('AnalyticsController:optOut');
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### 8. Subscribe to State Changes
|
|
158
|
-
|
|
159
|
-
```typescript
|
|
160
|
-
messenger.subscribe('AnalyticsController:stateChange', (state, prevState) => {
|
|
161
|
-
console.log('Analytics state changed:', {
|
|
162
|
-
enabled: state.enabled,
|
|
163
|
-
optedIn: state.optedIn,
|
|
164
|
-
analyticsId: state.analyticsId,
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
222
|
```
|
|
168
223
|
|
|
169
224
|
## State Management
|
|
170
225
|
|
|
171
226
|
### Default State
|
|
172
227
|
|
|
173
|
-
|
|
228
|
+
Use `getDefaultAnalyticsControllerState()` to get default values for opt-in preferences:
|
|
174
229
|
|
|
175
230
|
```typescript
|
|
176
231
|
import { getDefaultAnalyticsControllerState } from '@metamask/analytics-controller';
|
|
177
232
|
|
|
178
|
-
const
|
|
179
|
-
// {
|
|
180
|
-
//
|
|
181
|
-
// optedIn: false,
|
|
182
|
-
// analyticsId: auto-generated UUIDv4
|
|
183
|
-
// }
|
|
233
|
+
const defaults = getDefaultAnalyticsControllerState();
|
|
234
|
+
// Returns: { optedIn: false }
|
|
235
|
+
// Note: analyticsId is NOT included - platform must provide it
|
|
184
236
|
```
|
|
185
237
|
|
|
186
|
-
###
|
|
238
|
+
### State Structure
|
|
239
|
+
|
|
240
|
+
| Field | Type | Description | Persisted |
|
|
241
|
+
| ------------- | --------- | -------------------------------------- | --------- |
|
|
242
|
+
| `analyticsId` | `string` | UUIDv4 identifier (platform-generated) | No |
|
|
243
|
+
| `optedIn` | `boolean` | User opt-in status | Yes |
|
|
244
|
+
|
|
245
|
+
**Note:** While `optedIn` is persisted by the controller, the platform should still subscribe to state changes and persist to isolated storage for resilience (see [Why Platform-Managed Storage?](#why-platform-managed-storage)).
|
|
246
|
+
|
|
247
|
+
### Why `analyticsId` Has No Default
|
|
187
248
|
|
|
188
|
-
|
|
189
|
-
- **Partial `state`**: Merges with defaults (user-provided values override defaults); `analyticsId` is auto-generated if not provided
|
|
190
|
-
- **Complete `state`**: Full control for migrations and advanced use cases
|
|
249
|
+
The `analyticsId` is used to uniquely identify the user. If the controller generated a new ID each time the client booted, the ID would be ineffective. Instead, the ID must be pre-generated or retrieved from storage and then passed into the controller.
|
|
191
250
|
|
|
192
|
-
|
|
251
|
+
### Platform Responsibilities
|
|
193
252
|
|
|
194
|
-
|
|
253
|
+
1. **Generate UUID on first run**: Use `uuid` package or platform equivalent
|
|
254
|
+
2. **Load state before controller init**: Read from storage, provide to constructor
|
|
255
|
+
3. **Subscribe to state changes**: Persist changes to storage
|
|
256
|
+
4. **Persist to isolated storage**: Keep analytics settings separate from main state (protects against state corruption)
|
|
195
257
|
|
|
196
|
-
|
|
258
|
+
### Why Platform-Managed Storage?
|
|
197
259
|
|
|
198
|
-
|
|
260
|
+
- **Access before controller init**: Other code can read analytics ID early
|
|
261
|
+
- **Protection from state corruption**: Analytics settings in separate storage survive main state corruption
|
|
262
|
+
- **Analytics during corruption**: Can still report issues even when main state is corrupted
|
|
263
|
+
- **Platform flexibility**: Each platform uses its preferred storage mechanism
|
|
199
264
|
|
|
200
|
-
|
|
201
|
-
|
|
265
|
+
## Lifecycle Hooks
|
|
266
|
+
|
|
267
|
+
### `onSetupCompleted`
|
|
268
|
+
|
|
269
|
+
Called once after controller initialization with guaranteed valid `analyticsId`:
|
|
270
|
+
|
|
271
|
+
```typescript
|
|
272
|
+
onSetupCompleted: (analyticsId: string) => {
|
|
273
|
+
// analyticsId is guaranteed to be a valid UUIDv4
|
|
274
|
+
client.add({ plugin: new PrivacyPlugin(analyticsId) });
|
|
275
|
+
},
|
|
202
276
|
```
|
|
203
277
|
|
|
204
|
-
|
|
278
|
+
Errors in `onSetupCompleted` are caught and logged—they don't break the controller.
|
|
205
279
|
|
|
206
280
|
## Contributing
|
|
207
281
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsController-method-action-types.cjs","sourceRoot":"","sources":["../src/AnalyticsController-method-action-types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated by `scripts/generate-method-action-types.ts`.\n * Do not edit manually.\n */\n\nimport type { AnalyticsController } from './AnalyticsController';\n\n/**\n * Track an analytics event.\n *\n * Events are only tracked if analytics is enabled.\n *\n * @param
|
|
1
|
+
{"version":3,"file":"AnalyticsController-method-action-types.cjs","sourceRoot":"","sources":["../src/AnalyticsController-method-action-types.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated by `scripts/generate-method-action-types.ts`.\n * Do not edit manually.\n */\n\nimport type { AnalyticsController } from './AnalyticsController';\n\n/**\n * Track an analytics event.\n *\n * Events are only tracked if analytics is enabled.\n *\n * @param event - Analytics event with properties and sensitive properties\n */\nexport type AnalyticsControllerTrackEventAction = {\n type: `AnalyticsController:trackEvent`;\n handler: AnalyticsController['trackEvent'];\n};\n\n/**\n * Identify a user for analytics.\n *\n * @param traits - User traits/properties\n */\nexport type AnalyticsControllerIdentifyAction = {\n type: `AnalyticsController:identify`;\n handler: AnalyticsController['identify'];\n};\n\n/**\n * Track a page or screen view.\n *\n * @param name - The identifier/name of the page or screen being viewed (e.g., \"home\", \"settings\", \"wallet\")\n * @param properties - Optional properties associated with the view\n */\nexport type AnalyticsControllerTrackViewAction = {\n type: `AnalyticsController:trackView`;\n handler: AnalyticsController['trackView'];\n};\n\n/**\n * Opt in to analytics.\n */\nexport type AnalyticsControllerOptInAction = {\n type: `AnalyticsController:optIn`;\n handler: AnalyticsController['optIn'];\n};\n\n/**\n * Opt out of analytics.\n */\nexport type AnalyticsControllerOptOutAction = {\n type: `AnalyticsController:optOut`;\n handler: AnalyticsController['optOut'];\n};\n\n/**\n * Union of all AnalyticsController action types.\n */\nexport type AnalyticsControllerMethodActions =\n | AnalyticsControllerTrackEventAction\n | AnalyticsControllerIdentifyAction\n | AnalyticsControllerTrackViewAction\n | AnalyticsControllerOptInAction\n | AnalyticsControllerOptOutAction;\n"]}
|
|
@@ -8,8 +8,7 @@ import type { AnalyticsController } from "./AnalyticsController.cjs";
|
|
|
8
8
|
*
|
|
9
9
|
* Events are only tracked if analytics is enabled.
|
|
10
10
|
*
|
|
11
|
-
* @param
|
|
12
|
-
* @param properties - Event properties
|
|
11
|
+
* @param event - Analytics event with properties and sensitive properties
|
|
13
12
|
*/
|
|
14
13
|
export type AnalyticsControllerTrackEventAction = {
|
|
15
14
|
type: `AnalyticsController:trackEvent`;
|
|
@@ -18,7 +17,6 @@ export type AnalyticsControllerTrackEventAction = {
|
|
|
18
17
|
/**
|
|
19
18
|
* Identify a user for analytics.
|
|
20
19
|
*
|
|
21
|
-
* @param userId - The user identifier (e.g., metametrics ID)
|
|
22
20
|
* @param traits - User traits/properties
|
|
23
21
|
*/
|
|
24
22
|
export type AnalyticsControllerIdentifyAction = {
|
|
@@ -26,28 +24,14 @@ export type AnalyticsControllerIdentifyAction = {
|
|
|
26
24
|
handler: AnalyticsController['identify'];
|
|
27
25
|
};
|
|
28
26
|
/**
|
|
29
|
-
* Track a page view.
|
|
27
|
+
* Track a page or screen view.
|
|
30
28
|
*
|
|
31
|
-
* @param
|
|
32
|
-
* @param properties -
|
|
29
|
+
* @param name - The identifier/name of the page or screen being viewed (e.g., "home", "settings", "wallet")
|
|
30
|
+
* @param properties - Optional properties associated with the view
|
|
33
31
|
*/
|
|
34
|
-
export type
|
|
35
|
-
type: `AnalyticsController:
|
|
36
|
-
handler: AnalyticsController['
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Enable analytics tracking.
|
|
40
|
-
*/
|
|
41
|
-
export type AnalyticsControllerEnableAction = {
|
|
42
|
-
type: `AnalyticsController:enable`;
|
|
43
|
-
handler: AnalyticsController['enable'];
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Disable analytics tracking.
|
|
47
|
-
*/
|
|
48
|
-
export type AnalyticsControllerDisableAction = {
|
|
49
|
-
type: `AnalyticsController:disable`;
|
|
50
|
-
handler: AnalyticsController['disable'];
|
|
32
|
+
export type AnalyticsControllerTrackViewAction = {
|
|
33
|
+
type: `AnalyticsController:trackView`;
|
|
34
|
+
handler: AnalyticsController['trackView'];
|
|
51
35
|
};
|
|
52
36
|
/**
|
|
53
37
|
* Opt in to analytics.
|
|
@@ -66,5 +50,5 @@ export type AnalyticsControllerOptOutAction = {
|
|
|
66
50
|
/**
|
|
67
51
|
* Union of all AnalyticsController action types.
|
|
68
52
|
*/
|
|
69
|
-
export type AnalyticsControllerMethodActions = AnalyticsControllerTrackEventAction | AnalyticsControllerIdentifyAction |
|
|
53
|
+
export type AnalyticsControllerMethodActions = AnalyticsControllerTrackEventAction | AnalyticsControllerIdentifyAction | AnalyticsControllerTrackViewAction | AnalyticsControllerOptInAction | AnalyticsControllerOptOutAction;
|
|
70
54
|
//# sourceMappingURL=AnalyticsController-method-action-types.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsController-method-action-types.d.cts","sourceRoot":"","sources":["../src/AnalyticsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kCAA8B;AAEjE
|
|
1
|
+
{"version":3,"file":"AnalyticsController-method-action-types.d.cts","sourceRoot":"","sources":["../src/AnalyticsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kCAA8B;AAEjE;;;;;;GAMG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,gCAAgC,CAAC;IACvC,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,8BAA8B,CAAC;IACrC,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,+BAA+B,CAAC;IACtC,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,2BAA2B,CAAC;IAClC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GACxC,mCAAmC,GACnC,iCAAiC,GACjC,kCAAkC,GAClC,8BAA8B,GAC9B,+BAA+B,CAAC"}
|
|
@@ -8,8 +8,7 @@ import type { AnalyticsController } from "./AnalyticsController.mjs";
|
|
|
8
8
|
*
|
|
9
9
|
* Events are only tracked if analytics is enabled.
|
|
10
10
|
*
|
|
11
|
-
* @param
|
|
12
|
-
* @param properties - Event properties
|
|
11
|
+
* @param event - Analytics event with properties and sensitive properties
|
|
13
12
|
*/
|
|
14
13
|
export type AnalyticsControllerTrackEventAction = {
|
|
15
14
|
type: `AnalyticsController:trackEvent`;
|
|
@@ -18,7 +17,6 @@ export type AnalyticsControllerTrackEventAction = {
|
|
|
18
17
|
/**
|
|
19
18
|
* Identify a user for analytics.
|
|
20
19
|
*
|
|
21
|
-
* @param userId - The user identifier (e.g., metametrics ID)
|
|
22
20
|
* @param traits - User traits/properties
|
|
23
21
|
*/
|
|
24
22
|
export type AnalyticsControllerIdentifyAction = {
|
|
@@ -26,28 +24,14 @@ export type AnalyticsControllerIdentifyAction = {
|
|
|
26
24
|
handler: AnalyticsController['identify'];
|
|
27
25
|
};
|
|
28
26
|
/**
|
|
29
|
-
* Track a page view.
|
|
27
|
+
* Track a page or screen view.
|
|
30
28
|
*
|
|
31
|
-
* @param
|
|
32
|
-
* @param properties -
|
|
29
|
+
* @param name - The identifier/name of the page or screen being viewed (e.g., "home", "settings", "wallet")
|
|
30
|
+
* @param properties - Optional properties associated with the view
|
|
33
31
|
*/
|
|
34
|
-
export type
|
|
35
|
-
type: `AnalyticsController:
|
|
36
|
-
handler: AnalyticsController['
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Enable analytics tracking.
|
|
40
|
-
*/
|
|
41
|
-
export type AnalyticsControllerEnableAction = {
|
|
42
|
-
type: `AnalyticsController:enable`;
|
|
43
|
-
handler: AnalyticsController['enable'];
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Disable analytics tracking.
|
|
47
|
-
*/
|
|
48
|
-
export type AnalyticsControllerDisableAction = {
|
|
49
|
-
type: `AnalyticsController:disable`;
|
|
50
|
-
handler: AnalyticsController['disable'];
|
|
32
|
+
export type AnalyticsControllerTrackViewAction = {
|
|
33
|
+
type: `AnalyticsController:trackView`;
|
|
34
|
+
handler: AnalyticsController['trackView'];
|
|
51
35
|
};
|
|
52
36
|
/**
|
|
53
37
|
* Opt in to analytics.
|
|
@@ -66,5 +50,5 @@ export type AnalyticsControllerOptOutAction = {
|
|
|
66
50
|
/**
|
|
67
51
|
* Union of all AnalyticsController action types.
|
|
68
52
|
*/
|
|
69
|
-
export type AnalyticsControllerMethodActions = AnalyticsControllerTrackEventAction | AnalyticsControllerIdentifyAction |
|
|
53
|
+
export type AnalyticsControllerMethodActions = AnalyticsControllerTrackEventAction | AnalyticsControllerIdentifyAction | AnalyticsControllerTrackViewAction | AnalyticsControllerOptInAction | AnalyticsControllerOptOutAction;
|
|
70
54
|
//# sourceMappingURL=AnalyticsController-method-action-types.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsController-method-action-types.d.mts","sourceRoot":"","sources":["../src/AnalyticsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kCAA8B;AAEjE
|
|
1
|
+
{"version":3,"file":"AnalyticsController-method-action-types.d.mts","sourceRoot":"","sources":["../src/AnalyticsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kCAA8B;AAEjE;;;;;;GAMG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,gCAAgC,CAAC;IACvC,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,8BAA8B,CAAC;IACrC,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,+BAA+B,CAAC;IACtC,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,2BAA2B,CAAC;IAClC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GACxC,mCAAmC,GACnC,iCAAiC,GACjC,kCAAkC,GAClC,8BAA8B,GAC9B,+BAA+B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsController-method-action-types.mjs","sourceRoot":"","sources":["../src/AnalyticsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated by `scripts/generate-method-action-types.ts`.\n * Do not edit manually.\n */\n\nimport type { AnalyticsController } from './AnalyticsController';\n\n/**\n * Track an analytics event.\n *\n * Events are only tracked if analytics is enabled.\n *\n * @param
|
|
1
|
+
{"version":3,"file":"AnalyticsController-method-action-types.mjs","sourceRoot":"","sources":["../src/AnalyticsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated by `scripts/generate-method-action-types.ts`.\n * Do not edit manually.\n */\n\nimport type { AnalyticsController } from './AnalyticsController';\n\n/**\n * Track an analytics event.\n *\n * Events are only tracked if analytics is enabled.\n *\n * @param event - Analytics event with properties and sensitive properties\n */\nexport type AnalyticsControllerTrackEventAction = {\n type: `AnalyticsController:trackEvent`;\n handler: AnalyticsController['trackEvent'];\n};\n\n/**\n * Identify a user for analytics.\n *\n * @param traits - User traits/properties\n */\nexport type AnalyticsControllerIdentifyAction = {\n type: `AnalyticsController:identify`;\n handler: AnalyticsController['identify'];\n};\n\n/**\n * Track a page or screen view.\n *\n * @param name - The identifier/name of the page or screen being viewed (e.g., \"home\", \"settings\", \"wallet\")\n * @param properties - Optional properties associated with the view\n */\nexport type AnalyticsControllerTrackViewAction = {\n type: `AnalyticsController:trackView`;\n handler: AnalyticsController['trackView'];\n};\n\n/**\n * Opt in to analytics.\n */\nexport type AnalyticsControllerOptInAction = {\n type: `AnalyticsController:optIn`;\n handler: AnalyticsController['optIn'];\n};\n\n/**\n * Opt out of analytics.\n */\nexport type AnalyticsControllerOptOutAction = {\n type: `AnalyticsController:optOut`;\n handler: AnalyticsController['optOut'];\n};\n\n/**\n * Union of all AnalyticsController action types.\n */\nexport type AnalyticsControllerMethodActions =\n | AnalyticsControllerTrackEventAction\n | AnalyticsControllerIdentifyAction\n | AnalyticsControllerTrackViewAction\n | AnalyticsControllerOptInAction\n | AnalyticsControllerOptOutAction;\n"]}
|