@metamask-previews/analytics-controller 3.0.0-preview-df6c65973 → 3.0.0-preview-3e86f66f7

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/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export { AnalyticsController, EVENT_FRAGMENT_MAX_AGE, getDefaultAnalyticsControllerState, } from './AnalyticsController.js';
1
+ export { AnalyticsController, AnalyticsPurpose, EVENT_FRAGMENT_MAX_AGE, getDefaultAnalyticsControllerState, } from './AnalyticsController.js';
2
2
  export type { AnalyticsControllerOptions } from './AnalyticsController.js';
3
3
  export { AnalyticsPlatformAdapterSetupError } from './AnalyticsPlatformAdapterSetupError.js';
4
4
  export type { AnalyticsContext, AnalyticsEventProperties, AnalyticsDeliveryOptions, AnalyticsInvocationCallback, AnalyticsLocationContext, AnalyticsLocationField, AnalyticsUserTraits, AnalyticsPlatformAdapter, AnalyticsTrackingEvent, } from './AnalyticsPlatformAdapter.types.js';
5
5
  export type { AnalyticsEventFragment, AnalyticsEventFragmentFinalizeOptions, AnalyticsEventFragmentOptions, AnalyticsEventFragmentPayload, AnalyticsEventFragments, ReadonlyAnalyticsEventFragment, } from './EventFragment.types.js';
6
- export type { AnalyticsControllerState, AnalyticsEventQueue, AnalyticsQueuedEvent, AnalyticsQueuedEventType, AnalyticsQueuedTrackEvent, AnalyticsQueuedIdentifyEvent, AnalyticsQueuedViewEvent, } from './AnalyticsController.js';
6
+ export type { AnalyticsControllerState, AnalyticsEventQueue, AnalyticsEventsConfig, AnalyticsQueuedEvent, AnalyticsQueuedEventType, AnalyticsQueuedTrackEvent, AnalyticsQueuedIdentifyEvent, AnalyticsQueuedViewEvent, } from './AnalyticsController.js';
7
7
  export { analyticsControllerSelectors } from './selectors.js';
8
8
  export type { AnalyticsControllerMessenger } from './AnalyticsController.js';
9
9
  export type { AnalyticsControllerActions, AnalyticsControllerEvents, AnalyticsControllerGetStateAction, AnalyticsControllerStateChangeEvent, } from './AnalyticsController.js';
10
- export type { AnalyticsControllerTrackEventAction, AnalyticsControllerIdentifyAction, AnalyticsControllerTrackViewAction, AnalyticsControllerOptInAction, AnalyticsControllerOptOutAction, AnalyticsControllerResetConsentDecisionAction, AnalyticsControllerCreateEventFragmentAction, AnalyticsControllerUpsertEventFragmentAction, AnalyticsControllerUpdateEventFragmentAction, AnalyticsControllerGetEventFragmentByIdAction, AnalyticsControllerDeleteEventFragmentAction, AnalyticsControllerFinalizeEventFragmentAction, AnalyticsControllerMethodActions, } from './AnalyticsController-method-action-types.js';
10
+ export type { AnalyticsControllerTrackEventAction, AnalyticsControllerIdentifyAction, AnalyticsControllerTrackViewAction, AnalyticsControllerOptInAction, AnalyticsControllerOptOutAction, AnalyticsControllerResetConsentDecisionAction, AnalyticsControllerOptInToMarketingAction, AnalyticsControllerOptOutOfMarketingAction, AnalyticsControllerResetMarketingConsentDecisionAction, AnalyticsControllerCreateEventFragmentAction, AnalyticsControllerUpsertEventFragmentAction, AnalyticsControllerUpdateEventFragmentAction, AnalyticsControllerGetEventFragmentByIdAction, AnalyticsControllerDeleteEventFragmentAction, AnalyticsControllerFinalizeEventFragmentAction, AnalyticsControllerMethodActions, } from './AnalyticsController-method-action-types.js';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAG7F,YAAY,EACV,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAG7C,YAAY,EACV,sBAAsB,EACtB,qCAAqC,EACrC,6BAA6B,EAC7B,6BAA6B,EAC7B,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAG9D,YAAY,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAG7E,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,iCAAiC,EACjC,mCAAmC,GACpC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mCAAmC,EACnC,iCAAiC,EACjC,kCAAkC,EAClC,8BAA8B,EAC9B,+BAA+B,EAC/B,6CAA6C,EAC7C,4CAA4C,EAC5C,4CAA4C,EAC5C,4CAA4C,EAC5C,6CAA6C,EAC7C,4CAA4C,EAC5C,8CAA8C,EAC9C,gCAAgC,GACjC,MAAM,8CAA8C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAG7F,YAAY,EACV,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAG7C,YAAY,EACV,sBAAsB,EACtB,qCAAqC,EACrC,6BAA6B,EAC7B,6BAA6B,EAC7B,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAG9D,YAAY,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAG7E,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,iCAAiC,EACjC,mCAAmC,GACpC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mCAAmC,EACnC,iCAAiC,EACjC,kCAAkC,EAClC,8BAA8B,EAC9B,+BAA+B,EAC/B,6CAA6C,EAC7C,yCAAyC,EACzC,0CAA0C,EAC1C,sDAAsD,EACtD,4CAA4C,EAC5C,4CAA4C,EAC5C,4CAA4C,EAC5C,6CAA6C,EAC7C,4CAA4C,EAC5C,8CAA8C,EAC9C,gCAAgC,GACjC,MAAM,8CAA8C,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // Export controller class and state utilities
2
- export { AnalyticsController, EVENT_FRAGMENT_MAX_AGE, getDefaultAnalyticsControllerState, } from './AnalyticsController.js';
2
+ export { AnalyticsController, AnalyticsPurpose, EVENT_FRAGMENT_MAX_AGE, getDefaultAnalyticsControllerState, } from './AnalyticsController.js';
3
3
  // Export errors
4
4
  export { AnalyticsPlatformAdapterSetupError } from './AnalyticsPlatformAdapterSetupError.js';
5
5
  // Export selectors
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAGlC,gBAAgB;AAChB,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAoC7F,mBAAmB;AACnB,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Export controller class and state utilities\nexport {\n AnalyticsController,\n EVENT_FRAGMENT_MAX_AGE,\n getDefaultAnalyticsControllerState,\n} from './AnalyticsController.js';\nexport type { AnalyticsControllerOptions } from './AnalyticsController.js';\n\n// Export errors\nexport { AnalyticsPlatformAdapterSetupError } from './AnalyticsPlatformAdapterSetupError.js';\n\n// Export types\nexport type {\n AnalyticsContext,\n AnalyticsEventProperties,\n AnalyticsDeliveryOptions,\n AnalyticsInvocationCallback,\n AnalyticsLocationContext,\n AnalyticsLocationField,\n AnalyticsUserTraits,\n AnalyticsPlatformAdapter,\n AnalyticsTrackingEvent,\n} from './AnalyticsPlatformAdapter.types.js';\n\n// Export event fragment types\nexport type {\n AnalyticsEventFragment,\n AnalyticsEventFragmentFinalizeOptions,\n AnalyticsEventFragmentOptions,\n AnalyticsEventFragmentPayload,\n AnalyticsEventFragments,\n ReadonlyAnalyticsEventFragment,\n} from './EventFragment.types.js';\n\n// Export state types\nexport type {\n AnalyticsControllerState,\n AnalyticsEventQueue,\n AnalyticsQueuedEvent,\n AnalyticsQueuedEventType,\n AnalyticsQueuedTrackEvent,\n AnalyticsQueuedIdentifyEvent,\n AnalyticsQueuedViewEvent,\n} from './AnalyticsController.js';\n\n// Export selectors\nexport { analyticsControllerSelectors } from './selectors.js';\n\n// Export messenger types\nexport type { AnalyticsControllerMessenger } from './AnalyticsController.js';\n\n// Export action and event types\nexport type {\n AnalyticsControllerActions,\n AnalyticsControllerEvents,\n AnalyticsControllerGetStateAction,\n AnalyticsControllerStateChangeEvent,\n} from './AnalyticsController.js';\nexport type {\n AnalyticsControllerTrackEventAction,\n AnalyticsControllerIdentifyAction,\n AnalyticsControllerTrackViewAction,\n AnalyticsControllerOptInAction,\n AnalyticsControllerOptOutAction,\n AnalyticsControllerResetConsentDecisionAction,\n AnalyticsControllerCreateEventFragmentAction,\n AnalyticsControllerUpsertEventFragmentAction,\n AnalyticsControllerUpdateEventFragmentAction,\n AnalyticsControllerGetEventFragmentByIdAction,\n AnalyticsControllerDeleteEventFragmentAction,\n AnalyticsControllerFinalizeEventFragmentAction,\n AnalyticsControllerMethodActions,\n} from './AnalyticsController-method-action-types.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAGlC,gBAAgB;AAChB,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAqC7F,mBAAmB;AACnB,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Export controller class and state utilities\nexport {\n AnalyticsController,\n AnalyticsPurpose,\n EVENT_FRAGMENT_MAX_AGE,\n getDefaultAnalyticsControllerState,\n} from './AnalyticsController.js';\nexport type { AnalyticsControllerOptions } from './AnalyticsController.js';\n\n// Export errors\nexport { AnalyticsPlatformAdapterSetupError } from './AnalyticsPlatformAdapterSetupError.js';\n\n// Export types\nexport type {\n AnalyticsContext,\n AnalyticsEventProperties,\n AnalyticsDeliveryOptions,\n AnalyticsInvocationCallback,\n AnalyticsLocationContext,\n AnalyticsLocationField,\n AnalyticsUserTraits,\n AnalyticsPlatformAdapter,\n AnalyticsTrackingEvent,\n} from './AnalyticsPlatformAdapter.types.js';\n\n// Export event fragment types\nexport type {\n AnalyticsEventFragment,\n AnalyticsEventFragmentFinalizeOptions,\n AnalyticsEventFragmentOptions,\n AnalyticsEventFragmentPayload,\n AnalyticsEventFragments,\n ReadonlyAnalyticsEventFragment,\n} from './EventFragment.types.js';\n\n// Export state types\nexport type {\n AnalyticsControllerState,\n AnalyticsEventQueue,\n AnalyticsEventsConfig,\n AnalyticsQueuedEvent,\n AnalyticsQueuedEventType,\n AnalyticsQueuedTrackEvent,\n AnalyticsQueuedIdentifyEvent,\n AnalyticsQueuedViewEvent,\n} from './AnalyticsController.js';\n\n// Export selectors\nexport { analyticsControllerSelectors } from './selectors.js';\n\n// Export messenger types\nexport type { AnalyticsControllerMessenger } from './AnalyticsController.js';\n\n// Export action and event types\nexport type {\n AnalyticsControllerActions,\n AnalyticsControllerEvents,\n AnalyticsControllerGetStateAction,\n AnalyticsControllerStateChangeEvent,\n} from './AnalyticsController.js';\nexport type {\n AnalyticsControllerTrackEventAction,\n AnalyticsControllerIdentifyAction,\n AnalyticsControllerTrackViewAction,\n AnalyticsControllerOptInAction,\n AnalyticsControllerOptOutAction,\n AnalyticsControllerResetConsentDecisionAction,\n AnalyticsControllerOptInToMarketingAction,\n AnalyticsControllerOptOutOfMarketingAction,\n AnalyticsControllerResetMarketingConsentDecisionAction,\n AnalyticsControllerCreateEventFragmentAction,\n AnalyticsControllerUpsertEventFragmentAction,\n AnalyticsControllerUpdateEventFragmentAction,\n AnalyticsControllerGetEventFragmentByIdAction,\n AnalyticsControllerDeleteEventFragmentAction,\n AnalyticsControllerFinalizeEventFragmentAction,\n AnalyticsControllerMethodActions,\n} from './AnalyticsController-method-action-types.js';\n"]}
@@ -15,6 +15,13 @@ declare const selectAnalyticsId: (state: AnalyticsControllerState) => string;
15
15
  * @returns Whether the user has opted in to analytics
16
16
  */
17
17
  declare const selectOptedIn: (state: AnalyticsControllerState) => boolean;
18
+ /**
19
+ * Selects the marketing opt-in status from the controller state.
20
+ *
21
+ * @param state - The controller state
22
+ * @returns Whether the user has opted in to marketing analytics
23
+ */
24
+ declare const selectOptedInToMarketing: (state: AnalyticsControllerState) => boolean;
18
25
  /**
19
26
  * Selects whether analytics tracking is enabled.
20
27
  * Use this selector to determine if tracking should occur (e.g., in controller methods).
@@ -32,6 +39,13 @@ declare const selectEnabled: (state: AnalyticsControllerState) => boolean;
32
39
  * @returns Whether the user has made a consent decision
33
40
  */
34
41
  declare const selectConsentDecisionMade: (state: AnalyticsControllerState) => boolean;
42
+ /**
43
+ * Selects whether the user has made a marketing consent decision.
44
+ *
45
+ * @param state - The controller state
46
+ * @returns Whether the user has made a marketing consent decision
47
+ */
48
+ declare const selectMarketingConsentDecisionMade: (state: AnalyticsControllerState) => boolean;
35
49
  /**
36
50
  * Selects the in-progress event fragments from the controller state.
37
51
  *
@@ -55,8 +69,10 @@ declare const selectEventFragmentById: (state: AnalyticsControllerState, id: str
55
69
  export declare const analyticsControllerSelectors: {
56
70
  selectAnalyticsId: typeof selectAnalyticsId;
57
71
  selectOptedIn: typeof selectOptedIn;
72
+ selectOptedInToMarketing: typeof selectOptedInToMarketing;
58
73
  selectEnabled: typeof selectEnabled;
59
74
  selectConsentDecisionMade: typeof selectConsentDecisionMade;
75
+ selectMarketingConsentDecisionMade: typeof selectMarketingConsentDecisionMade;
60
76
  selectEventFragments: typeof selectEventFragments;
61
77
  selectEventFragmentById: typeof selectEventFragmentById;
62
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAIlC;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,UAAW,wBAAwB,KAAG,MAC1C,CAAC;AAEpB;;;;;;GAMG;AACH,QAAA,MAAM,aAAa,UAAW,wBAAwB,KAAG,OAC1C,CAAC;AAEhB;;;;;;GAMG;AACH,QAAA,MAAM,aAAa,UAAW,wBAAwB,KAAG,OAC1C,CAAC;AAEhB;;;;;;;GAOG;AACH,QAAA,MAAM,yBAAyB,UAAW,wBAAwB,KAAG,OACjC,CAAC;AAErC;;;;;;GAMG;AACH,QAAA,MAAM,oBAAoB,UACjB,wBAAwB,KAC9B,uBAAwE,CAAC;AAE5E;;;;;;GAMG;AACH,QAAA,MAAM,uBAAuB,UACpB,wBAAwB,MAC3B,MAAM,KACT,sBAAsB,GAAG,SAAuC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;CAOxC,CAAC"}
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAIlC;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,UAAW,wBAAwB,KAAG,MAC1C,CAAC;AAEpB;;;;;;GAMG;AACH,QAAA,MAAM,aAAa,UAAW,wBAAwB,KAAG,OAC1C,CAAC;AAEhB;;;;;GAKG;AACH,QAAA,MAAM,wBAAwB,UAAW,wBAAwB,KAAG,OACjC,CAAC;AAEpC;;;;;;GAMG;AACH,QAAA,MAAM,aAAa,UAAW,wBAAwB,KAAG,OAC1C,CAAC;AAEhB;;;;;;;GAOG;AACH,QAAA,MAAM,yBAAyB,UAAW,wBAAwB,KAAG,OACjC,CAAC;AAErC;;;;;GAKG;AACH,QAAA,MAAM,kCAAkC,UAC/B,wBAAwB,KAC9B,OAAsD,CAAC;AAE1D;;;;;;GAMG;AACH,QAAA,MAAM,oBAAoB,UACjB,wBAAwB,KAC9B,uBAAwE,CAAC;AAE5E;;;;;;GAMG;AACH,QAAA,MAAM,uBAAuB,UACpB,wBAAwB,MAC3B,MAAM,KACT,sBAAsB,GAAG,SAAuC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;CASxC,CAAC"}
package/dist/selectors.js CHANGED
@@ -14,6 +14,13 @@ const selectAnalyticsId = (state) => state.analyticsId;
14
14
  * @returns Whether the user has opted in to analytics
15
15
  */
16
16
  const selectOptedIn = (state) => state.optedIn;
17
+ /**
18
+ * Selects the marketing opt-in status from the controller state.
19
+ *
20
+ * @param state - The controller state
21
+ * @returns Whether the user has opted in to marketing analytics
22
+ */
23
+ const selectOptedInToMarketing = (state) => state.optedInToMarketing === true;
17
24
  /**
18
25
  * Selects whether analytics tracking is enabled.
19
26
  * Use this selector to determine if tracking should occur (e.g., in controller methods).
@@ -31,6 +38,13 @@ const selectEnabled = (state) => state.optedIn;
31
38
  * @returns Whether the user has made a consent decision
32
39
  */
33
40
  const selectConsentDecisionMade = (state) => state.consentDecisionMade ?? false;
41
+ /**
42
+ * Selects whether the user has made a marketing consent decision.
43
+ *
44
+ * @param state - The controller state
45
+ * @returns Whether the user has made a marketing consent decision
46
+ */
47
+ const selectMarketingConsentDecisionMade = (state) => state.marketingConsentDecisionMade ?? false;
34
48
  /**
35
49
  * Selects the in-progress event fragments from the controller state.
36
50
  *
@@ -54,8 +68,10 @@ const selectEventFragmentById = (state, id) => state.eventFragments?.[id];
54
68
  export const analyticsControllerSelectors = {
55
69
  selectAnalyticsId,
56
70
  selectOptedIn,
71
+ selectOptedInToMarketing,
57
72
  selectEnabled,
58
73
  selectConsentDecisionMade,
74
+ selectMarketingConsentDecisionMade,
59
75
  selectEventFragments,
60
76
  selectEventFragmentById,
61
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAMA,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAA4B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAA+B,EAAU,EAAE,CACpE,KAAK,CAAC,WAAW,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,KAA+B,EAAW,EAAE,CACjE,KAAK,CAAC,OAAO,CAAC;AAEhB;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,KAA+B,EAAW,EAAE,CACjE,KAAK,CAAC,OAAO,CAAC;AAEhB;;;;;;;GAOG;AACH,MAAM,yBAAyB,GAAG,CAAC,KAA+B,EAAW,EAAE,CAC7E,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,CAC3B,KAA+B,EACN,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,qBAAqB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,uBAAuB,GAAG,CAC9B,KAA+B,EAC/B,EAAU,EAC0B,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,iBAAiB;IACjB,aAAa;IACb,aAAa;IACb,yBAAyB;IACzB,oBAAoB;IACpB,uBAAuB;CACxB,CAAC","sourcesContent":["import type { AnalyticsControllerState } from './AnalyticsController.js';\nimport type {\n AnalyticsEventFragment,\n AnalyticsEventFragments,\n} from './EventFragment.types.js';\n\nconst EMPTY_EVENT_FRAGMENTS = Object.freeze({}) as AnalyticsEventFragments;\n\n/**\n * Selects the analytics ID from the controller state.\n *\n * @param state - The controller state\n * @returns The analytics ID\n */\nconst selectAnalyticsId = (state: AnalyticsControllerState): string =>\n state.analyticsId;\n\n/**\n * Selects the opted-in user status from the controller state.\n * Use this selector to read the user's opt-in preference (e.g., for UI display).\n *\n * @param state - The controller state\n * @returns Whether the user has opted in to analytics\n */\nconst selectOptedIn = (state: AnalyticsControllerState): boolean =>\n state.optedIn;\n\n/**\n * Selects whether analytics tracking is enabled.\n * Use this selector to determine if tracking should occur (e.g., in controller methods).\n *\n * @param state - The controller state\n * @returns Whether analytics tracking is enabled\n */\nconst selectEnabled = (state: AnalyticsControllerState): boolean =>\n state.optedIn;\n\n/**\n * Selects whether the user has made a consent decision (opted in or opted out).\n * Use this selector to distinguish the \"undecided\" state (e.g. during\n * onboarding) from an explicit opt-out.\n *\n * @param state - The controller state\n * @returns Whether the user has made a consent decision\n */\nconst selectConsentDecisionMade = (state: AnalyticsControllerState): boolean =>\n state.consentDecisionMade ?? false;\n\n/**\n * Selects the in-progress event fragments from the controller state.\n *\n * @param state - The controller state\n * @returns The event fragments keyed by fragment ID, empty when the event\n * fragments feature has never written any\n */\nconst selectEventFragments = (\n state: AnalyticsControllerState,\n): AnalyticsEventFragments => state.eventFragments ?? EMPTY_EVENT_FRAGMENTS;\n\n/**\n * Selects a single event fragment from the controller state.\n *\n * @param state - The controller state\n * @param id - The fragment ID\n * @returns The fragment, or `undefined` when no fragment has that ID\n */\nconst selectEventFragmentById = (\n state: AnalyticsControllerState,\n id: string,\n): AnalyticsEventFragment | undefined => state.eventFragments?.[id];\n\n/**\n * Selectors for the AnalyticsController state.\n * These can be used with Redux or directly with controller state.\n */\nexport const analyticsControllerSelectors = {\n selectAnalyticsId,\n selectOptedIn,\n selectEnabled,\n selectConsentDecisionMade,\n selectEventFragments,\n selectEventFragmentById,\n};\n"]}
1
+ {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAMA,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAA4B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAA+B,EAAU,EAAE,CACpE,KAAK,CAAC,WAAW,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,KAA+B,EAAW,EAAE,CACjE,KAAK,CAAC,OAAO,CAAC;AAEhB;;;;;GAKG;AACH,MAAM,wBAAwB,GAAG,CAAC,KAA+B,EAAW,EAAE,CAC5E,KAAK,CAAC,kBAAkB,KAAK,IAAI,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,KAA+B,EAAW,EAAE,CACjE,KAAK,CAAC,OAAO,CAAC;AAEhB;;;;;;;GAOG;AACH,MAAM,yBAAyB,GAAG,CAAC,KAA+B,EAAW,EAAE,CAC7E,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC;AAErC;;;;;GAKG;AACH,MAAM,kCAAkC,GAAG,CACzC,KAA+B,EACtB,EAAE,CAAC,KAAK,CAAC,4BAA4B,IAAI,KAAK,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,CAC3B,KAA+B,EACN,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,qBAAqB,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,uBAAuB,GAAG,CAC9B,KAA+B,EAC/B,EAAU,EAC0B,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,iBAAiB;IACjB,aAAa;IACb,wBAAwB;IACxB,aAAa;IACb,yBAAyB;IACzB,kCAAkC;IAClC,oBAAoB;IACpB,uBAAuB;CACxB,CAAC","sourcesContent":["import type { AnalyticsControllerState } from './AnalyticsController.js';\nimport type {\n AnalyticsEventFragment,\n AnalyticsEventFragments,\n} from './EventFragment.types.js';\n\nconst EMPTY_EVENT_FRAGMENTS = Object.freeze({}) as AnalyticsEventFragments;\n\n/**\n * Selects the analytics ID from the controller state.\n *\n * @param state - The controller state\n * @returns The analytics ID\n */\nconst selectAnalyticsId = (state: AnalyticsControllerState): string =>\n state.analyticsId;\n\n/**\n * Selects the opted-in user status from the controller state.\n * Use this selector to read the user's opt-in preference (e.g., for UI display).\n *\n * @param state - The controller state\n * @returns Whether the user has opted in to analytics\n */\nconst selectOptedIn = (state: AnalyticsControllerState): boolean =>\n state.optedIn;\n\n/**\n * Selects the marketing opt-in status from the controller state.\n *\n * @param state - The controller state\n * @returns Whether the user has opted in to marketing analytics\n */\nconst selectOptedInToMarketing = (state: AnalyticsControllerState): boolean =>\n state.optedInToMarketing === true;\n\n/**\n * Selects whether analytics tracking is enabled.\n * Use this selector to determine if tracking should occur (e.g., in controller methods).\n *\n * @param state - The controller state\n * @returns Whether analytics tracking is enabled\n */\nconst selectEnabled = (state: AnalyticsControllerState): boolean =>\n state.optedIn;\n\n/**\n * Selects whether the user has made a consent decision (opted in or opted out).\n * Use this selector to distinguish the \"undecided\" state (e.g. during\n * onboarding) from an explicit opt-out.\n *\n * @param state - The controller state\n * @returns Whether the user has made a consent decision\n */\nconst selectConsentDecisionMade = (state: AnalyticsControllerState): boolean =>\n state.consentDecisionMade ?? false;\n\n/**\n * Selects whether the user has made a marketing consent decision.\n *\n * @param state - The controller state\n * @returns Whether the user has made a marketing consent decision\n */\nconst selectMarketingConsentDecisionMade = (\n state: AnalyticsControllerState,\n): boolean => state.marketingConsentDecisionMade ?? false;\n\n/**\n * Selects the in-progress event fragments from the controller state.\n *\n * @param state - The controller state\n * @returns The event fragments keyed by fragment ID, empty when the event\n * fragments feature has never written any\n */\nconst selectEventFragments = (\n state: AnalyticsControllerState,\n): AnalyticsEventFragments => state.eventFragments ?? EMPTY_EVENT_FRAGMENTS;\n\n/**\n * Selects a single event fragment from the controller state.\n *\n * @param state - The controller state\n * @param id - The fragment ID\n * @returns The fragment, or `undefined` when no fragment has that ID\n */\nconst selectEventFragmentById = (\n state: AnalyticsControllerState,\n id: string,\n): AnalyticsEventFragment | undefined => state.eventFragments?.[id];\n\n/**\n * Selectors for the AnalyticsController state.\n * These can be used with Redux or directly with controller state.\n */\nexport const analyticsControllerSelectors = {\n selectAnalyticsId,\n selectOptedIn,\n selectOptedInToMarketing,\n selectEnabled,\n selectConsentDecisionMade,\n selectMarketingConsentDecisionMade,\n selectEventFragments,\n selectEventFragmentById,\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/analytics-controller",
3
- "version": "3.0.0-preview-df6c65973",
3
+ "version": "3.0.0-preview-3e86f66f7",
4
4
  "description": "Common Analytics controller for event tracking",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -55,11 +55,12 @@
55
55
  "@metamask/messenger": "^3.0.0",
56
56
  "@metamask/utils": "^12.0.0",
57
57
  "lodash-es": "^4.17.21",
58
- "uuid": "^11.1.1"
58
+ "uuid": "^9.0.1"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@metamask/auto-changelog": "^6.1.0",
62
62
  "@types/jest": "^30.0.0",
63
+ "@types/uuid": "^9.0.8",
63
64
  "@typescript/native": "npm:typescript@^7.0.2",
64
65
  "deepmerge": "^4.2.2",
65
66
  "jest": "^30.4.2",