@metamask-previews/analytics-controller 0.0.0-preview-be27197a → 0.0.0-preview-3d640a3d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +102 -183
  2. package/dist/AnalyticsController-method-action-types.cjs.map +1 -1
  3. package/dist/AnalyticsController-method-action-types.d.cts +24 -10
  4. package/dist/AnalyticsController-method-action-types.d.cts.map +1 -1
  5. package/dist/AnalyticsController-method-action-types.d.mts +24 -10
  6. package/dist/AnalyticsController-method-action-types.d.mts.map +1 -1
  7. package/dist/AnalyticsController-method-action-types.mjs.map +1 -1
  8. package/dist/AnalyticsController.cjs +77 -86
  9. package/dist/AnalyticsController.cjs.map +1 -1
  10. package/dist/AnalyticsController.d.cts +33 -37
  11. package/dist/AnalyticsController.d.cts.map +1 -1
  12. package/dist/AnalyticsController.d.mts +33 -37
  13. package/dist/AnalyticsController.d.mts.map +1 -1
  14. package/dist/AnalyticsController.mjs +76 -85
  15. package/dist/AnalyticsController.mjs.map +1 -1
  16. package/dist/AnalyticsPlatformAdapter.types.cjs.map +1 -1
  17. package/dist/AnalyticsPlatformAdapter.types.d.cts +15 -63
  18. package/dist/AnalyticsPlatformAdapter.types.d.cts.map +1 -1
  19. package/dist/AnalyticsPlatformAdapter.types.d.mts +15 -63
  20. package/dist/AnalyticsPlatformAdapter.types.d.mts.map +1 -1
  21. package/dist/AnalyticsPlatformAdapter.types.mjs.map +1 -1
  22. package/dist/index.cjs +4 -9
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +4 -5
  25. package/dist/index.d.cts.map +1 -1
  26. package/dist/index.d.mts +4 -5
  27. package/dist/index.d.mts.map +1 -1
  28. package/dist/index.mjs +3 -6
  29. package/dist/index.mjs.map +1 -1
  30. package/package.json +3 -2
  31. package/dist/AnalyticsPlatformAdapterSetupError.cjs +0 -17
  32. package/dist/AnalyticsPlatformAdapterSetupError.cjs.map +0 -1
  33. package/dist/AnalyticsPlatformAdapterSetupError.d.cts +0 -8
  34. package/dist/AnalyticsPlatformAdapterSetupError.d.cts.map +0 -1
  35. package/dist/AnalyticsPlatformAdapterSetupError.d.mts +0 -8
  36. package/dist/AnalyticsPlatformAdapterSetupError.d.mts.map +0 -1
  37. package/dist/AnalyticsPlatformAdapterSetupError.mjs +0 -13
  38. package/dist/AnalyticsPlatformAdapterSetupError.mjs.map +0 -1
  39. package/dist/analyticsControllerStateValidator.cjs +0 -34
  40. package/dist/analyticsControllerStateValidator.cjs.map +0 -1
  41. package/dist/analyticsControllerStateValidator.d.cts +0 -16
  42. package/dist/analyticsControllerStateValidator.d.cts.map +0 -1
  43. package/dist/analyticsControllerStateValidator.d.mts +0 -16
  44. package/dist/analyticsControllerStateValidator.d.mts.map +0 -1
  45. package/dist/analyticsControllerStateValidator.mjs +0 -29
  46. package/dist/analyticsControllerStateValidator.mjs.map +0 -1
  47. package/dist/selectors.cjs +0 -38
  48. package/dist/selectors.cjs.map +0 -1
  49. package/dist/selectors.d.cts +0 -11
  50. package/dist/selectors.d.cts.map +0 -1
  51. package/dist/selectors.d.mts +0 -11
  52. package/dist/selectors.d.mts.map +0 -1
  53. package/dist/selectors.mjs +0 -35
  54. package/dist/selectors.mjs.map +0 -1
package/README.md CHANGED
@@ -4,10 +4,13 @@ Common Analytics controller for event tracking.
4
4
 
5
5
  ## Features
6
6
 
7
- - Unified interface for tracking analytics events, identifying users, and managing preferences
7
+ - Provides a unified interface for:
8
+ - Tracking analytics events
9
+ - Identifying users
10
+ - Managing analytics preferences (enable/disable, opt-in/opt-out)
8
11
  - Delegates platform-specific implementation to `AnalyticsPlatformAdapter`
9
12
  - Integrates with the MetaMask messenger system for inter-controller communication
10
- - Platform-managed storage: controller doesn't persist state internally
13
+ - Supports state persistence and migrations
11
14
 
12
15
  ## Installation
13
16
 
@@ -21,268 +24,184 @@ or
21
24
 
22
25
  ### 1. Create a Platform Adapter
23
26
 
24
- The controller delegates platform-specific analytics implementation to an `AnalyticsPlatformAdapter`:
27
+ The controller delegates platform-specific analytics implementation to a `AnalyticsPlatformAdapter`. You must provide an adapter that implements the required methods:
25
28
 
26
29
  ```typescript
27
30
  import type { AnalyticsPlatformAdapter } from '@metamask/analytics-controller';
28
31
 
29
32
  const platformAdapter: AnalyticsPlatformAdapter = {
30
- track: (eventName: string, properties?: Record<string, unknown>) => {
33
+ trackEvent: (eventName: string, properties: Record<string, unknown>) => {
34
+ // Platform-specific implementation (e.g., Segment, Mixpanel, etc.)
31
35
  segment.track(eventName, properties);
32
36
  },
33
37
  identify: (userId: string, traits?: Record<string, unknown>) => {
34
38
  segment.identify(userId, traits);
35
39
  },
36
- view: (name: string, properties?: Record<string, unknown>) => {
37
- segment.page(name, properties);
38
- },
39
- onSetupCompleted: async (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
- });
40
+ trackPage: (pageName: string, properties?: Record<string, unknown>) => {
41
+ segment.page(pageName, properties);
47
42
  },
48
43
  };
49
44
  ```
50
45
 
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:
46
+ ### 2. Initialize the Controller
54
47
 
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
48
+ #### Basic Initialization (Uses Defaults)
57
49
 
58
- Load settings **before** initializing the controller:
50
+ The controller uses default state values when no `state` parameter is provided:
59
51
 
60
52
  ```typescript
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
- }
53
+ import { AnalyticsController } from '@metamask/analytics-controller';
54
+ import { Messenger } from '@metamask/messenger';
55
+
56
+ const messenger = new Messenger({ namespace: 'AnalyticsController' });
57
+
58
+ const controller = new AnalyticsController({
59
+ messenger,
60
+ platformAdapter,
61
+ // State defaults to:
62
+ // - enabled: true
63
+ // - optedIn: false
64
+ // - analyticsId: auto-generated UUIDv4 (if not provided)
65
+ });
93
66
  ```
94
67
 
95
- ### 3. Initialize the Controller
68
+ #### Custom Initial State
96
69
 
97
- Create the controller with loaded state and subscribe to state changes for persistence:
70
+ You can provide partial state to override defaults:
98
71
 
99
72
  ```typescript
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
- });
123
-
124
- // 3. Subscribe to state changes for persistence
125
- messenger.subscribe('AnalyticsController:stateChange', (newState) => {
126
- persistAnalyticsSettings(newState);
127
- });
128
-
129
- return controller;
130
- }
73
+ const controller = new AnalyticsController({
74
+ messenger,
75
+ platformAdapter,
76
+ state: {
77
+ enabled: false, // Override default (true)
78
+ optedIn: true, // Override default (false)
79
+ analyticsId: '550e8400-e29b-41d4-a716-446655440000', // Override default
80
+ },
81
+ });
131
82
  ```
132
83
 
133
- ### 4. Access Analytics ID Before Controller Init
134
-
135
- One benefit of platform-managed storage is accessing the analytics ID before the controller is initialized:
136
-
137
- ```typescript
138
- async function getAnalyticsId(): Promise<string | null> {
139
- return storage.getItem('analytics.id');
140
- }
141
-
142
- // Use in other controllers or early initialization
143
- const analyticsId = await getAnalyticsId();
144
- if (analyticsId) {
145
- // Use analyticsId before AnalyticsController is ready
146
- }
147
- ```
84
+ **Important:** The `state` parameter is the single source of truth for initial values. Any properties you provide will override the defaults from `getDefaultAnalyticsControllerState()`.
148
85
 
149
- ### 5. Track Events
86
+ ### 3. Track Events
150
87
 
151
88
  ```typescript
152
- // Track event with properties
153
- controller.trackEvent({
154
- name: 'wallet_connected',
155
- properties: { network: 'ethereum', account_type: 'hd' },
156
- sensitiveProperties: {},
157
- hasProperties: true,
158
- saveDataRecording: true,
89
+ // Track a simple event
90
+ controller.trackEvent('wallet_connected', {
91
+ network: 'ethereum',
92
+ account_type: 'hd',
159
93
  });
160
94
 
161
- // Events are filtered when analytics is disabled (optedIn is false)
95
+ // Events are automatically filtered when analytics is disabled
96
+ controller.disable();
97
+ controller.trackEvent('some_event'); // This will not be tracked
162
98
  ```
163
99
 
164
- ### 6. Identify Users
100
+ ### 4. Identify Users
165
101
 
166
102
  ```typescript
167
- controller.identify({
168
- ENABLE_OPENSEA_API: 'ON',
169
- NFT_AUTODETECTION: 'ON',
103
+ controller.identify('550e8400-e29b-41d4-a716-446655440000', {
104
+ email: 'user@example.com',
105
+ plan: 'premium',
170
106
  });
171
107
 
172
- // Uses the analyticsId from controller state
108
+ // The analytics ID is automatically stored in controller state
109
+ console.log(controller.state.analyticsId); // '550e8400-e29b-41d4-a716-446655440000'
173
110
  ```
174
111
 
175
- ### 7. Track Page Views
112
+ ### 5. Track Page Views
176
113
 
177
114
  ```typescript
178
- controller.trackView('home', {
115
+ controller.trackPage('home', {
179
116
  referrer: 'google',
180
117
  campaign: 'summer-2024',
181
118
  });
182
119
  ```
183
120
 
184
- ### 8. Manage Analytics Preferences
121
+ ### 6. Manage Analytics State
185
122
 
186
123
  ```typescript
124
+ // Enable/disable analytics
125
+ controller.enable();
126
+ controller.disable();
127
+
187
128
  // Opt in/out
188
129
  controller.optIn();
189
130
  controller.optOut();
190
-
191
- // Changes trigger stateChange event → platform persists to storage
192
131
  ```
193
132
 
194
- ### 9. Use Messenger Actions
133
+ ### 7. Use Messenger Actions
134
+
135
+ The controller exposes methods as messenger actions for inter-controller communication:
195
136
 
196
137
  ```typescript
197
138
  // From another controller
198
- messenger.call('AnalyticsController:trackEvent', {
199
- name: 'wallet_created',
200
- properties: { wallet_type: 'hd' },
201
- sensitiveProperties: {},
202
- hasProperties: true,
203
- saveDataRecording: true,
139
+ messenger.call('AnalyticsController:trackEvent', 'wallet_created', {
140
+ wallet_type: 'hd',
204
141
  });
205
142
 
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');
206
153
  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
+ });
207
167
  ```
208
168
 
209
169
  ## State Management
210
170
 
211
171
  ### Default State
212
172
 
213
- Use `getDefaultAnalyticsControllerState()` to get default values for opt-in preferences:
173
+ The default state is provided by `getDefaultAnalyticsControllerState()`:
214
174
 
215
175
  ```typescript
216
176
  import { getDefaultAnalyticsControllerState } from '@metamask/analytics-controller';
217
177
 
218
- const defaults = getDefaultAnalyticsControllerState();
219
- // Returns: { optedIn: false }
220
- // Note: analyticsId is NOT included - platform must provide it
178
+ const defaultState = getDefaultAnalyticsControllerState();
179
+ // {
180
+ // enabled: true,
181
+ // optedIn: false,
182
+ // analyticsId: auto-generated UUIDv4
183
+ // }
221
184
  ```
222
185
 
223
- ### State Structure
224
-
225
- | Field | Type | Description |
226
- | ------------- | --------- | -------------------------------------- |
227
- | `analyticsId` | `string` | UUIDv4 identifier (platform-generated) |
228
- | `optedIn` | `boolean` | User opt-in status |
229
-
230
- ### Why `analyticsId` Has No Default
231
-
232
- The `analyticsId` is an **identity** (unique per user), not a **preference** (static default). A default should return the same value each call (deterministic), but a UUID must be unique each time (non-deterministic). These are mutually exclusive.
233
-
234
- **Solution:** Platform generates the UUID once on first run, persists it, and provides it to the controller.
235
-
236
- ### Platform Responsibilities
237
-
238
- 1. **Generate UUID on first run**: Use `uuid` package or platform equivalent
239
- 2. **Load state before controller init**: Read from storage, provide to constructor
240
- 3. **Subscribe to state changes**: Persist changes to storage
241
- 4. **Persist to isolated storage**: Keep analytics settings separate from main state (protects against state corruption)
242
-
243
- ### Why Platform-Managed Storage?
244
-
245
- - **Access before controller init**: Other code can read analytics ID early
246
- - **Protection from state corruption**: Analytics settings in separate storage survive main state corruption
247
- - **Analytics during corruption**: Can still report issues even when main state is corrupted
248
- - **Platform flexibility**: Each platform uses its preferred storage mechanism
249
-
250
- ## Lifecycle Hooks
186
+ ### Initialization Strategy
251
187
 
252
- ### `onSetupCompleted`
188
+ - **No `state` parameter**: Uses defaults from `getDefaultAnalyticsControllerState()` and auto-generates `analyticsId` as UUIDv4
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
253
191
 
254
- Called once after controller initialization with guaranteed valid `analyticsId`:
192
+ **Best Practice:** Use `state` as the single source of truth for initial values. Do not use convenience parameters—they have been removed to ensure consistency.
255
193
 
256
- ```typescript
257
- onSetupCompleted: async (analyticsId: string) => {
258
- // analyticsId is guaranteed to be a valid UUIDv4
259
- client.add({ plugin: new PrivacyPlugin(analyticsId) });
260
- },
261
- ```
262
-
263
- Errors in `onSetupCompleted` are caught and logged—they don't break the controller.
194
+ **Analytics ID:** The `analyticsId` is a UUIDv4 string. If not provided in the `state` parameter, the controller automatically generates one on initialization. This ID is persisted in state and remains consistent across restarts. If you provide an `analyticsId` in the `state` parameter, it will be used instead (useful for migrations).
264
195
 
265
196
  ## Debugging
266
197
 
267
- Enable debug logging:
198
+ To display analytics-controller logs in the mobile app, you can add the following to your `.js.env` file:
268
199
 
269
200
  ```bash
270
201
  export DEBUG="metamask:analytics-controller"
271
202
  ```
272
203
 
273
- ## Development
274
-
275
- ### Build
276
-
277
- ```bash
278
- yarn install && yarn workspace @metamask/analytics-controller build
279
- ```
280
-
281
- ### Test
282
-
283
- ```bash
284
- yarn install && yarn workspace @metamask/analytics-controller test
285
- ```
204
+ This will enable debug logging for the analytics-controller, allowing you to see detailed logs of analytics events, state changes, and controller operations.
286
205
 
287
206
  ## Contributing
288
207
 
@@ -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 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 * This updates the user's opt-in status.\n */\nexport type AnalyticsControllerOptInAction = {\n type: `AnalyticsController:optIn`;\n handler: AnalyticsController['optIn'];\n};\n\n/**\n * Opt out of analytics.\n * This updates the user's opt-in status.\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"]}
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 eventName - The name of the event\n * @param properties - Event 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 userId - The user identifier (e.g., metametrics ID)\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 view.\n *\n * @param pageName - The name of the page\n * @param properties - Page properties\n */\nexport type AnalyticsControllerTrackPageAction = {\n type: `AnalyticsController:trackPage`;\n handler: AnalyticsController['trackPage'];\n};\n\n/**\n * Enable analytics tracking.\n */\nexport type AnalyticsControllerEnableAction = {\n type: `AnalyticsController:enable`;\n handler: AnalyticsController['enable'];\n};\n\n/**\n * Disable analytics tracking.\n */\nexport type AnalyticsControllerDisableAction = {\n type: `AnalyticsController:disable`;\n handler: AnalyticsController['disable'];\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 | AnalyticsControllerTrackPageAction\n | AnalyticsControllerEnableAction\n | AnalyticsControllerDisableAction\n | AnalyticsControllerOptInAction\n | AnalyticsControllerOptOutAction;\n"]}
@@ -8,7 +8,8 @@ import type { AnalyticsController } from "./AnalyticsController.cjs";
8
8
  *
9
9
  * Events are only tracked if analytics is enabled.
10
10
  *
11
- * @param event - Analytics event with properties and sensitive properties
11
+ * @param eventName - The name of the event
12
+ * @param properties - Event properties
12
13
  */
13
14
  export type AnalyticsControllerTrackEventAction = {
14
15
  type: `AnalyticsController:trackEvent`;
@@ -17,6 +18,7 @@ export type AnalyticsControllerTrackEventAction = {
17
18
  /**
18
19
  * Identify a user for analytics.
19
20
  *
21
+ * @param userId - The user identifier (e.g., metametrics ID)
20
22
  * @param traits - User traits/properties
21
23
  */
22
24
  export type AnalyticsControllerIdentifyAction = {
@@ -24,18 +26,31 @@ export type AnalyticsControllerIdentifyAction = {
24
26
  handler: AnalyticsController['identify'];
25
27
  };
26
28
  /**
27
- * Track a page or screen view.
29
+ * Track a page view.
28
30
  *
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
31
+ * @param pageName - The name of the page
32
+ * @param properties - Page properties
31
33
  */
32
- export type AnalyticsControllerTrackViewAction = {
33
- type: `AnalyticsController:trackView`;
34
- handler: AnalyticsController['trackView'];
34
+ export type AnalyticsControllerTrackPageAction = {
35
+ type: `AnalyticsController:trackPage`;
36
+ handler: AnalyticsController['trackPage'];
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'];
35
51
  };
36
52
  /**
37
53
  * Opt in to analytics.
38
- * This updates the user's opt-in status.
39
54
  */
40
55
  export type AnalyticsControllerOptInAction = {
41
56
  type: `AnalyticsController:optIn`;
@@ -43,7 +58,6 @@ export type AnalyticsControllerOptInAction = {
43
58
  };
44
59
  /**
45
60
  * Opt out of analytics.
46
- * This updates the user's opt-in status.
47
61
  */
48
62
  export type AnalyticsControllerOptOutAction = {
49
63
  type: `AnalyticsController:optOut`;
@@ -52,5 +66,5 @@ export type AnalyticsControllerOptOutAction = {
52
66
  /**
53
67
  * Union of all AnalyticsController action types.
54
68
  */
55
- export type AnalyticsControllerMethodActions = AnalyticsControllerTrackEventAction | AnalyticsControllerIdentifyAction | AnalyticsControllerTrackViewAction | AnalyticsControllerOptInAction | AnalyticsControllerOptOutAction;
69
+ export type AnalyticsControllerMethodActions = AnalyticsControllerTrackEventAction | AnalyticsControllerIdentifyAction | AnalyticsControllerTrackPageAction | AnalyticsControllerEnableAction | AnalyticsControllerDisableAction | AnalyticsControllerOptInAction | AnalyticsControllerOptOutAction;
56
70
  //# 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;;;;;;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;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,2BAA2B,CAAC;IAClC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF;;;GAGG;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
+ {"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;;;;;;;GAOG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,gCAAgC,CAAC;IACvC,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;;GAKG;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,+BAA+B,GAAG;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC,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,+BAA+B,GAC/B,gCAAgC,GAChC,8BAA8B,GAC9B,+BAA+B,CAAC"}
@@ -8,7 +8,8 @@ import type { AnalyticsController } from "./AnalyticsController.mjs";
8
8
  *
9
9
  * Events are only tracked if analytics is enabled.
10
10
  *
11
- * @param event - Analytics event with properties and sensitive properties
11
+ * @param eventName - The name of the event
12
+ * @param properties - Event properties
12
13
  */
13
14
  export type AnalyticsControllerTrackEventAction = {
14
15
  type: `AnalyticsController:trackEvent`;
@@ -17,6 +18,7 @@ export type AnalyticsControllerTrackEventAction = {
17
18
  /**
18
19
  * Identify a user for analytics.
19
20
  *
21
+ * @param userId - The user identifier (e.g., metametrics ID)
20
22
  * @param traits - User traits/properties
21
23
  */
22
24
  export type AnalyticsControllerIdentifyAction = {
@@ -24,18 +26,31 @@ export type AnalyticsControllerIdentifyAction = {
24
26
  handler: AnalyticsController['identify'];
25
27
  };
26
28
  /**
27
- * Track a page or screen view.
29
+ * Track a page view.
28
30
  *
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
31
+ * @param pageName - The name of the page
32
+ * @param properties - Page properties
31
33
  */
32
- export type AnalyticsControllerTrackViewAction = {
33
- type: `AnalyticsController:trackView`;
34
- handler: AnalyticsController['trackView'];
34
+ export type AnalyticsControllerTrackPageAction = {
35
+ type: `AnalyticsController:trackPage`;
36
+ handler: AnalyticsController['trackPage'];
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'];
35
51
  };
36
52
  /**
37
53
  * Opt in to analytics.
38
- * This updates the user's opt-in status.
39
54
  */
40
55
  export type AnalyticsControllerOptInAction = {
41
56
  type: `AnalyticsController:optIn`;
@@ -43,7 +58,6 @@ export type AnalyticsControllerOptInAction = {
43
58
  };
44
59
  /**
45
60
  * Opt out of analytics.
46
- * This updates the user's opt-in status.
47
61
  */
48
62
  export type AnalyticsControllerOptOutAction = {
49
63
  type: `AnalyticsController:optOut`;
@@ -52,5 +66,5 @@ export type AnalyticsControllerOptOutAction = {
52
66
  /**
53
67
  * Union of all AnalyticsController action types.
54
68
  */
55
- export type AnalyticsControllerMethodActions = AnalyticsControllerTrackEventAction | AnalyticsControllerIdentifyAction | AnalyticsControllerTrackViewAction | AnalyticsControllerOptInAction | AnalyticsControllerOptOutAction;
69
+ export type AnalyticsControllerMethodActions = AnalyticsControllerTrackEventAction | AnalyticsControllerIdentifyAction | AnalyticsControllerTrackPageAction | AnalyticsControllerEnableAction | AnalyticsControllerDisableAction | AnalyticsControllerOptInAction | AnalyticsControllerOptOutAction;
56
70
  //# 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;;;;;;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;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,2BAA2B,CAAC;IAClC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF;;;GAGG;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
+ {"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;;;;;;;GAOG;AACH,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,gCAAgC,CAAC;IACvC,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;;GAKG;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,+BAA+B,GAAG;IAC5C,IAAI,EAAE,4BAA4B,CAAC;IACnC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC,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,+BAA+B,GAC/B,gCAAgC,GAChC,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 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 * This updates the user's opt-in status.\n */\nexport type AnalyticsControllerOptInAction = {\n type: `AnalyticsController:optIn`;\n handler: AnalyticsController['optIn'];\n};\n\n/**\n * Opt out of analytics.\n * This updates the user's opt-in status.\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"]}
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 eventName - The name of the event\n * @param properties - Event 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 userId - The user identifier (e.g., metametrics ID)\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 view.\n *\n * @param pageName - The name of the page\n * @param properties - Page properties\n */\nexport type AnalyticsControllerTrackPageAction = {\n type: `AnalyticsController:trackPage`;\n handler: AnalyticsController['trackPage'];\n};\n\n/**\n * Enable analytics tracking.\n */\nexport type AnalyticsControllerEnableAction = {\n type: `AnalyticsController:enable`;\n handler: AnalyticsController['enable'];\n};\n\n/**\n * Disable analytics tracking.\n */\nexport type AnalyticsControllerDisableAction = {\n type: `AnalyticsController:disable`;\n handler: AnalyticsController['disable'];\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 | AnalyticsControllerTrackPageAction\n | AnalyticsControllerEnableAction\n | AnalyticsControllerDisableAction\n | AnalyticsControllerOptInAction\n | AnalyticsControllerOptOutAction;\n"]}