{"version":3,"sources":["../../Areas/Consumer/Static/Metrics.ts"],"names":[],"mappings":"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","file":"Metrics.min.js","sourcesContent":["import { appClipsCapability, AppClipsCapability, environment, Environment, getCookie } from './Core'\r\n///// DEBUG: use this for autocomplete\r\n// import * as amplitude from '@amplitude/analytics-browser'\r\nimport { BrowserClient, EnrichmentPlugin, Event, LogLevel, ValidPropertyType } from '@amplitude/analytics-types'\r\n/////\r\n\r\ndeclare const gtag:any\r\ndeclare const CookieScript//:any\r\ndeclare const GLOBAL_AmplitudeAPIKey:string\r\ndeclare const GLOBAL_installationID:string\r\ndeclare const GLOBAL_appPlatform:Platform\r\ndeclare let GLOBAL_shouldSilenceMetrics:boolean\r\ndeclare const amplitude:BrowserClient|any // NOTE: need any since .Identify() is not exposed in @amplitude/analytics-types \r\n\r\n\r\n//\r\n// region constants\r\n//\r\n\r\nexport const GLOBAL_AppPlatform:Platform = GLOBAL_appPlatform\r\n\r\n// constants\r\nconst MetricsOptOutCookieName:string = \"MOO\"\r\n\r\n// endregion\r\n\r\n\r\nexport class Metrics {\r\n\t\r\n\t//\r\n\t// region state\r\n\t//\r\n\r\n\tstatic get shouldIgnoreEvents():boolean {\r\n\t\t// if( GLOBAL_isCacheWarmer )\r\n\t\t// \treturn true\r\n\r\n\t\tif( GLOBAL_shouldSilenceMetrics )\r\n\t\t\treturn true\r\n\t\t\r\n\t\treturn false\r\n\t}\t\r\n\t\r\n\t// endregion\r\n\t\r\n\t\r\n\t//\r\n\t// region lifecycle\r\n\t//\r\n\t\r\n\tpublic static initialize( /*installationID:string*/ ){\r\n\t\t// NOTE: we check cookie manually as well in case the initial response is cached (and thus value is stale)\r\n\t\tlet metricsOptOutCookieValue:string = getCookie( MetricsOptOutCookieName )\r\n\t\tif( metricsOptOutCookieValue !== '' ){\r\n\t\t\tGLOBAL_shouldSilenceMetrics = Boolean( metricsOptOutCookieValue )\r\n\t\t}\r\n\t\t// TODO: revive – user identity --> might need module (ie: Core)\r\n\t\t// @if( ViewBag.IsIdentified ){\r\n\t\t// \tif( (ViewBag.UserData?.AccountCanDemo ?? false) && ViewBag.Environment == Environment.Production ){\r\n\t\t// \t@:GLOBAL_shouldSilenceMetrics = true\r\n\t\t// \t}\r\n\t\t// }\r\n\t\tif( !GLOBAL_shouldSilenceMetrics ){\r\n\t\t\tamplitude.init( GLOBAL_AmplitudeAPIKey, {\r\n\t\t\t\tlogLevel: (environment == Environment.Production) ? LogLevel.Warn\r\n\t\t\t\t\t: (environment == Environment.Staging) ? LogLevel.Verbose\r\n\t\t\t\t\t: LogLevel.Verbose /*LogLevel.Debug*/,\r\n\t\t\t\tdefaultTracking: {\r\n\t\t\t\t\tsessions: true,\r\n\t\t\t\t\tpageViews: false,\r\n\t\t\t\t\tformInteractions: true,\r\n\t\t\t\t\tfileDownloads: true\r\n\t\t\t\t},\r\n\t\t\t\tdeviceId: GLOBAL_installationID\r\n\t\t\t})\r\n\t\t\tamplitude.add( Metrics.appInfoPlugin( GLOBAL_installationID ))\r\n\t\t\tconsole.debug( `Metrics initialized (App Platform: ${GLOBAL_appPlatform ?? 'NONE'})${(environment != Environment.Production) ? ' (SANDBOX)' : ''}` )\r\n\t\t\t\r\n\t\t\t// consent\r\n\t\t\tif( environment == Environment.Production ){\r\n\t\t\t\tthis.logConsentState()\r\n\t\t\t\t// NOTE: timing doesn't seem to work here. Using window event listener instead.\r\n\t\t\t\t// CookieScript.instance.onLoad = () => {\r\n\t\t\t\twindow.addEventListener( 'CookieScriptLoaded', () => {\r\n\t\t\t\t\t// console.debug( `CONSENT::Loaded` )\r\n\t\t\t\t\t// Metrics.logConsentState()\r\n\t\t\t\t\tconst consentData:ConsentData = this.getConsentData()\r\n\t\t\t\t\tif( consentData.state == ConsentState.None )\r\n\t\t\t\t\t\tMetrics.logUI_consentPromptViewed( consentData )\r\n\t\t\t\t\t\r\n\t\t\t\t\t$('#cookiescript_copyright').contents().remove()\r\n\t\t\t\t})\r\n\t\t\t\tCookieScript.instance.onClose = () => {\r\n\t\t\t\t\t// console.debug( 'CONSENT::Close' )\r\n\t\t\t\t\tMetrics.logUI_consentPromptClosed()\r\n\t\t\t\t}\r\n\t\t\t\tCookieScript.instance.onAcceptAll = (/*data:{ categories:[string] }*/) => {\r\n\t\t\t\t\t// console.debug( 'CONSENT::AcceptAll' )\r\n\t\t\t\t\tconst consentState:ConsentData = this.getConsentData()\r\n\t\t\t\t\tif( consentState.state != ConsentState.None ){\r\n\t\t\t\t\t\t// console.debug( 'CONSENT::AcceptAll [GIVEN]' )\r\n\t\t\t\t\t\tMetrics.logConsentGranted()\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tCookieScript.instance.onAccept = (/*data:{ categories:[string] }*/) => {\r\n\t\t\t\t\t// console.debug( `CONSENT::Accept ${data.categories}` )\r\n\t\t\t\t\t// NOTE: if we get a single category it means it's only the essential one \r\n\t\t\t\t\tMetrics.logConsentGranted()\r\n\t\t\t\t}\r\n\t\t\t\tCookieScript.instance.onReject = () => {\r\n\t\t\t\t\t// console.debug( `CONSENT::Reject` )\r\n\t\t\t\t\tMetrics.logConsentGranted()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// marketing params\r\n\t\t\tconst urlParams = new URLSearchParams( window.location.search )\r\n\t\t\tconst marketing_pitch:MarketingPitch|null = (urlParams.has( 'pitch' )) ? urlParams.get( 'pitch' ) as MarketingPitch : null\r\n\t\t\tconst marketing_phase:MarketingPhase|null = (urlParams.has( 'phase' )) ? urlParams.get( 'phase' ) as MarketingPhase : null\r\n\t\t\tconst marketing_geography:string|null = (urlParams.has( 'geo' )) ? urlParams.get( 'geo' ) : null\r\n\t\t\tconst marketing_journey:MarketingJourney|null = (urlParams.has( 'journey' )) ? urlParams.get( 'journey' ) as MarketingJourney : null\r\n\t\t\tthis.setUserProperty( 'ACQ_Pitch', marketing_pitch )\r\n\t\t\tthis.setUserProperty( 'ACQ_Phase', marketing_phase )\r\n\t\t\tthis.setUserProperty( 'ACQ_Geography', marketing_geography )\r\n\t\t\tthis.setUserProperty( 'ACQ_Journey', marketing_journey )\r\n\t\t\t// console.debug( `Marketing params (pitch: ${acquisition_pitch ?? 'NONE'}, phase: ${acquisition_phase ?? 'NONE'}, geo: ${acquisition_geography ?? 'NONE'}, journey: ${acquisition_journey ?? 'NONE'})` )\r\n\t\t} else {\r\n\t\t\tconsole.debug( 'Metrics silenced' )\r\n\t\t}\r\n\t}\r\n\r\n\t// endregion\r\n\t\r\n\t\r\n\t//\r\n\t// region operations\r\n\t//\r\n\t\r\n\tpublic static async logAppClipsCapability(): Promise {\r\n\t\tthis.setUserProperty( 'AppClipsCapability', appClipsCapability )\r\n\t\t\r\n\t\tif( appClipsCapability == AppClipsCapability.Full ){\r\n\t\t\tthis.logEvent( 'ENV_IsAppClipsCapable' )\r\n\t\t\t// NOTE: no need to return promise here since it happens on page load (ie: don't need to await its completion) \r\n\t\t\t// new Promise( (resolve, reject) => {\r\n\t\t\treturn (this.isGTagLoggingEnabled()) ?\r\n\t\t\t\tnew Promise( (resolve, reject) => {\r\n\t\t\t\t\tgtag( 'event', 'ENV_IsAppClipsCapable', {\r\n\t\t\t\t\t\t'event_callback': () => {\r\n\t\t\t\t\t\t\t// console.log( 'G-TAG: ENV_IsAppClipsCapable logged' )\r\n\t\t\t\t\t\t\tresolve()\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t\t: Promise.resolve()\r\n\t\t}\r\n\t\t\r\n\t\treturn Promise.resolve()\r\n\t}\r\n\t\r\n\t\r\n\tpublic static logConsentState(): ConsentData {\r\n\t\tconst consentData:ConsentData = this.getConsentData()\r\n\t\t// console.debug( `CONSENT STATE action: ${consentData.state} categories: ${consentData.categories}` )\r\n\t\tthis.setUserProperty( 'ConsentState', consentData.state )\r\n\t\tthis.setUserProperty( 'ConsentCategories', consentData.categories )\r\n\t\treturn consentData\r\n\t}\r\n\r\n\r\n\tpublic static logUI_consentPromptViewed( data:ConsentData ){\r\n\t\tthis.logEvent( 'UI_ConsentPromptViewed', {\r\n\t\t\tState: data.state,\r\n\t\t\tCategories: data.categories,\r\n\t\t})\r\n\t}\r\n\tpublic static logUI_consentPromptClosed() {\r\n\t\tthis.logEvent( 'UI_ConsentPromptClosed' )\r\n\t}\r\n\tpublic static logConsentGranted() {\r\n\t\tlet categories:ConsentCategory[] = Metrics.logConsentState().categories\r\n\t\tthis.logEvent( 'ConsentGranted', {\r\n\t\t\tLevel: (() => { switch( categories.length ){\r\n\t\t\t\tcase 1: return ConsentLevel.Minimal\r\n\t\t\t\tcase 4: return ConsentLevel.Full\r\n\t\t\t\tdefault: return ConsentLevel.Partial\r\n\t\t\t}})()\r\n\t\t})\r\n\t}\r\n\r\n\r\n\tpublic static logLandingPageViewed( regionIdentifier:string ){\r\n\t\tthis.logEvent( 'LandingPageViewed', {\r\n\t\t\tRegion: regionIdentifier,\r\n\t\t})\r\n\t}\r\n\r\n\t\r\n\tpublic static logPlaceSeen( placeID:string, rank:number ){\r\n\t\tthis.logEvent( 'PlaceSeen', {\r\n\t\t\tID: placeID,\r\n\t\t\tRank: rank\r\n\t\t})\r\n\t}\r\n\t\r\n\t\r\n\tpublic static logSocialFeedPageViewed( marketingPlatform:MarketingPlatform ){\r\n\t\tthis.logEvent( 'SocialFeedPageViewed', {\r\n\t\t\tMarketingPlatform: marketingPlatform,\r\n\t\t})\r\n\t}\r\n\t\r\n\t\r\n\t// A1\r\n\tpublic static logRegionPageViewed( regionIdentifier:string ){\r\n\t\t// A2: switch based on type of region (ie: LocalityPageViewed / RegionPageViewed / CountryPageViewed)\r\n\t\t// A1: all regions same event\r\n\t\tthis.logEvent( 'RegionPageViewed', {\r\n\t\t\tIdentifier: regionIdentifier,\r\n\t\t})\r\n\t\t\r\n\t\t// TODO(perf): abstract these into a framework-agnostic builder (so that we can submit user event only once)\r\n\t\t// if( this.shouldIgnoreEvents )\r\n\t\t// \treturn\r\n\t\t// console.debug( `Incremented user property: ${propertyName} by ${amountToIncrement}` )\r\n\t\t// const identify = new amplitude.Identify().add( propertyName, amountToIncrement )\r\n\t\t// amplitude.identify( identify )\r\n\t\tthis.incrementUserProperty( 'NumRegionViews' )\r\n\t\tthis.prependUserProperty( 'ViewedRegions-HIST', regionIdentifier )\r\n\t\tthis.preInsertUserProperty( 'ViewedRegions-UNIQ', regionIdentifier )\r\n\t}\r\n\t// A2\r\n\t// public static logRegionPageViewed( region:RegionVM ){\r\n\t// \t// A2: switch based on type of region (ie: LocalityPageViewed / RegionPageViewed / CountryPageViewed)\r\n\t// \t// A1: all regions same event\r\n\t// \tthis.logEvent( 'RegionPageViewed', {\r\n\t// \t\tShortIdentifier: region.Identifier,\r\n\t// \t\tIdentifier: region.Identifier,\r\n\t// \t\tName: region.Name,\r\n\t// \t})\r\n\t// }\r\n\tpublic static logUI_regionPage_topSightsSectionViewed( regionIdentifier:string ){\r\n\t\tthis.logEvent( 'UI_RegionPage::TopSightsViewed', {\r\n\t\t\tIdentifier: regionIdentifier,\r\n\t\t})\r\n\t}\r\n\tpublic static logUI_regionPage_otherSightsSectionViewed( regionIdentifier:string ){\r\n\t\tthis.logEvent( 'UI_RegionPage::OtherSightsViewed', {\r\n\t\t\tIdentifier: regionIdentifier,\r\n\t\t})\r\n\t}\r\n\tpublic static logUI_regionPage_nearbyRegionsSectionViewed( regionIdentifier:string ){\r\n\t\tthis.logEvent( 'UI_RegionPage::NearbyRegionsViewed', {\r\n\t\t\tIdentifier: regionIdentifier,\r\n\t\t})\r\n\t}\r\n\r\n\r\n\tpublic static logLaunchPageViewed( regionIdentifier:string|null ){\r\n\t\t// A2: switch based on type of region (ie: LocalityPageViewed / RegionPageViewed / CountryPageViewed)\r\n\t\t// A1: all regions same event\r\n\t\tlet properties = {}\r\n\t\tif( regionIdentifier )\r\n\t\t\tproperties['Region'] = regionIdentifier\r\n\t\t\t\t\r\n\t\tthis.logEvent( 'LaunchPageViewed', properties )\r\n\t}\r\n\r\n\r\n\tpublic static logUI_regionPickerViewed( page:Page ){\r\n\t\t// console.log( `TODO: log event 'UI_RegionBarViewed'`)\r\n\t\tthis.logEvent( 'UI_RegionBarViewed', {\r\n\t\t\tPage: page,\r\n\t\t})\r\n\t}\r\n\r\n\r\n\tpublic static logUI_regionPickerListViewed( page:Page, type:RegionsType ){\r\n\t\t// console.log( `TODO: log event 'UI_RegionsPickerViewed' (type: ${type})`)\r\n\t\tthis.logEvent( 'UI_RegionsPickerViewed', {\r\n\t\t\tPage: page,\r\n\t\t\tType: type,\r\n\t\t})\r\n\t}\r\n\t\r\n\t \r\n\t// A2\r\n\tpublic static logUI_CTAViewed( page:Page, triggerPoint:TriggerPoint, rank?:number ){\r\n\t\tconst eventProperties = {\r\n\t\t\tPage: page,\r\n\t\t\tTriggerPoint: triggerPoint,\r\n\t\t}\r\n\t\tif( rank )\r\n\t\t\teventProperties['Rank'] = rank\r\n\t\t\r\n\t\tthis.logEvent( 'UI_CTAViewed', eventProperties )\r\n\t}\r\n\t// A1\r\n\t// public static logUI_actionBarViewed( placement:Page ){\r\n\t// \tthis.logEvent( 'UI_ActionBarViewed', {\r\n\t// \t\tPage: placement,\r\n\t// \t})\r\n\t// }\r\n\t// public static logUI_sideBarViewed( placement:Page ){\r\n\t// \tthis.logEvent( 'UI_SideBarViewed', {\r\n\t// \t\tPage: placement,\r\n\t// \t})\r\n\t// }\r\n\tpublic static logUI_preRegistrationViewed( page:Page ){\r\n\t\tthis.logEvent( 'UI_PreRegistrationViewed', {\r\n\t\t\tPage: page,\r\n\t\t})\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @param type\r\n\t * @param page the page from which the pitch was viewed\r\n\t * @param rank placement index\r\n\t */\r\n\tpublic static logUI_pitchViewed( type:PitchType, page:Page, rank?:number ){\r\n\t\tconst eventProperties = {\r\n\t\t\tPage: page,\r\n\t\t\tType: type,\r\n\t\t}\r\n\t\tif( rank )\r\n\t\t\teventProperties['Rank'] = rank\r\n\t\t\r\n\t\tthis.logEvent( 'UI_PitchViewed', eventProperties )\r\n\t}\r\n\t\r\n\t\r\n\tpublic static logNAV_viewRegion( identifier:string, page:Page, triggerPoint:TriggerPoint ){\r\n\t\tthis.logEvent( 'NAV_ViewRegion', {\r\n\t\t\tIdentifier: identifier,\r\n\t\t\tPage: page,\r\n\t\t\tTriggerPoint: triggerPoint,\r\n\t\t})\r\n\t}\r\n\r\n\r\n\tpublic static async logNAV_launchApp( appType:AppType, page:Page, triggerPoint:TriggerPoint ): Promise {\r\n\t\tthis.logEvent( 'NAV_LaunchApp', {\r\n\t\t\tAppPlatform: GLOBAL_appPlatform,\r\n\t\t\tAppType: appType,\r\n\t\t\tPage: page,\r\n\t\t\tTriggerPoint: triggerPoint,\r\n\t\t})\r\n\t\t// TODO(arch): confirm that events won't be logged if consent isn't set\r\n\t\treturn (this.isGTagLoggingEnabled()) ?\r\n\t\t\tnew Promise( (resolve, reject) => {\r\n\t\t\t\tgtag( 'event', `NAV_LaunchApp|${triggerPoint == TriggerPoint.ListItem ? 'List' : 'CTA'}`, {\r\n\t\t\t\t\t'event_callback': () => {\r\n\t\t\t\t\t\t// console.log( 'G-TAG: NAV_LaunchApp logged' )\r\n\t\t\t\t\t\tresolve()\r\n\t\t\t\t\t},\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t\t: Promise.resolve()\r\n\t}\r\n\r\n\r\n\tpublic static async logAppLaunched( appType:AppType ): Promise {\r\n\t\tthis.logEvent( 'AppLaunched', {\r\n\t\t\tAppPlatform: GLOBAL_appPlatform,\r\n\t\t\tAppType: appType,\r\n\t\t})\r\n\t\t// TODO(arch): confirm that events won't be logged if consent isn't set\r\n\t\treturn (this.isGTagLoggingEnabled()) ?\r\n\t\t\tnew Promise( (resolve, reject) => {\r\n\t\t\t\tgtag( 'event', 'APP_AppLaunched', {\r\n\t\t\t\t\t'event_callback': () => {\r\n\t\t\t\t\t\tconsole.log( \"G-Tag: 'APP_AppLaunched' logged\" )\r\n\t\t\t\t\t\tresolve()\r\n\t\t\t\t\t},\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t\t: Promise.resolve()\r\n\t}\r\n\t\r\n\t\r\n\tpublic static async flush() : Promise {\r\n\t\tawait amplitude.flush().promise\r\n\t}\r\n\r\n\t// endregion\r\n\t\r\n\t\r\n\t//\r\n\t// region helpers\r\n\t//\r\n\r\n\tprivate static isGTagLoggingEnabled(): boolean {\r\n\t\treturn [Environment.Production, Environment.Staging].some( _ => _ == environment )\r\n\t}\r\n\t\r\n\t\r\n\tprivate static logEvent( name:string, properties?:any ){\r\n\t\tif( this.shouldIgnoreEvents )\r\n\t\t\treturn\r\n\t\t\r\n\t\tconsole.debug( `Event logged: ${name}` )\r\n\t\tif( properties )\r\n\t\t\tconsole.debug( '\\tProperties: %O', properties )\r\n\t\tamplitude.track( name, properties )\r\n\t}\r\n\t\r\n\t\r\n\tprivate static setUserProperty( propertyName:string, value:ValidPropertyType ){\r\n\t\tif( this.shouldIgnoreEvents )\r\n\t\t\treturn\r\n\r\n\t\tconsole.debug( `Set ${propertyName} user property to '${value}'` )\r\n\t\tconst identify = new amplitude.Identify().set( propertyName, value )\r\n\t\tamplitude.identify( identify )\r\n\t}\r\n\tprivate static setOnceUserProperty( propertyName:string, value:ValidPropertyType ){\r\n\t\tif( this.shouldIgnoreEvents )\r\n\t\t\treturn\r\n\r\n\t\tconsole.debug( `Set ${propertyName} user property to '${value}'` )\r\n\t\tconst identify = new amplitude.Identify().setOnce( propertyName, value )\r\n\t\tamplitude.identify( identify )\r\n\t}\r\n\r\n\r\n\tprivate static incrementUserProperty( propertyName:string, amountToIncrement?:number ){\r\n\t\tif( this.shouldIgnoreEvents )\r\n\t\t\treturn\r\n\r\n\t\tamountToIncrement = amountToIncrement || 1\r\n\r\n\t\tconsole.debug( `Incremented ${propertyName} user property ${(1 < amountToIncrement) ? `by ${amountToIncrement}` : ''}` )\r\n\t\tconst identify = new amplitude.Identify().add( propertyName, amountToIncrement )\r\n\t\tamplitude.identify( identify )\r\n\t}\r\n\r\n\r\n\tprivate static prependUserProperty( propertyName:string, value:ValidPropertyType ){\r\n\t\tif( this.shouldIgnoreEvents )\r\n\t\t\treturn\r\n\r\n\t\tconsole.debug( `Prepended '${value}' to ${propertyName} user property` )\r\n\t\tconst identify = new amplitude.Identify().prepend( propertyName, value )\r\n\t\tamplitude.identify( identify )\r\n\t}\r\n\tprivate static appendUserProperty( propertyName:string, value:ValidPropertyType ){\r\n\t\tif( this.shouldIgnoreEvents )\r\n\t\t\treturn\r\n\r\n\t\tconsole.debug( `Appended '${value}' to ${propertyName} user property` )\r\n\t\tconst identify = new amplitude.Identify().append( propertyName, value )\r\n\t\tamplitude.identify( identify )\r\n\t}\r\n\t\r\n\t\r\n\tprivate static preInsertUserProperty( propertyName:string, value:ValidPropertyType ){\r\n\t\tif( this.shouldIgnoreEvents )\r\n\t\t\treturn\r\n\r\n\t\tconsole.debug( `Pre-inserted '${value}' to ${propertyName} user property` )\r\n\t\tconst identify = new amplitude.Identify().preInsert( propertyName, value )\r\n\t\tamplitude.identify( identify )\r\n\t}\r\n\tprivate static postInsertUserProperty( propertyName:string, value:ValidPropertyType ){\r\n\t\tif( this.shouldIgnoreEvents )\r\n\t\t\treturn\r\n\r\n\t\tconsole.debug( `Post-inserted '${value}' to ${propertyName} user property` )\r\n\t\tconst identify = new amplitude.Identify().postInsert( propertyName, value )\r\n\t\tamplitude.identify( identify )\r\n\t}\r\n\r\n\r\n\tprivate static getConsentData(): ConsentData {\r\n\t\tconst consentState:{ action:string|undefined, categories:string[] } = CookieScript.instance.currentState()\r\n\t\tconst state:ConsentState|null = (() : ConsentState|null => { switch( consentState.action ){\r\n\t\t\tcase undefined: return ConsentState.None\r\n\t\t\tcase 'accept': return ConsentState.Accepted\r\n\t\t\tcase 'reject': return ConsentState.Rejected\r\n\t\t}})()\r\n\t\tconst categories:ConsentCategory[] = consentState.categories.map( category => { switch( category ){\r\n\t\t\tcase 'strict': return ConsentCategory.Essential\r\n\t\t\tcase 'functionality': return ConsentCategory.Functional\r\n\t\t\tcase 'performance': return ConsentCategory.Performance\r\n\t\t\tcase 'targeting': return ConsentCategory.Targeting\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.error( `ERROR: Unexpected consent category '${category}'` )\r\n\t\t\t\treturn ConsentCategory.Unknown\r\n\t\t}})\r\n\t\treturn { state: state, categories: categories }\r\n\t}\r\n\t\r\n\t// endregion\r\n\t\r\n\t\r\n\t//\r\n\t// region inner structures\r\n\t//\r\n\t\r\n\tprivate static appInfoPlugin = ( installationID:string ):EnrichmentPlugin => {\r\n\t\tlet clientID:string = installationID.split( '-' ).join( '' ).toLowerCase() // NOTE: JS hack for 'replace all' (REF: https://stackoverflow.com/a/17606289/24177)\r\n\t\t// console.debug( `Client ID: ${clientID}` )\r\n\t\treturn {\r\n\t\t\texecute: async( event:Event ): Promise => {\r\n\t\t\t\tevent.user_properties = {\r\n\t\t\t\t\t...event.user_properties,\r\n\t\t\t\t\tGA_ClientID: clientID,\r\n\t\t\t\t}\r\n\t\t\t\treturn event\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\t// endregion\r\n\r\n}\r\n\r\n\r\ninterface ConsentData {\r\n\tstate:ConsentState\r\n\tcategories:ConsentCategory[]\r\n}\r\n\r\n\r\nexport enum ConsentState {\r\n\tNone = 'None',\r\n\tAccepted = 'Accepted',\r\n\tRejected = 'Rejected',\r\n}\r\nexport enum ConsentCategory {\r\n\tEssential = 'Essential',\r\n\tFunctional = 'Functional',\r\n\tPerformance = 'Performance',\r\n\tTargeting = 'Targeting',\r\n\tUnknown = 'Unknown',\r\n}\r\nexport enum ConsentLevel {\r\n\tMinimal = 'Minimal',\r\n\tPartial = 'Partial',\r\n\tFull = 'Full',\r\n}\r\n\r\n\r\nexport enum Page {\r\n\tLaunchPage = 'LaunchPage',\r\n\tLandingPage = 'LandingPage',\r\n\tRegionPage = 'RegionPage',\r\n\tSocialFeedPage = 'SocialFeedPage',\r\n}\r\n\r\n\r\nexport enum RegionsType {\r\n\tMarkets = 'Markets',\r\n\tRegions = 'Regions'\r\n}\r\n\r\n\r\nexport enum PitchType {\r\n\tApp = 'App',\r\n\tExpertise = 'Expertise',\r\n\tLogistics = 'Logistics',\r\n}\r\n\r\n\r\nexport enum MarketingPlatform {\r\n\tFacebook = 'Facebook',\r\n\tInstagram = 'Instagram',\r\n\tLinkedIn = 'LinkedIn',\r\n\tPinterest = 'Pinterest',\r\n\tReddit = 'Reddit',\r\n\tSnapchat = 'Snapchat',\r\n\tTikTok = 'TikTok',\r\n\tYouTube = 'YouTube',\r\n}\r\nexport enum MarketingPhase {\r\n\tInTrip = 'in',\r\n\tPreTrip = 'pre',\r\n\tPreTrip_LowStake = 'pre-low',\r\n\tPreTrip_HighStake = 'pre-high',\r\n}\r\nexport enum MarketingPitch {\r\n\tDiscover = 'discover',\r\n\tProduct = 'product',\r\n}\r\nexport enum MarketingJourney {\r\n\tDirect = 'direct',\r\n\tWeb = 'web',\r\n}\r\n\r\n\r\n\r\nexport enum Platform {\r\n\tAndroid = 'Android',\r\n\tiOS = 'iOS',\r\n\tWeb = 'Web',\r\n}\r\n\r\n\r\nexport enum AppType {\r\n\tTransient = 'Transient',\r\n\tPermanent = 'Permanent',\r\n}\r\n\r\n\r\nexport enum TriggerPoint {\r\n\tLoad = 'Load',\r\n\tPrimaryCTA = 'PrimaryCTA',\r\n\tSecondaryCTA = 'SecondaryCTA',\r\n\tListItem = 'ListItem',\r\n\tFooterCTA = 'FooterCTA',\r\n\tRegionBar = 'RegionBar',\r\n}\r\n\r\n\r\n// init\r\nMetrics.initialize()\r\n"]}