@mparticle/web-sdk 2.45.0 → 2.46.0
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/mparticle.common.js +34 -24
- package/dist/mparticle.esm.js +34 -24
- package/dist/mparticle.js +105 -34
- package/package.json +1 -1
- package/src/batchUploader.ts +4 -1
- package/src/constants.ts +13 -0
- package/src/integrationCapture.ts +61 -28
- package/src/mp-instance.ts +18 -7
- package/src/sdkToEventsApiConverter.ts +8 -5
- package/src/serverModel.ts +9 -5
- package/src/store.ts +3 -1
package/dist/mparticle.common.js
CHANGED
|
@@ -15,12 +15,19 @@ map:function map(a,b){var c,d,e;if(null===this)throw new TypeError(" this is nul
|
|
|
15
15
|
filter:function filter(a/*, thisArg*/){if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=[],e=2<=arguments.length?arguments[1]:void 0,f=0;f<c;f++)if(f in b){var g=b[f];a.call(e,g,f,b)&&d.push(g);}return d},// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
|
|
16
16
|
isArray:function isArray(a){return "[object Array]"===Object.prototype.toString.call(a)},Base64:Base64$1};
|
|
17
17
|
|
|
18
|
-
var version = "2.
|
|
18
|
+
var version = "2.46.0";
|
|
19
19
|
|
|
20
20
|
var Constants={sdkVersion:version,sdkVendor:"mparticle",platform:"web",Messages:{DeprecationMessages:{MethodIsDeprecatedPostfix:"is a deprecated method and will be removed in future releases",AlternativeMethodPrefix:"Please use the alternate method:"},ErrorMessages:{NoToken:"A token must be specified.",EventNameInvalidType:"Event name must be a valid string value.",EventDataInvalidType:"Event data must be a valid object hash.",LoggingDisabled:"Event logging is currently disabled.",CookieParseError:"Could not parse cookie",EventEmpty:"Event object is null or undefined, cancelling send",APIRequestEmpty:"APIRequest is null or undefined, cancelling send",NoEventType:"Event type must be specified.",TransactionIdRequired:"Transaction ID is required",TransactionRequired:"A transaction attributes object is required",PromotionIdRequired:"Promotion ID is required",BadAttribute:"Attribute value cannot be object or array",BadKey:"Key value cannot be object or array",BadLogPurchase:"Transaction attributes and a product are both required to log a purchase, https://docs.mparticle.com/?javascript#measuring-transactions",AudienceAPINotEnabled:"Your workspace is not enabled to retrieve user audiences."},InformationMessages:{CookieSearch:"Searching for cookie",CookieFound:"Cookie found, parsing values",CookieNotFound:"Cookies not found",CookieSet:"Setting cookie",CookieSync:"Performing cookie sync",SendBegin:"Starting to send event",SendIdentityBegin:"Starting to send event to identity server",SendWindowsPhone:"Sending event to Windows Phone container",SendIOS:"Calling iOS path: ",SendAndroid:"Calling Android JS interface method: ",SendHttp:"Sending event to mParticle HTTP service",SendAliasHttp:"Sending alias request to mParticle HTTP service",SendIdentityHttp:"Sending event to mParticle HTTP service",StartingNewSession:"Starting new Session",StartingLogEvent:"Starting to log event",StartingLogOptOut:"Starting to log user opt in/out",StartingEndSession:"Starting to end session",StartingInitialization:"Starting to initialize",StartingLogCommerceEvent:"Starting to log commerce event",StartingAliasRequest:"Starting to Alias MPIDs",LoadingConfig:"Loading configuration options",AbandonLogEvent:"Cannot log event, logging disabled or developer token not set",AbandonAliasUsers:"Cannot Alias Users, logging disabled or developer token not set",AbandonStartSession:"Cannot start session, logging disabled or developer token not set",AbandonEndSession:"Cannot end session, logging disabled or developer token not set",NoSessionToEnd:"Cannot end session, no active session found"},ValidationMessages:{ModifyIdentityRequestUserIdentitiesPresent:"identityRequests to modify require userIdentities to be present. Request not sent to server. Please fix and try again",IdentityRequesetInvalidKey:"There is an invalid key on your identityRequest object. It can only contain a `userIdentities` object and a `onUserAlias` function. Request not sent to server. Please fix and try again.",OnUserAliasType:"The onUserAlias value must be a function.",UserIdentities:"The userIdentities key must be an object with keys of identityTypes and values of strings. Request not sent to server. Please fix and try again.",UserIdentitiesInvalidKey:"There is an invalid identity key on your `userIdentities` object within the identityRequest. Request not sent to server. Please fix and try again.",UserIdentitiesInvalidValues:"All user identity values must be strings or null. Request not sent to server. Please fix and try again.",AliasMissingMpid:"Alias Request must contain both a destinationMpid and a sourceMpid",AliasNonUniqueMpid:"Alias Request's destinationMpid and sourceMpid must be unique",AliasMissingTime:"Alias Request must have both a startTime and an endTime",AliasStartBeforeEndTime:"Alias Request's endTime must be later than its startTime"}},NativeSdkPaths:{LogEvent:"logEvent",SetUserTag:"setUserTag",RemoveUserTag:"removeUserTag",SetUserAttribute:"setUserAttribute",RemoveUserAttribute:"removeUserAttribute",SetSessionAttribute:"setSessionAttribute",AddToCart:"addToCart",RemoveFromCart:"removeFromCart",ClearCart:"clearCart",LogOut:"logOut",SetUserAttributeList:"setUserAttributeList",RemoveAllUserAttributes:"removeAllUserAttributes",GetUserAttributesLists:"getUserAttributesLists",GetAllUserAttributes:"getAllUserAttributes",Identify:"identify",Logout:"logout",Login:"login",Modify:"modify",Alias:"aliasUsers",Upload:"upload"},StorageNames:{localStorageName:"mprtcl-api",localStorageNameV3:"mprtcl-v3",cookieName:"mprtcl-api",cookieNameV2:"mprtcl-v2",cookieNameV3:"mprtcl-v3",localStorageNameV4:"mprtcl-v4",localStorageProductsV4:"mprtcl-prodv4",cookieNameV4:"mprtcl-v4",currentStorageName:"mprtcl-v4",currentStorageProductsName:"mprtcl-prodv4"},DefaultConfig:{cookieDomain:null,cookieExpiration:365,logLevel:null,timeout:300,sessionTimeout:30,maxProducts:20,forwarderStatsTimeout:5e3,integrationDelayTimeout:5e3,maxCookieSize:3e3,aliasMaxWindow:90,uploadInterval:0// Maximum milliseconds in between batch uploads, below 500 will mean immediate upload. The server returns this as a string, but we are using it as a number internally
|
|
21
21
|
},DefaultBaseUrls:{v1SecureServiceUrl:"jssdks.mparticle.com/v1/JS/",v2SecureServiceUrl:"jssdks.mparticle.com/v2/JS/",v3SecureServiceUrl:"jssdks.mparticle.com/v3/JS/",configUrl:"jssdkcdns.mparticle.com/JS/v2/",identityUrl:"identity.mparticle.com/v1/",aliasUrl:"jssdks.mparticle.com/v1/identity/",userAudienceUrl:"nativesdks.mparticle.com/v1/"},// These are the paths that are used to construct the CNAME urls
|
|
22
22
|
CNAMEUrlPaths:{v1SecureServiceUrl:"/webevents/v1/JS/",v2SecureServiceUrl:"/webevents/v2/JS/",v3SecureServiceUrl:"/webevents/v3/JS/",configUrl:"/tags/JS/v2/",identityUrl:"/identity/v1/",aliasUrl:"/webevents/v1/identity/"},Base64CookieKeys:{csm:1,sa:1,ss:1,lsa:1,ua:1,ui:1,csd:1,ia:1,con:1},// https://go.mparticle.com/work/SQDSDKS-6039
|
|
23
|
-
SDKv2NonMPIDCookieKeys:{gs:1,cu:1,l:1,globalSettings:1,currentUserMPID:1},HTTPCodes:{noHttpCoverage:-1,activeIdentityRequest:-2,activeSession:-3,validationIssue:-4,nativeIdentityRequest:-5,loggingDisabledOrMissingAPIKey:-6,tooManyRequests:429},FeatureFlags:{ReportBatching:"reportBatching",EventBatchingIntervalMillis:"eventBatchingIntervalMillis",OfflineStorage:"offlineStorage",DirectUrlRouting:"directURLRouting",CacheIdentity:"cacheIdentity",AudienceAPI:"audienceAPI"
|
|
23
|
+
SDKv2NonMPIDCookieKeys:{gs:1,cu:1,l:1,globalSettings:1,currentUserMPID:1},HTTPCodes:{noHttpCoverage:-1,activeIdentityRequest:-2,activeSession:-3,validationIssue:-4,nativeIdentityRequest:-5,loggingDisabledOrMissingAPIKey:-6,tooManyRequests:429},FeatureFlags:{ReportBatching:"reportBatching",EventBatchingIntervalMillis:"eventBatchingIntervalMillis",OfflineStorage:"offlineStorage",DirectUrlRouting:"directURLRouting",CacheIdentity:"cacheIdentity",AudienceAPI:"audienceAPI",// CaptureIntegrationSpecificIds (legacy): boolean flag from server/UI
|
|
24
|
+
// - 'True' → capture all integration-specific IDs
|
|
25
|
+
// - 'False' → capture none
|
|
26
|
+
CaptureIntegrationSpecificIds:"captureIntegrationSpecificIds",// CaptureIntegrationSpecificIdsV2 (new): string mode from server
|
|
27
|
+
// - 'all' → capture all IDs
|
|
28
|
+
// - 'none' → capture none
|
|
29
|
+
// - 'roktonly' → capture only Rokt-related IDs
|
|
30
|
+
CaptureIntegrationSpecificIdsV2:"captureIntegrationSpecificIdsV2",AstBackgroundEvents:"astBackgroundEvents"},DefaultInstance:"default_instance",CCPAPurpose:"data_sale_opt_out",IdentityMethods:{Modify:"modify",Logout:"logout",Login:"login",Identify:"identify"},Environment:{Development:"development",Production:"production"},CaptureIntegrationSpecificIdsV2Modes:{All:"all",None:"none",RoktOnly:"roktonly"}};var ONE_DAY_IN_SECONDS=86400;var MILLIS_IN_ONE_SEC=1e3;// https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
|
|
24
31
|
var HTTP_OK=200;var HTTP_ACCEPTED=202;var HTTP_BAD_REQUEST=400;
|
|
25
32
|
|
|
26
33
|
/******************************************************************************
|
|
@@ -391,9 +398,10 @@ var dist = {};
|
|
|
391
398
|
|
|
392
399
|
var SDKIdentityTypeEnum;(function(a){a.other="other",a.customerId="customerid",a.facebook="facebook",a.twitter="twitter",a.google="google",a.microsoft="microsoft",a.yahoo="yahoo",a.email="email",a.alias="alias",a.facebookCustomAudienceId="facebookcustomaudienceid",a.otherId2="other2",a.otherId3="other3",a.otherId4="other4",a.otherId5="other5",a.otherId6="other6",a.otherId7="other7",a.otherId8="other8",a.otherId9="other9",a.otherId10="other10",a.mobileNumber="mobile_number",a.phoneNumber2="phone_number_2",a.phoneNumber3="phone_number_3";})(SDKIdentityTypeEnum||(SDKIdentityTypeEnum={}));
|
|
393
400
|
|
|
394
|
-
var FeatureFlags$2=Constants.FeatureFlags,CaptureIntegrationSpecificIds$1=FeatureFlags$2.CaptureIntegrationSpecificIds;function convertEvents(a,b,c){if(!a)return null;if(!b||1>b.length)return null;for(var d,e=c._IntegrationCapture,f=c._Helpers,g=f.getFeatureFlag,h=c.Identity.getCurrentUser(),i=[],j=null,k=0,l=b;k<l.length;k++)if(d=l[k],d){j=d;var m=convertEvent(d);m&&i.push(m);}if(!j)return null;var n=null;// Add the consent state from either the Last Event or the user
|
|
401
|
+
var FeatureFlags$2=Constants.FeatureFlags,CaptureIntegrationSpecificIds$1=FeatureFlags$2.CaptureIntegrationSpecificIds,CaptureIntegrationSpecificIdsV2$1=FeatureFlags$2.CaptureIntegrationSpecificIdsV2;function convertEvents(a,b,c){if(!a)return null;if(!b||1>b.length)return null;for(var d,e=c._IntegrationCapture,f=c._Helpers,g=f.getFeatureFlag,h=c.Identity.getCurrentUser(),i=[],j=null,k=0,l=b;k<l.length;k++)if(d=l[k],d){j=d;var m=convertEvent(d);m&&i.push(m);}if(!j)return null;var n=null;// Add the consent state from either the Last Event or the user
|
|
395
402
|
isEmpty(j.ConsentState)?!isEmpty(h)&&(n=h.getConsentState()):n=j.ConsentState;var o={source_request_id:c._Helpers.generateUniqueId(),mpid:a,timestamp_unixtime_ms:new Date().getTime(),environment:j.Debug?dist.BatchEnvironmentEnum.development:dist.BatchEnvironmentEnum.production,events:i,mp_deviceid:j.DeviceId,sdk_version:j.SDKVersion,// TODO: Refactor this to read from _Store or a global config
|
|
396
|
-
application_info:{application_version:j.AppVersion,application_name:j.AppName,package:j.Package,sideloaded_kits_count:c._Store.sideloadedKitsCount},device_info:{platform:dist.DeviceInformationPlatformEnum.web,screen_width:"undefined"!=typeof window&&"undefined"!=typeof window.screen?window.screen.width:0,screen_height:"undefined"!=typeof window&&"undefined"!=typeof window.screen?window.screen.height:0},user_attributes:j.UserAttributes,user_identities:convertUserIdentities(j.UserIdentities),consent_state:convertConsentState(n),integration_attributes:j.IntegrationAttributes};j.DataPlan&&j.DataPlan.PlanId&&(o.context={data_plan:{plan_id:j.DataPlan.PlanId,plan_version:j.DataPlan.PlanVersion||void 0}})
|
|
403
|
+
application_info:{application_version:j.AppVersion,application_name:j.AppName,package:j.Package,sideloaded_kits_count:c._Store.sideloadedKitsCount},device_info:{platform:dist.DeviceInformationPlatformEnum.web,screen_width:"undefined"!=typeof window&&"undefined"!=typeof window.screen?window.screen.width:0,screen_height:"undefined"!=typeof window&&"undefined"!=typeof window.screen?window.screen.height:0},user_attributes:j.UserAttributes,user_identities:convertUserIdentities(j.UserIdentities),consent_state:convertConsentState(n),integration_attributes:j.IntegrationAttributes};j.DataPlan&&j.DataPlan.PlanId&&(o.context={data_plan:{plan_id:j.DataPlan.PlanId,plan_version:j.DataPlan.PlanVersion||void 0}});// https://go.mparticle.com/work/SQDSDKS-7639
|
|
404
|
+
var p=g&&!!g(CaptureIntegrationSpecificIds$1),q=g&&g(CaptureIntegrationSpecificIdsV2$1),r=q&&q!==Constants.CaptureIntegrationSpecificIdsV2Modes.None||!0===p;if(r){var s=null===e||void 0===e?void 0:e.getClickIdsAsPartnerIdentities();isEmpty(s)||(o.partner_identities=s);}return o}function convertConsentState(a){if(isEmpty(a))return null;var b={gdpr:convertGdprConsentState(a.getGDPRConsentState()),ccpa:convertCcpaConsentState(a.getCCPAConsentState())};return b}function convertGdprConsentState(a){if(!a)return null;var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]={consented:a[c].Consented,hardware_id:a[c].HardwareId,document:a[c].ConsentDocument,timestamp_unixtime_ms:a[c].Timestamp,location:a[c].Location});return b}function convertCcpaConsentState(a){if(!a)return null;var b={data_sale_opt_out:{consented:a.Consented,hardware_id:a.HardwareId,document:a.ConsentDocument,timestamp_unixtime_ms:a.Timestamp,location:a.Location}};return b}function convertUserIdentities(a){if(!a||!a.length)return null;for(var b,c={},d=0,e=a;d<e.length;d++)switch(b=e[d],b.Type){case Types.IdentityType.CustomerId:c.customer_id=b.Identity;break;case Types.IdentityType.Email:c.email=b.Identity;break;case Types.IdentityType.Facebook:c.facebook=b.Identity;break;case Types.IdentityType.FacebookCustomAudienceId:c.facebook_custom_audience_id=b.Identity;break;case Types.IdentityType.Google:c.google=b.Identity;break;case Types.IdentityType.Microsoft:c.microsoft=b.Identity;break;case Types.IdentityType.Other:c.other=b.Identity;break;case Types.IdentityType.Other2:c.other_id_2=b.Identity;break;case Types.IdentityType.Other3:c.other_id_3=b.Identity;break;case Types.IdentityType.Other4:c.other_id_4=b.Identity;break;case Types.IdentityType.Other5:c.other_id_5=b.Identity;break;case Types.IdentityType.Other6:c.other_id_6=b.Identity;break;case Types.IdentityType.Other7:c.other_id_7=b.Identity;break;case Types.IdentityType.Other8:c.other_id_8=b.Identity;break;case Types.IdentityType.Other9:c.other_id_9=b.Identity;break;case Types.IdentityType.Other10:c.other_id_10=b.Identity;break;case Types.IdentityType.MobileNumber:c.mobile_number=b.Identity;break;case Types.IdentityType.PhoneNumber2:c.phone_number_2=b.Identity;break;case Types.IdentityType.PhoneNumber3:c.phone_number_3=b.Identity;break;}return c}function convertEvent(a){if(!a)return null;switch(a.EventDataType){case Types.MessageType.AppStateTransition:return convertAST(a);case Types.MessageType.Commerce:return convertCommerceEvent(a);case Types.MessageType.CrashReport:return convertCrashReportEvent(a);case Types.MessageType.OptOut:return convertOptOutEvent(a);case Types.MessageType.PageEvent:// Note: Media Events are also sent as PageEvents/CustomEvents
|
|
397
405
|
return convertCustomEvent(a);case Types.MessageType.PageView:return convertPageViewEvent(a);case Types.MessageType.Profile://deprecated and not supported by the web SDK
|
|
398
406
|
return null;case Types.MessageType.SessionEnd:return convertSessionEndEvent(a);case Types.MessageType.SessionStart:return convertSessionStartEvent(a);case Types.MessageType.UserAttributeChange:return convertUserAttributeChangeEvent(a);case Types.MessageType.UserIdentityChange:return convertUserIdentityChangeEvent(a);}return null}function convertProductActionType(a){if(!a)return dist.ProductActionActionEnum.unknown;return a===SDKProductActionType.AddToCart?dist.ProductActionActionEnum.addToCart:a===SDKProductActionType.AddToWishlist?dist.ProductActionActionEnum.addToWishlist:a===SDKProductActionType.Checkout?dist.ProductActionActionEnum.checkout:a===SDKProductActionType.CheckoutOption?dist.ProductActionActionEnum.checkoutOption:a===SDKProductActionType.Click?dist.ProductActionActionEnum.click:a===SDKProductActionType.Purchase?dist.ProductActionActionEnum.purchase:a===SDKProductActionType.Refund?dist.ProductActionActionEnum.refund:a===SDKProductActionType.RemoveFromCart?dist.ProductActionActionEnum.removeFromCart:a===SDKProductActionType.RemoveFromWishlist?dist.ProductActionActionEnum.removeFromWishlist:a===SDKProductActionType.ViewDetail?dist.ProductActionActionEnum.viewDetail:dist.ProductActionActionEnum.unknown}function convertProductAction(a){if(!a.ProductAction)return null;var b={action:convertProductActionType(a.ProductAction.ProductActionType),checkout_step:a.ProductAction.CheckoutStep,checkout_options:a.ProductAction.CheckoutOptions,transaction_id:a.ProductAction.TransactionId,affiliation:a.ProductAction.Affiliation,total_amount:a.ProductAction.TotalAmount,tax_amount:a.ProductAction.TaxAmount,shipping_amount:a.ProductAction.ShippingAmount,coupon_code:a.ProductAction.CouponCode,products:convertProducts(a.ProductAction.ProductList)};return b}function convertProducts(a){if(!a||!a.length)return null;for(var b=[],c=0,d=a;c<d.length;c++){var e=d[c],f={id:e.Sku,name:e.Name,brand:e.Brand,category:e.Category,variant:e.Variant,total_product_amount:e.TotalAmount,position:e.Position,price:e.Price,quantity:e.Quantity,coupon_code:e.CouponCode,custom_attributes:e.Attributes};b.push(f);}return b}function convertPromotionAction(a){if(!a.PromotionAction)return null;var b={action:a.PromotionAction.PromotionActionType,promotions:convertPromotions(a.PromotionAction.PromotionList)};return b}function convertPromotions(a){if(!a||!a.length)return null;for(var b=[],c=0,d=a;c<d.length;c++){var e=d[c],f={id:e.Id,name:e.Name,creative:e.Creative,position:e.Position};b.push(f);}return b}function convertImpressions(a){if(!a.ProductImpressions)return null;for(var b=[],c=0,d=a.ProductImpressions;c<d.length;c++){var e=d[c],f={product_impression_list:e.ProductImpressionList,products:convertProducts(e.ProductList)};b.push(f);}return b}function convertShoppingCart(a){if(!a.ShoppingCart||!a.ShoppingCart.ProductList||!a.ShoppingCart.ProductList.length)return null;var b={products:convertProducts(a.ShoppingCart.ProductList)};return b}function convertCommerceEvent(a){var b=convertBaseEventData(a),c={custom_flags:a.CustomFlags,product_action:convertProductAction(a),promotion_action:convertPromotionAction(a),product_impressions:convertImpressions(a),shopping_cart:convertShoppingCart(a),currency_code:a.CurrencyCode};return c=Object.assign(c,b),{event_type:dist.EventTypeEnum.commerceEvent,data:c}}function convertCrashReportEvent(a){var b=convertBaseEventData(a),c={message:a.EventName};return c=Object.assign(c,b),{event_type:dist.EventTypeEnum.crashReport,data:c}}function convertAST(a){var b=convertBaseEventData(a),c=dist.ApplicationStateTransitionEventDataApplicationTransitionTypeEnum,d=c.applicationBackground,e=c.applicationInitialized,f=a.IsBackgroundAST?d:e,g={application_transition_type:f,is_first_run:a.IsFirstRun,is_upgrade:!1,launch_referral:a.LaunchReferral};// Determine the transition type based on IsBackgroundAST flag
|
|
399
407
|
return g=Object.assign(g,b),{event_type:dist.EventTypeEnum.applicationStateTransition,data:g}}function convertSessionEndEvent(a){var b=convertBaseEventData(a),c={session_duration_ms:a.SessionLength//note: External Events DTO does not support the session mpids array as of this time.
|
|
@@ -444,8 +452,8 @@ function appendUserInfo(a,b){if(b){if(!a)return b.MPID=null,b.ConsentState=null,
|
|
|
444
452
|
// TODO: Handle cases where Local Storage is unavailable
|
|
445
453
|
// Potentially shared between Vault and Persistence as well
|
|
446
454
|
// https://go.mparticle.com/work/SQDSDKS-5022
|
|
447
|
-
return e>=f},a.prototype.shouldDebounceAndUpdateLastASTTime=function(){var a=Date.now();return !!(a-this.lastASTEventTime<this.AST_DEBOUNCE_MS)||(this.lastASTEventTime=a,!1)},a.prototype.createBackgroundASTEvent=function(){var a=Date.now(),b=this.mpInstance,c=b._Store,d=b.Identity,e=b._timeOnSiteTimer,f=b._Helpers,g=c.sessionId,h=c.deviceId,i=c.sessionStartDate,j=c.SDKConfig,k=f.generateUniqueId,l=f.getFeatureFlag,m=d.getCurrentUser,n={AppName:j.appName,AppVersion:j.appVersion,Package:j["package"],EventDataType:MessageType$1.AppStateTransition,Timestamp:a,SessionId:g,DeviceId:h,IsFirstRun:!1,SourceMessageId:k(),SDKVersion:Constants.sdkVersion,CustomFlags:{},EventAttributes:{},SessionStartDate:(null===i||void 0===i?void 0:i.getTime())||a,Debug:j.isDevelopmentMode,ActiveTimeOnSite:(null===e||void 0===e?void 0:e.getTimeInForeground())||0,IsBackgroundAST:!0},o=__assign({},n.CustomFlags),p=c.integrationAttributes;// https://go.mparticle.com/work/SQDSDKS-5053
|
|
448
|
-
if(
|
|
455
|
+
return e>=f},a.prototype.shouldDebounceAndUpdateLastASTTime=function(){var a=Date.now();return !!(a-this.lastASTEventTime<this.AST_DEBOUNCE_MS)||(this.lastASTEventTime=a,!1)},a.prototype.createBackgroundASTEvent=function(){var a=Date.now(),b=this.mpInstance,c=b._Store,d=b.Identity,e=b._timeOnSiteTimer,f=b._Helpers,g=c.sessionId,h=c.deviceId,i=c.sessionStartDate,j=c.SDKConfig,k=f.generateUniqueId,l=f.getFeatureFlag,m=d.getCurrentUser,n={AppName:j.appName,AppVersion:j.appVersion,Package:j["package"],EventDataType:MessageType$1.AppStateTransition,Timestamp:a,SessionId:g,DeviceId:h,IsFirstRun:!1,SourceMessageId:k(),SDKVersion:Constants.sdkVersion,CustomFlags:{},EventAttributes:{},SessionStartDate:(null===i||void 0===i?void 0:i.getTime())||a,Debug:j.isDevelopmentMode,ActiveTimeOnSite:(null===e||void 0===e?void 0:e.getTimeInForeground())||0,IsBackgroundAST:!0},o=__assign({},n.CustomFlags),p=c.integrationAttributes,q=l(Constants.FeatureFlags.CaptureIntegrationSpecificIds),r=l(Constants.FeatureFlags.CaptureIntegrationSpecificIdsV2)||"",s=r&&r!==Constants.CaptureIntegrationSpecificIdsV2Modes.None||!0===q;// https://go.mparticle.com/work/SQDSDKS-5053
|
|
456
|
+
if(s){this.mpInstance._IntegrationCapture.capture();var t=this.mpInstance._IntegrationCapture.getClickIdsAsCustomFlags();o=__assign(__assign({},t),o);var u=this.mpInstance._IntegrationCapture.getClickIdsAsIntegrationAttributes();p=__assign(__assign({},u),p);}return n.CustomFlags=o,n.IntegrationAttributes=p,appendUserInfo(m(),n),n},a.prototype.addEventListeners=function(){var a=this,b=this,c=function(){// Check for debounce before creating and queueing event
|
|
449
457
|
var c=a.mpInstance._Helpers.getFeatureFlag,d=Constants.FeatureFlags.AstBackgroundEvents;if(c(d)){if(b.shouldDebounceAndUpdateLastASTTime())return;// Add application state transition event to queue
|
|
450
458
|
var e=b.createBackgroundASTEvent();b.queueEvent(e);}// Then trigger the upload with beacon
|
|
451
459
|
b.prepareAndUpload(!1,b.isBeaconAvailable());};document.addEventListener("visibilitychange",function(){"hidden"===document.visibilityState&&c();}),window.addEventListener("beforeunload",c),window.addEventListener("pagehide",c);},a.prototype.isBeaconAvailable=function(){return !!navigator.sendBeacon},a.prototype.triggerUploadInterval=function(a,b){var c=this;void 0===a&&(a=!1),void 0===b&&(b=!1),setTimeout(function(){c.prepareAndUpload(a,b);},this.uploadIntervalMillis);},a.prototype.queueEvent=function(a){if(!isEmpty(a)){var b=this.mpInstance.Logger.verbose;this.eventsQueuedForProcessing.push(a),this.offlineStorageEnabled&&this.eventVault&&this.eventVault.store(this.eventsQueuedForProcessing),b("Queuing event: ".concat(JSON.stringify(a))),b("Queued event count: ".concat(this.eventsQueuedForProcessing.length)),this.shouldTriggerImmediateUpload(a.EventDataType)&&this.prepareAndUpload(!1,!1);}},a.prototype.shouldTriggerImmediateUpload=function(a){var b=[MessageType$1.Commerce,MessageType$1.UserIdentityChange];return !this.batchingEnabled||b.includes(a)},(a.createNewBatches=function(a,b,c){if(!b||!a||!a.length)return null;//bucket by MPID, and then by session, ordered by timestamp
|
|
@@ -561,7 +569,7 @@ var c=b.Identity.getCurrentUser();return a===(null===c||void 0===c?void 0:c.getM
|
|
|
561
569
|
// such as if the SDK is being self-hosted and the flags are different on the server config
|
|
562
570
|
// https://go.mparticle.com/work/SQDSDKS-6317
|
|
563
571
|
d.SDKConfig.flags=processFlags(a);var j=processBaseUrls(a,d.SDKConfig.flags,c);for(var k in j)d.SDKConfig[k]=j[k];e?(d.SDKConfig.workspaceToken=e,b._timeOnSiteTimer=new ForegroundTimeTracker(e)):b.Logger.warning("You should have a workspaceToken on your config object for security purposes."),d.storageName=f(e),d.prodStorageName=g(e),a.hasOwnProperty("noFunctional")&&d.setNoFunctional(a.noFunctional),a.hasOwnProperty("noTargeting")&&d.setNoTargeting(a.noTargeting),d.SDKConfig.requiredWebviewBridgeName=i||e,d.webviewBridgeEnabled=h(d.SDKConfig.requiredWebviewBridgeName,d.SDKConfig.minWebviewBridgeVersion),d.configurationLoaded=!0;};}// https://go.mparticle.com/work/SQDSDKS-6317
|
|
564
|
-
function processFlags(a){var b={},c=Constants.FeatureFlags,d=c.ReportBatching,e=c.EventBatchingIntervalMillis,f=c.OfflineStorage,g=c.DirectUrlRouting,h=c.CacheIdentity,i=c.AudienceAPI,j=c.CaptureIntegrationSpecificIds,k=c.AstBackgroundEvents;return a.flags?(b[d]=a.flags[d]||!1,b[e]=parseNumber(a.flags[e])||Constants.DefaultConfig.uploadInterval,b[f]=a.flags[f]||"0",b[g]="True"===a.flags[g],b[h]="True"===a.flags[h],b[i]="True"===a.flags[i],b[j]="True"===a.flags[j],b[k]="True"===a.flags[
|
|
572
|
+
function processFlags(a){var b={},c=Constants.FeatureFlags,d=c.ReportBatching,e=c.EventBatchingIntervalMillis,f=c.OfflineStorage,g=c.DirectUrlRouting,h=c.CacheIdentity,i=c.AudienceAPI,j=c.CaptureIntegrationSpecificIds,k=c.CaptureIntegrationSpecificIdsV2,l=c.AstBackgroundEvents;return a.flags?(b[d]=a.flags[d]||!1,b[e]=parseNumber(a.flags[e])||Constants.DefaultConfig.uploadInterval,b[f]=a.flags[f]||"0",b[g]="True"===a.flags[g],b[h]="True"===a.flags[h],b[i]="True"===a.flags[i],b[j]="True"===a.flags[j],b[k]=a.flags[k]||"none",b[l]="True"===a.flags[l],b):{};// https://go.mparticle.com/work/SQDSDKS-6317
|
|
565
573
|
// Passed in config flags take priority over defaults
|
|
566
574
|
}function processBaseUrls(a,b,c){// an API key is not present in a webview only mode. In this case, no baseUrls are needed
|
|
567
575
|
if(!c)return {};// Set default baseUrls
|
|
@@ -1085,12 +1093,13 @@ function convertCustomFlags(a,b){var c=[];for(var d in b.flags={},a.CustomFlags)
|
|
|
1085
1093
|
// tracked. If this is an `optOut` Event, we set `optOut` to the inverse of the SDK's
|
|
1086
1094
|
// `isEnabled` boolean which is controlled via `MPInstanceManager.setOptOut`.
|
|
1087
1095
|
// TODO: Why is Webview Bridge Enabled or Opt Out necessary here?
|
|
1088
|
-
if(a._Store.sessionId||b.messageType===Types.MessageType.OptOut||a._Store.webviewBridgeEnabled){var h=__assign({},b.customFlags),i=a._Store.integrationAttributes;// https://go.mparticle.com/work/SQDSDKS-5053
|
|
1089
|
-
|
|
1096
|
+
if(a._Store.sessionId||b.messageType===Types.MessageType.OptOut||a._Store.webviewBridgeEnabled){var h=__assign({},b.customFlags),i=a._Store.integrationAttributes,j=a._Helpers.getFeatureFlag,k=j&&j(Constants.FeatureFlags.CaptureIntegrationSpecificIds),l=j&&(j(Constants.FeatureFlags.CaptureIntegrationSpecificIdsV2)||""),m=l&&l!==Constants.CaptureIntegrationSpecificIdsV2Modes.None||!0===k;// https://go.mparticle.com/work/SQDSDKS-5053
|
|
1097
|
+
// https://go.mparticle.com/work/SQDSDKS-7639
|
|
1098
|
+
if(m){a._IntegrationCapture.capture();var n=a._IntegrationCapture.getClickIdsAsCustomFlags();h=__assign(__assign({},n),h);var o=a._IntegrationCapture.getClickIdsAsIntegrationAttributes();i=__assign(__assign({},o),i);}f=b.hasOwnProperty("toEventAPIObject")?b.toEventAPIObject():{// This is an artifact from v2 events where SessionStart/End and AST event
|
|
1090
1099
|
// names are numbers (1, 2, or 10), but going forward with v3, these lifecycle
|
|
1091
1100
|
// events do not have names, but are denoted by their `event_type`
|
|
1092
1101
|
EventName:b.name||b.messageType,EventCategory:b.eventType,EventAttributes:a._Helpers.sanitizeAttributes(b.data,b.name),ActiveTimeOnSite:null===(d=a._timeOnSiteTimer)||void 0===d?void 0:d.getTimeInForeground(),SourceMessageId:b.sourceMessageId||a._Helpers.generateUniqueId(),EventDataType:b.messageType,CustomFlags:h,UserAttributeChanges:b.userAttributeChanges,UserIdentityChanges:b.userIdentityChanges},b.messageType!==Types.MessageType.SessionEnd&&(a._Store.dateLastEventSent=new Date),e={// FIXME: Deprecate when we get rid of V2
|
|
1093
|
-
Store:a._Store.serverSettings,SDKVersion:Constants.sdkVersion,SessionId:a._Store.sessionId,SessionStartDate:a._Store.sessionStartDate?a._Store.sessionStartDate.getTime():0,Debug:a._Store.SDKConfig.isDevelopmentMode,Location:a._Store.currentPosition,OptOut:g,ExpandedEventCount:0,AppVersion:a.getAppVersion(),AppName:a.getAppName(),Package:a._Store.SDKConfig["package"],ClientGeneratedId:a._Store.clientId,DeviceId:a._Store.deviceId,IntegrationAttributes:i,CurrencyCode:a._Store.currencyCode,DataPlan:a._Store.SDKConfig.dataPlan?a._Store.SDKConfig.dataPlan:{}},f.EventDataType===MessageType.AppStateTransition&&(f.IsFirstRun=a._Store.isFirstRun,f.LaunchReferral=window.location.href||null),f.CurrencyCode=a._Store.currencyCode;var
|
|
1102
|
+
Store:a._Store.serverSettings,SDKVersion:Constants.sdkVersion,SessionId:a._Store.sessionId,SessionStartDate:a._Store.sessionStartDate?a._Store.sessionStartDate.getTime():0,Debug:a._Store.SDKConfig.isDevelopmentMode,Location:a._Store.currentPosition,OptOut:g,ExpandedEventCount:0,AppVersion:a.getAppVersion(),AppName:a.getAppName(),Package:a._Store.SDKConfig["package"],ClientGeneratedId:a._Store.clientId,DeviceId:a._Store.deviceId,IntegrationAttributes:i,CurrencyCode:a._Store.currencyCode,DataPlan:a._Store.SDKConfig.dataPlan?a._Store.SDKConfig.dataPlan:{}},f.EventDataType===MessageType.AppStateTransition&&(f.IsFirstRun=a._Store.isFirstRun,f.LaunchReferral=window.location.href||null),f.CurrencyCode=a._Store.currencyCode;var p=c||a.Identity.getCurrentUser();return appendUserInfo(p,f),b.messageType===Types.MessageType.SessionEnd&&(f.SessionLength=a._Store.dateLastEventSent.getTime()-a._Store.sessionStartDate.getTime(),f.currentSessionMPIDs=a._Store.currentSessionMPIDs,f.EventAttributes=a._Store.sessionAttributes,a._Store.currentSessionMPIDs=[],a._Store.sessionStartDate=null),e.Timestamp=a._Store.dateLastEventSent.getTime(),a._Helpers.extend({},f,e)}return null},this.convertEventToV2DTO=function(c){var d={n:c.EventName,et:c.EventCategory,ua:c.UserAttributes,ui:c.UserIdentities,ia:c.IntegrationAttributes,str:c.Store,attrs:c.EventAttributes,sdk:c.SDKVersion,sid:c.SessionId,sl:c.SessionLength,ssd:c.SessionStartDate,dt:c.EventDataType,dbg:c.Debug,ct:c.Timestamp,lc:c.Location,o:c.OptOut,eec:c.ExpandedEventCount,av:c.AppVersion,cgid:c.ClientGeneratedId,das:c.DeviceId,mpid:c.MPID,smpids:c.currentSessionMPIDs};c.DataPlan&&c.DataPlan.PlanId&&(d.dp_id=c.DataPlan.PlanId,c.DataPlan.PlanVersion&&(d.dp_v=c.DataPlan.PlanVersion));var e=b.convertToConsentStateV2DTO(c.ConsentState);return e&&(d.con=e),c.EventDataType===MessageType.AppStateTransition&&(d.fr=c.IsFirstRun,d.iu=!1,d.at=ApplicationTransitionType.AppInit,d.lr=c.LaunchReferral,d.attrs=null),c.CustomFlags&&convertCustomFlags(c,d),c.EventDataType===MessageType.Commerce?(d.cu=c.CurrencyCode,c.ShoppingCart&&(d.sc={pl:convertProductListToV2DTO(c.ShoppingCart.ProductList)}),c.ProductAction?d.pd={an:c.ProductAction.ProductActionType,cs:a._Helpers.parseNumber(c.ProductAction.CheckoutStep),co:c.ProductAction.CheckoutOptions,pl:convertProductListToV2DTO(c.ProductAction.ProductList),ti:c.ProductAction.TransactionId,ta:c.ProductAction.Affiliation,tcc:c.ProductAction.CouponCode,tr:a._Helpers.parseNumber(c.ProductAction.TotalAmount),ts:a._Helpers.parseNumber(c.ProductAction.ShippingAmount),tt:a._Helpers.parseNumber(c.ProductAction.TaxAmount)}:c.PromotionAction?d.pm={an:c.PromotionAction.PromotionActionType,pl:c.PromotionAction.PromotionList.map(function(a){return {id:a.Id,nm:a.Name,cr:a.Creative,ps:a.Position?a.Position:0}})}:c.ProductImpressions&&(d.pi=c.ProductImpressions.map(function(a){return {pil:a.ProductImpressionList,pl:convertProductListToV2DTO(a.ProductList)}}))):c.EventDataType===MessageType.Profile&&(d.pet=c.ProfileMessageType),d};}
|
|
1094
1103
|
|
|
1095
1104
|
function forwardingStatsUploader(a){function b(){var b=a._Forwarders.getForwarderStatsQueue(),c=a._Persistence.forwardingStatsBatches.uploadsTable,d=Date.now();for(var e in b.length&&(c[d]={uploading:!1,data:b},a._Forwarders.setForwarderStatsQueue([])),c)(function(b){if(c.hasOwnProperty(b)&&!1===c[b].uploading){var d=function(){4===e.readyState&&(200===e.status||202===e.status?(a.Logger.verbose("Successfully sent "+e.statusText+" from server"),delete c[b]):"4"===e.status.toString()[0]?429!==e.status&&delete c[b]:c[b].uploading=!1);},e=a._Helpers.createXHR(d),f=c[b].data;c[b].uploading=!0,a._APIClient.sendBatchForwardingStatsToServer(f,e);}})(e);}this.startForwardingStatsTimer=function(){mParticle._forwardingStatsTimer=setInterval(function(){b();},a._Store.SDKConfig.forwarderStatsTimeout);};}
|
|
1096
1105
|
|
|
@@ -1396,21 +1405,21 @@ var h=c||Date.now();return "fb.".concat(g,".").concat(h,".").concat(a)};// Integ
|
|
|
1396
1405
|
// CUSTOM_FLAGS are sent out when an Event is created via ServerModel.createEventObject
|
|
1397
1406
|
// PARTNER_IDENTITIES are sent out in a Batch when a group of events are converted to a Batch
|
|
1398
1407
|
// INTEGRATION_ATTRIBUTES are stored initially on the SDKEvent level but then is added to the Batch when the batch is created
|
|
1399
|
-
var IntegrationOutputs={CUSTOM_FLAGS:"custom_flags",PARTNER_IDENTITIES:"partner_identities",INTEGRATION_ATTRIBUTES:"integration_attributes"},
|
|
1408
|
+
var IntegrationOutputs={CUSTOM_FLAGS:"custom_flags",PARTNER_IDENTITIES:"partner_identities",INTEGRATION_ATTRIBUTES:"integration_attributes"},integrationMappingExternal={// Facebook / Meta
|
|
1400
1409
|
fbclid:{mappedKey:"Facebook.ClickId",processor:facebookClickIdProcessor,output:IntegrationOutputs.CUSTOM_FLAGS},_fbp:{mappedKey:"Facebook.BrowserId",output:IntegrationOutputs.CUSTOM_FLAGS},_fbc:{mappedKey:"Facebook.ClickId",output:IntegrationOutputs.CUSTOM_FLAGS},// Google
|
|
1401
|
-
gclid:{mappedKey:"GoogleEnhancedConversions.Gclid",output:IntegrationOutputs.CUSTOM_FLAGS},gbraid:{mappedKey:"GoogleEnhancedConversions.Gbraid",output:IntegrationOutputs.CUSTOM_FLAGS},wbraid:{mappedKey:"GoogleEnhancedConversions.Wbraid",output:IntegrationOutputs.CUSTOM_FLAGS},//
|
|
1402
|
-
// https://docs.rokt.com/developers/integration-guides/web/advanced/rokt-id-tag/
|
|
1403
|
-
// https://go.mparticle.com/work/SQDSDKS-7167
|
|
1404
|
-
rtid:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},rclid:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},RoktTransactionId:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},// TIKTOK
|
|
1410
|
+
gclid:{mappedKey:"GoogleEnhancedConversions.Gclid",output:IntegrationOutputs.CUSTOM_FLAGS},gbraid:{mappedKey:"GoogleEnhancedConversions.Gbraid",output:IntegrationOutputs.CUSTOM_FLAGS},wbraid:{mappedKey:"GoogleEnhancedConversions.Wbraid",output:IntegrationOutputs.CUSTOM_FLAGS},// TIKTOK
|
|
1405
1411
|
ttclid:{mappedKey:"TikTok.Callback",output:IntegrationOutputs.CUSTOM_FLAGS},_ttp:{mappedKey:"tiktok_cookie_id",output:IntegrationOutputs.PARTNER_IDENTITIES},// Snapchat
|
|
1406
1412
|
// https://businesshelp.snapchat.com/s/article/troubleshooting-click-id?language=en_US
|
|
1407
|
-
ScCid:{mappedKey:"SnapchatConversions.ClickId",output:IntegrationOutputs.CUSTOM_FLAGS}},
|
|
1413
|
+
ScCid:{mappedKey:"SnapchatConversions.ClickId",output:IntegrationOutputs.CUSTOM_FLAGS}},integrationMappingRokt={// Rokt
|
|
1414
|
+
// https://docs.rokt.com/developers/integration-guides/web/advanced/rokt-id-tag/
|
|
1415
|
+
// https://go.mparticle.com/work/SQDSDKS-7167
|
|
1416
|
+
rtid:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},rclid:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},RoktTransactionId:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277}},IntegrationCapture=/** @class */function(){function a(a){this.initialTimestamp=Date.now(),this.captureMode=a,this.filteredPartnerIdentityMappings=this.filterMappings(IntegrationOutputs.PARTNER_IDENTITIES),this.filteredCustomFlagMappings=this.filterMappings(IntegrationOutputs.CUSTOM_FLAGS),this.filteredIntegrationAttributeMappings=this.filterMappings(IntegrationOutputs.INTEGRATION_ATTRIBUTES);}/**
|
|
1408
1417
|
* Captures Integration Ids from cookies and query params and stores them in clickIds object
|
|
1409
1418
|
*/return a.prototype.capture=function(){var a=this.captureQueryParams()||{},b=this.captureCookies()||{},c=this.captureLocalStorage()||{};a.fbclid&&b._fbc&&delete b._fbc;// ROKT Rules
|
|
1410
1419
|
// If both rtid or rclid and RoktTransactionId are present, prioritize rtid/rclid
|
|
1411
1420
|
// If RoktTransactionId is present in both cookies and localStorage,
|
|
1412
1421
|
// prioritize localStorage
|
|
1413
|
-
var d=a.rtid||a.rclid,e=c.RoktTransactionId,f=b.RoktTransactionId;d?(e&&delete c.RoktTransactionId,f&&delete b.RoktTransactionId):e&&f&&delete b.RoktTransactionId,this.clickIds=__assign(__assign(__assign(__assign({},this.clickIds),a),c),b);},a.prototype.captureCookies=function(){var a=
|
|
1422
|
+
var d=a.rtid||a.rclid,e=c.RoktTransactionId,f=b.RoktTransactionId;d?(e&&delete c.RoktTransactionId,f&&delete b.RoktTransactionId):e&&f&&delete b.RoktTransactionId,this.clickIds=__assign(__assign(__assign(__assign({},this.clickIds),a),c),b);},a.prototype.captureCookies=function(){var a=this.getAllowedKeysForMode(),b=getCookies(a);return this.applyProcessors(b,getHref(),this.initialTimestamp)},a.prototype.captureQueryParams=function(){var a=this.getQueryParams();return this.applyProcessors(a,getHref(),this.initialTimestamp)},a.prototype.captureLocalStorage=function(){for(var a=this.getAllowedKeysForMode(),b={},c=0,d=a;c<d.length;c++){var e=d[c],f=localStorage.getItem(e);f&&(b[e]=f);}return this.applyProcessors(b,getHref(),this.initialTimestamp)},a.prototype.getQueryParams=function(){var a=this.getAllowedKeysForMode();return queryStringParser(getHref(),a)},a.prototype.getClickIdsAsCustomFlags=function(){return this.getClickIds(this.clickIds,this.filteredCustomFlagMappings)},a.prototype.getClickIdsAsPartnerIdentities=function(){return this.getClickIds(this.clickIds,this.filteredPartnerIdentityMappings)},a.prototype.getClickIdsAsIntegrationAttributes=function(){var a,b,c,d={};// Integration IDs are stored in the following format:
|
|
1414
1423
|
// {
|
|
1415
1424
|
// "integration_attributes": {
|
|
1416
1425
|
// "<moduleId>": {
|
|
@@ -1418,7 +1427,7 @@ var d=a.rtid||a.rclid,e=c.RoktTransactionId,f=b.RoktTransactionId;d?(e&&delete c
|
|
|
1418
1427
|
// }
|
|
1419
1428
|
// }
|
|
1420
1429
|
// }
|
|
1421
|
-
for(var e in this.clickIds)if(this.clickIds.hasOwnProperty(e)){var f=this.clickIds[e],g=null===(b=this.filteredIntegrationAttributeMappings[e])||void 0===b?void 0:b.mappedKey;if(!isEmpty(g)){var h=null===(c=this.filteredIntegrationAttributeMappings[e])||void 0===c?void 0:c.moduleId;h&&!d[h]&&(d[h]=(a={},a[g]=f,a));}}return d},a.prototype.getClickIds=function(a,b){var c,d={};if(!a)return d;for(var e in a)if(a.hasOwnProperty(e)){var f=a[e],g=null===(c=b[e])||void 0===c?void 0:c.mappedKey;isEmpty(g)||(d[g]=f);}return d},a.prototype.applyProcessors=function(a,b,c){var d,e={};for(var
|
|
1430
|
+
for(var e in this.clickIds)if(this.clickIds.hasOwnProperty(e)){var f=this.clickIds[e],g=null===(b=this.filteredIntegrationAttributeMappings[e])||void 0===b?void 0:b.mappedKey;if(!isEmpty(g)){var h=null===(c=this.filteredIntegrationAttributeMappings[e])||void 0===c?void 0:c.moduleId;h&&!d[h]&&(d[h]=(a={},a[g]=f,a));}}return d},a.prototype.getClickIds=function(a,b){var c,d={};if(!a)return d;for(var e in a)if(a.hasOwnProperty(e)){var f=a[e],g=null===(c=b[e])||void 0===c?void 0:c.mappedKey;isEmpty(g)||(d[g]=f);}return d},a.prototype.applyProcessors=function(a,b,c){var d,e={},f=this.getActiveIntegrationMapping();for(var g in a)if(a.hasOwnProperty(g)){var h=a[g],i=null===(d=f[g])||void 0===d?void 0:d.processor;e[g]=i?i(h,b,c):h;}return e},a.prototype.filterMappings=function(a){var b={},c=this.getActiveIntegrationMapping();for(var d in c)c[d].output===a&&(b[d]=c[d]);return b},a.prototype.getAllowedKeysForMode=function(){return Object.keys(this.getActiveIntegrationMapping())},a.prototype.getActiveIntegrationMapping=function(){return this.captureMode===Constants.CaptureIntegrationSpecificIdsV2Modes.RoktOnly?integrationMappingRokt:this.captureMode===Constants.CaptureIntegrationSpecificIdsV2Modes.All?__assign(__assign({},integrationMappingExternal),integrationMappingRokt):{}},a}();
|
|
1422
1431
|
|
|
1423
1432
|
// Rokt Web SDK via a Web Kit.
|
|
1424
1433
|
// The Rokt Manager should load before the Web Kit and stubs out many of the
|
|
@@ -1447,7 +1456,7 @@ var k=(null===f||void 0===f?void 0:f.sandbox)||!1;// Launcher options are set he
|
|
|
1447
1456
|
this.launcherOptions=__assign({sandbox:k},null===f||void 0===f?void 0:f.launcherOptions),(null===f||void 0===f?void 0:f.domain)&&(this.domain=f.domain);},a.prototype.attachKit=function(a){this.kit=a,this.processMessageQueue();},a.prototype.selectPlacements=function(a){var b,c;return __awaiter(this,void 0,void 0,function(){var d,e,f,g,h,i,j,k,l,m,n=this;return __generator(this,function(o){switch(o.label){case 0:if(!this.isReady())return [2/*return*/,this.deferredCall("selectPlacements",a)];o.label=1;case 1:if(o.trys.push([1,6,,7]),d=a.attributes,e=(null===d||void 0===d?void 0:d.sandbox)||null,f=this.mapPlacementAttributes(d,this.placementAttributesMapping),this.currentUser=this.identityService.getCurrentUser(),g=(null===(c=null===(b=this.currentUser)||void 0===b?void 0:b.getUserIdentities())||void 0===c?void 0:c.userIdentities)||{},h=g.email,i=f.email,!i||h&&h===i)return [3/*break*/,5];h&&h!==i&&this.logger.warning("Email mismatch detected. Current email, ".concat(h," differs from email passed to selectPlacements call, ").concat(i,". Proceeding to call identify with ").concat(i,". Please verify your implementation.")),o.label=2;case 2:return o.trys.push([2,4,,5]),[4/*yield*/,new Promise(function(a){n.identityService.identify({userIdentities:__assign(__assign({},g),{email:i})},function(){a();});})];case 3:return o.sent(),[3/*break*/,5];case 4:return j=o.sent(),this.logger.error("Failed to identify user with new email: "+JSON.stringify(j)),[3/*break*/,5];case 5:return this.setUserAttributes(f),k=__assign(__assign({},f),null===e?{}:{sandbox:e}),l=__assign(__assign({},a),{attributes:k}),[2/*return*/,this.kit.selectPlacements(l)];case 6:return m=o.sent(),[2/*return*/,Promise.reject(m instanceof Error?m:new Error("Unknown error occurred"))];case 7:return [2/*return*/]}})})},a.prototype.hashAttributes=function(a){if(!this.isReady())return this.deferredCall("hashAttributes",a);try{return this.kit.hashAttributes(a)}catch(a){return Promise.reject(a instanceof Error?a:new Error("Unknown error occurred"))}},a.prototype.setExtensionData=function(a){if(!this.isReady())return void this.deferredCall("setExtensionData",a);try{this.kit.setExtensionData(a);}catch(a){var b=a instanceof Error?a.message:a+"";throw new Error("Error setting extension data: "+b)}},a.prototype.use=function(a){if(!this.isReady())return this.deferredCall("use",a);try{return this.kit.use(a)}catch(b){return Promise.reject(b instanceof Error?b:new Error("Error using extension: "+a))}},a.prototype.getLocalSessionAttributes=function(){return this.store.getLocalSessionAttributes()},a.prototype.setLocalSessionAttribute=function(a,b){this.store.setLocalSessionAttribute(a,b);},a.prototype.isReady=function(){// The Rokt Manager is ready when a kit is attached and has a launcher
|
|
1448
1457
|
return !!(this.kit&&this.kit.launcher)},a.prototype.setUserAttributes=function(a){var b=["sandbox"],c={};for(var d in a)a.hasOwnProperty(d)&&-1===b.indexOf(d)&&(c[d]=a[d]);try{this.currentUser.setUserAttributes(c);}catch(a){this.logger.error("Error setting user attributes: "+a);}},a.prototype.mapPlacementAttributes=function(a,b){for(var c,d={},e=0,f=b;e<f.length;e++)c=f[e],d[c.map]=c.value;var g={};for(var h in a)if(a.hasOwnProperty(h)){var i=d[h]||h;g[i]=a[h];}return g},a.prototype.processMessageQueue=function(){var a,b=this;this.isReady()&&0!==this.messageQueue.size&&(null===(a=this.logger)||void 0===a?void 0:a.verbose("RoktManager: Processing ".concat(this.messageQueue.size," queued messages")),this.messageQueue.forEach(function(a){var c,d,e;if(!(a.methodName in b.kit)||!isFunction(b.kit[a.methodName]))return void(null===(c=b.logger)||void 0===c?void 0:c.error("RoktManager: Method ".concat(a.methodName," not found in kit")));null===(d=b.logger)||void 0===d?void 0:d.verbose("RoktManager: Processing queued message: ".concat(a.methodName," with payload: ").concat(JSON.stringify(a.payload)));try{var f=b.kit[a.methodName](a.payload);b.completePendingPromise(a.messageId,f);}catch(c){var g=c instanceof Error?c.message:c+"";null===(e=b.logger)||void 0===e?void 0:e.error("RoktManager: Error processing message '".concat(a.methodName,"': ").concat(g)),b.completePendingPromise(a.messageId,Promise.reject(c));}}));},a.prototype.queueMessage=function(a){this.messageQueue.set(a.messageId,a);},a.prototype.deferredCall=function(a,b){var c=this;return new Promise(function(d,e){var f="".concat(a,"_").concat(generateUniqueId());c.queueMessage({messageId:f,methodName:a,payload:b,resolve:d,reject:e});})},a.prototype.completePendingPromise=function(a,b){if(a&&this.messageQueue.has(a)){var c=this.messageQueue.get(a);c.resolve&&Promise.resolve(b).then(function(a){return c.resolve(a)})["catch"](function(a){return c.reject(a)}),this.messageQueue["delete"](a);}},a}();
|
|
1449
1458
|
|
|
1450
|
-
var Messages=Constants.Messages,HTTPCodes=Constants.HTTPCodes,FeatureFlags=Constants.FeatureFlags,ReportBatching=FeatureFlags.ReportBatching,CaptureIntegrationSpecificIds=FeatureFlags.CaptureIntegrationSpecificIds,StartingInitialization=Messages.InformationMessages.StartingInitialization;/**
|
|
1459
|
+
var Messages=Constants.Messages,HTTPCodes=Constants.HTTPCodes,FeatureFlags=Constants.FeatureFlags,CaptureIntegrationSpecificIdsV2Modes=Constants.CaptureIntegrationSpecificIdsV2Modes,ReportBatching=FeatureFlags.ReportBatching,CaptureIntegrationSpecificIds=FeatureFlags.CaptureIntegrationSpecificIds,CaptureIntegrationSpecificIdsV2=FeatureFlags.CaptureIntegrationSpecificIdsV2,StartingInitialization=Messages.InformationMessages.StartingInitialization;/**
|
|
1451
1460
|
* <p>All of the following methods can be called on the primary mParticle class. In version 2.10.0, we introduced <a href="https://docs.mparticle.com/developers/sdk/web/multiple-instances/">multiple instances</a>. If you are using multiple instances (self hosted environments only), you should call these methods on each instance.</p>
|
|
1452
1461
|
* <p>In current versions of mParticle, if your site has one instance, that instance name is 'default_instance'. Any methods called on mParticle on a site with one instance will be mapped to the `default_instance`.</p>
|
|
1453
1462
|
* <p>This is for simplicity and backwards compatibility. For example, calling mParticle.logPageView() automatically maps to mParticle.getInstance('default_instance').logPageView().</p>
|
|
@@ -1621,7 +1630,7 @@ var Messages=Constants.Messages,HTTPCodes=Constants.HTTPCodes,FeatureFlags=Const
|
|
|
1621
1630
|
If there is no delay, then the events sent before an integration attribute is included would not
|
|
1622
1631
|
be forwarded successfully server side.
|
|
1623
1632
|
*/ // Internal use only. Used by our wrapper SDKs to identify themselves during initialization.
|
|
1624
|
-
this._instanceName=a,this._NativeSdkHelpers=new NativeSdkHelpers(this),this._SessionManager=new SessionManager(this),this._Persistence=new _Persistence(this),this._Helpers=new Helpers(this),this._Events=new Events(this),this._CookieSyncManager=new CookieSyncManager(this),this._ServerModel=new ServerModel(this),this._Ecommerce=new Ecommerce(this),this._ForwardingStatsUploader=new forwardingStatsUploader(this),this._Consent=new Consent(this),this._IdentityAPIClient=new IdentityAPIClient(this),this._preInit={readyQueue:[],integrationDelays:{},forwarderConstructors:[]},this.
|
|
1633
|
+
this._instanceName=a,this._NativeSdkHelpers=new NativeSdkHelpers(this),this._SessionManager=new SessionManager(this),this._Persistence=new _Persistence(this),this._Helpers=new Helpers(this),this._Events=new Events(this),this._CookieSyncManager=new CookieSyncManager(this),this._ServerModel=new ServerModel(this),this._Ecommerce=new Ecommerce(this),this._ForwardingStatsUploader=new forwardingStatsUploader(this),this._Consent=new Consent(this),this._IdentityAPIClient=new IdentityAPIClient(this),this._preInit={readyQueue:[],integrationDelays:{},forwarderConstructors:[]},this._RoktManager=new RoktManager,this.IdentityType=IdentityType,this.EventType=EventType,this.CommerceEventType=CommerceEventType,this.PromotionType=PromotionActionType,this.ProductActionType=ProductActionType,this._Identity=new Identity(this),this.Identity=this._Identity.IdentityAPI,this.generateHash=this._Helpers.generateHash,this.getDeviceId=this._Persistence.getDeviceId,"undefined"!=typeof window&&window.mParticle&&window.mParticle.config&&window.mParticle.config.hasOwnProperty("rq")&&(this._preInit.readyQueue=window.mParticle.config.rq),this.init=function(a,b){var c=this;// config code - Fetch config when requestConfig = true, otherwise, proceed with SDKInitialization
|
|
1625
1634
|
// Since fetching the configuration is asynchronous, we must pass completeSDKInitialization
|
|
1626
1635
|
// to it for it to be run after fetched
|
|
1627
1636
|
if(b||console.warn("You did not pass a config object to init(). mParticle will not initialize properly"),runPreConfigFetchInitialization(this,a,b),!b)return void console.error("No config available on the window, please pass a config object to mParticle.init()");if(!b.hasOwnProperty("requestConfig")||b.requestConfig){var d=new ConfigAPIClient(a,b,this);d.getSDKConfiguration().then(function(d){var e=c._Helpers.extend({},b,d);completeSDKInitialization(a,e,c);});}else completeSDKInitialization(a,b,this);},this.setLogLevel=function(a){b.Logger.setLogLevel(a);},this.reset=function(a){try{a._Persistence.resetPersistence(),a._Store&&delete a._Store;}catch(a){console.error("Cannot reset mParticle",a);}},this._resetForTests=function(a,b,c){c._Store&&delete c._Store,c._Store=new Store(a,c),c._Store.isLocalStorageAvailable=c._Persistence.determineLocalStorageAvailability(window.localStorage),c._Events.stopTracking(),b||c._Persistence.resetPersistence(),c._Persistence.forwardingStatsBatches.uploadsTable={},c._Persistence.forwardingStatsBatches.forwardingStatsEventQueue=[],c._preInit={readyQueue:[],pixelConfigurations:[],integrationDelays:{},forwarderConstructors:[],isDevelopmentMode:!1};},this.ready=function(a){b.isInitialized()&&"function"==typeof a?a():b._preInit.readyQueue.push(a);},this.getEnvironment=function(){return b._Store.SDKConfig.isDevelopmentMode?Constants.Environment.Development:Constants.Environment.Production},this.getVersion=function(){return Constants.sdkVersion},this.setAppVersion=function(a){var c=queueIfNotInitialized(function(){b.setAppVersion(a);},b);c||(b._Store.SDKConfig.appVersion=a,b._Persistence.update());},this.setDeviceId=function(a){var c=queueIfNotInitialized(function(){b.setDeviceId(a);},b);c||this._Store.setDeviceId(a);},this.isInitialized=function(){return !!b._Store&&b._Store.isInitialized},this.getAppName=function(){return b._Store.SDKConfig.appName},this.setAppName=function(a){var c=queueIfNotInitialized(function(){b.setAppName(a);},b);c||(b._Store.SDKConfig.appName=a);},this.getAppVersion=function(){return b._Store.SDKConfig.appVersion},this.stopTrackingLocation=function(){b._SessionManager.resetSessionTimer(),b._Events.stopTracking();},this.startTrackingLocation=function(a){isFunction(a)||b.Logger.warning("Warning: Location tracking is triggered, but not including a callback into the `startTrackingLocation` may result in events logged too quickly and not being associated with a location."),b._SessionManager.resetSessionTimer(),b._Events.startTracking(a);},this.setPosition=function(a,c){var d=queueIfNotInitialized(function(){b.setPosition(a,c);},b);d||(b._SessionManager.resetSessionTimer(),"number"==typeof a&&"number"==typeof c?b._Store.currentPosition={lat:a,lng:c}:b.Logger.error("Position latitude and/or longitude must both be of type number"));},this.startNewSession=function(){b._SessionManager.startNewSession();},this.endSession=function(){// Sends true as an over ride vs when endSession is called from the setInterval
|
|
@@ -1777,14 +1786,15 @@ b._SessionManager.endSession(!0);},this.logBaseEvent=function(a,c){var d=queueIf
|
|
|
1777
1786
|
if(b._preInit.integrationDelays[a]=c,!0!==c){// If the integration delay is set to false, check to see if there are any
|
|
1778
1787
|
// other integration delays set to true. It not, process the queued events/.
|
|
1779
1788
|
var d=Object.keys(b._preInit.integrationDelays);if(0!==d.length){var e=d.some(function(a){return !0===b._preInit.integrationDelays[a]});e||b._APIClient.processQueuedEvents();}}},this._setWrapperSDKInfo=function(a,c){var d=queueIfNotInitialized(function(){b._setWrapperSDKInfo(a,c);},b);d||(b._Store.wrapperSDKInfo===void 0||!b._Store.wrapperSDKInfo.isInfoSet)&&(b._Store.wrapperSDKInfo={name:a,version:c,isInfoSet:!0});};}// Some (server) config settings need to be returned before they are set on SDKConfig in a self hosted environment
|
|
1780
|
-
function completeSDKInitialization(a,b,c){var d=createKitBlocker(b,c);// Web View Bridge is used for cases where the Web SDK is loaded within an iOS or Android device's
|
|
1789
|
+
function completeSDKInitialization(a,b,c){var d=createKitBlocker(b,c),e=c._Helpers.getFeatureFlag;// Web View Bridge is used for cases where the Web SDK is loaded within an iOS or Android device's
|
|
1781
1790
|
// Web View. The Web SDK simply acts as a passthrough to the mParticle Native SDK. It is not
|
|
1782
1791
|
// responsible for sending events directly to mParticle's servers. The Web SDK will not initialize
|
|
1783
1792
|
// persistence or Identity directly.
|
|
1784
1793
|
if(c._APIClient=new APIClient(c,d),c._Forwarders=new Forwarders(c,d),c._Store.processConfig(b),c._Identity.idCache=createIdentityCache(c),removeExpiredIdentityCacheDates(c._Identity.idCache),c._Store.webviewBridgeEnabled)c._NativeSdkHelpers.initializeSessionAttributes(a);else {c._Persistence.initializeStorage(),c._Store.syncPersistenceData();// Set up user identitiy variables for later use
|
|
1785
|
-
var
|
|
1786
|
-
var
|
|
1787
|
-
|
|
1794
|
+
var f=c.Identity.getCurrentUser(),g=f?f.getMPID():null,h=f?f.getUserIdentities().userIdentities:{};c._Store.SDKConfig.identifyRequest=c._Store.hasInvalidIdentifyRequest()?{userIdentities:h}:c._Store.SDKConfig.identifyRequest,e(ReportBatching)&&c._ForwardingStatsUploader.startForwardingStatsTimer();// https://go.mparticle.com/work/SQDSDKS-7639
|
|
1795
|
+
var i=e(CaptureIntegrationSpecificIds),j=e(CaptureIntegrationSpecificIdsV2),k=j&&j!==CaptureIntegrationSpecificIdsV2Modes.None||!0===i;if(k){var l;i||j===CaptureIntegrationSpecificIdsV2Modes.All?l="all":j===CaptureIntegrationSpecificIdsV2Modes.RoktOnly&&(l="roktonly"),c._IntegrationCapture=new IntegrationCapture(l),c._IntegrationCapture.capture();}// Configure Rokt Manager with user and filtered user
|
|
1796
|
+
var m=parseConfig(b,"Rokt",181);if(m){var n=m.userAttributeFilters,o=filteredMparticleUser(g,{userAttributeFilters:n},c),p={sandbox:null===b||void 0===b?void 0:b.isDevelopmentMode,launcherOptions:null===b||void 0===b?void 0:b.launcherOptions,domain:null===b||void 0===b?void 0:b.domain};// https://go.mparticle.com/work/SQDSDKS-7339
|
|
1797
|
+
c._RoktManager.init(m,o,c.Identity,c._Store,c.Logger,p);}c._Forwarders.processForwarders(b,c._APIClient.prepareForwardingStats),c._Forwarders.processPixelConfigs(b),c._SessionManager.initialize(),c._Events.logAST(),processIdentityCallback(c,f,g,h);}// We will continue to clear out the ready queue as part of the initial init flow
|
|
1788
1798
|
// if an identify request is unnecessary, such as if there is an existing session
|
|
1789
1799
|
(c._Store.mpid&&!c._Store.identifyCalled||c._Store.webviewBridgeEnabled)&&(c._Store.isInitialized=!0,c._preInit.readyQueue=processReadyQueue(c._preInit.readyQueue)),c._Store.isFirstRun&&(c._Store.isFirstRun=!1);}// https://go.mparticle.com/work/SQDSDKS-7061
|
|
1790
1800
|
function createKitBlocker(a,b){var c,d,e,f;/* There are three ways a data plan object for blocking can be passed to the SDK:
|
package/dist/mparticle.esm.js
CHANGED
|
@@ -15,12 +15,19 @@ map:function map(a,b){var c,d,e;if(null===this)throw new TypeError(" this is nul
|
|
|
15
15
|
filter:function filter(a/*, thisArg*/){if(void 0===this||null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=[],e=2<=arguments.length?arguments[1]:void 0,f=0;f<c;f++)if(f in b){var g=b[f];a.call(e,g,f,b)&&d.push(g);}return d},// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
|
|
16
16
|
isArray:function isArray(a){return "[object Array]"===Object.prototype.toString.call(a)},Base64:Base64$1};
|
|
17
17
|
|
|
18
|
-
var version = "2.
|
|
18
|
+
var version = "2.46.0";
|
|
19
19
|
|
|
20
20
|
var Constants={sdkVersion:version,sdkVendor:"mparticle",platform:"web",Messages:{DeprecationMessages:{MethodIsDeprecatedPostfix:"is a deprecated method and will be removed in future releases",AlternativeMethodPrefix:"Please use the alternate method:"},ErrorMessages:{NoToken:"A token must be specified.",EventNameInvalidType:"Event name must be a valid string value.",EventDataInvalidType:"Event data must be a valid object hash.",LoggingDisabled:"Event logging is currently disabled.",CookieParseError:"Could not parse cookie",EventEmpty:"Event object is null or undefined, cancelling send",APIRequestEmpty:"APIRequest is null or undefined, cancelling send",NoEventType:"Event type must be specified.",TransactionIdRequired:"Transaction ID is required",TransactionRequired:"A transaction attributes object is required",PromotionIdRequired:"Promotion ID is required",BadAttribute:"Attribute value cannot be object or array",BadKey:"Key value cannot be object or array",BadLogPurchase:"Transaction attributes and a product are both required to log a purchase, https://docs.mparticle.com/?javascript#measuring-transactions",AudienceAPINotEnabled:"Your workspace is not enabled to retrieve user audiences."},InformationMessages:{CookieSearch:"Searching for cookie",CookieFound:"Cookie found, parsing values",CookieNotFound:"Cookies not found",CookieSet:"Setting cookie",CookieSync:"Performing cookie sync",SendBegin:"Starting to send event",SendIdentityBegin:"Starting to send event to identity server",SendWindowsPhone:"Sending event to Windows Phone container",SendIOS:"Calling iOS path: ",SendAndroid:"Calling Android JS interface method: ",SendHttp:"Sending event to mParticle HTTP service",SendAliasHttp:"Sending alias request to mParticle HTTP service",SendIdentityHttp:"Sending event to mParticle HTTP service",StartingNewSession:"Starting new Session",StartingLogEvent:"Starting to log event",StartingLogOptOut:"Starting to log user opt in/out",StartingEndSession:"Starting to end session",StartingInitialization:"Starting to initialize",StartingLogCommerceEvent:"Starting to log commerce event",StartingAliasRequest:"Starting to Alias MPIDs",LoadingConfig:"Loading configuration options",AbandonLogEvent:"Cannot log event, logging disabled or developer token not set",AbandonAliasUsers:"Cannot Alias Users, logging disabled or developer token not set",AbandonStartSession:"Cannot start session, logging disabled or developer token not set",AbandonEndSession:"Cannot end session, logging disabled or developer token not set",NoSessionToEnd:"Cannot end session, no active session found"},ValidationMessages:{ModifyIdentityRequestUserIdentitiesPresent:"identityRequests to modify require userIdentities to be present. Request not sent to server. Please fix and try again",IdentityRequesetInvalidKey:"There is an invalid key on your identityRequest object. It can only contain a `userIdentities` object and a `onUserAlias` function. Request not sent to server. Please fix and try again.",OnUserAliasType:"The onUserAlias value must be a function.",UserIdentities:"The userIdentities key must be an object with keys of identityTypes and values of strings. Request not sent to server. Please fix and try again.",UserIdentitiesInvalidKey:"There is an invalid identity key on your `userIdentities` object within the identityRequest. Request not sent to server. Please fix and try again.",UserIdentitiesInvalidValues:"All user identity values must be strings or null. Request not sent to server. Please fix and try again.",AliasMissingMpid:"Alias Request must contain both a destinationMpid and a sourceMpid",AliasNonUniqueMpid:"Alias Request's destinationMpid and sourceMpid must be unique",AliasMissingTime:"Alias Request must have both a startTime and an endTime",AliasStartBeforeEndTime:"Alias Request's endTime must be later than its startTime"}},NativeSdkPaths:{LogEvent:"logEvent",SetUserTag:"setUserTag",RemoveUserTag:"removeUserTag",SetUserAttribute:"setUserAttribute",RemoveUserAttribute:"removeUserAttribute",SetSessionAttribute:"setSessionAttribute",AddToCart:"addToCart",RemoveFromCart:"removeFromCart",ClearCart:"clearCart",LogOut:"logOut",SetUserAttributeList:"setUserAttributeList",RemoveAllUserAttributes:"removeAllUserAttributes",GetUserAttributesLists:"getUserAttributesLists",GetAllUserAttributes:"getAllUserAttributes",Identify:"identify",Logout:"logout",Login:"login",Modify:"modify",Alias:"aliasUsers",Upload:"upload"},StorageNames:{localStorageName:"mprtcl-api",localStorageNameV3:"mprtcl-v3",cookieName:"mprtcl-api",cookieNameV2:"mprtcl-v2",cookieNameV3:"mprtcl-v3",localStorageNameV4:"mprtcl-v4",localStorageProductsV4:"mprtcl-prodv4",cookieNameV4:"mprtcl-v4",currentStorageName:"mprtcl-v4",currentStorageProductsName:"mprtcl-prodv4"},DefaultConfig:{cookieDomain:null,cookieExpiration:365,logLevel:null,timeout:300,sessionTimeout:30,maxProducts:20,forwarderStatsTimeout:5e3,integrationDelayTimeout:5e3,maxCookieSize:3e3,aliasMaxWindow:90,uploadInterval:0// Maximum milliseconds in between batch uploads, below 500 will mean immediate upload. The server returns this as a string, but we are using it as a number internally
|
|
21
21
|
},DefaultBaseUrls:{v1SecureServiceUrl:"jssdks.mparticle.com/v1/JS/",v2SecureServiceUrl:"jssdks.mparticle.com/v2/JS/",v3SecureServiceUrl:"jssdks.mparticle.com/v3/JS/",configUrl:"jssdkcdns.mparticle.com/JS/v2/",identityUrl:"identity.mparticle.com/v1/",aliasUrl:"jssdks.mparticle.com/v1/identity/",userAudienceUrl:"nativesdks.mparticle.com/v1/"},// These are the paths that are used to construct the CNAME urls
|
|
22
22
|
CNAMEUrlPaths:{v1SecureServiceUrl:"/webevents/v1/JS/",v2SecureServiceUrl:"/webevents/v2/JS/",v3SecureServiceUrl:"/webevents/v3/JS/",configUrl:"/tags/JS/v2/",identityUrl:"/identity/v1/",aliasUrl:"/webevents/v1/identity/"},Base64CookieKeys:{csm:1,sa:1,ss:1,lsa:1,ua:1,ui:1,csd:1,ia:1,con:1},// https://go.mparticle.com/work/SQDSDKS-6039
|
|
23
|
-
SDKv2NonMPIDCookieKeys:{gs:1,cu:1,l:1,globalSettings:1,currentUserMPID:1},HTTPCodes:{noHttpCoverage:-1,activeIdentityRequest:-2,activeSession:-3,validationIssue:-4,nativeIdentityRequest:-5,loggingDisabledOrMissingAPIKey:-6,tooManyRequests:429},FeatureFlags:{ReportBatching:"reportBatching",EventBatchingIntervalMillis:"eventBatchingIntervalMillis",OfflineStorage:"offlineStorage",DirectUrlRouting:"directURLRouting",CacheIdentity:"cacheIdentity",AudienceAPI:"audienceAPI"
|
|
23
|
+
SDKv2NonMPIDCookieKeys:{gs:1,cu:1,l:1,globalSettings:1,currentUserMPID:1},HTTPCodes:{noHttpCoverage:-1,activeIdentityRequest:-2,activeSession:-3,validationIssue:-4,nativeIdentityRequest:-5,loggingDisabledOrMissingAPIKey:-6,tooManyRequests:429},FeatureFlags:{ReportBatching:"reportBatching",EventBatchingIntervalMillis:"eventBatchingIntervalMillis",OfflineStorage:"offlineStorage",DirectUrlRouting:"directURLRouting",CacheIdentity:"cacheIdentity",AudienceAPI:"audienceAPI",// CaptureIntegrationSpecificIds (legacy): boolean flag from server/UI
|
|
24
|
+
// - 'True' → capture all integration-specific IDs
|
|
25
|
+
// - 'False' → capture none
|
|
26
|
+
CaptureIntegrationSpecificIds:"captureIntegrationSpecificIds",// CaptureIntegrationSpecificIdsV2 (new): string mode from server
|
|
27
|
+
// - 'all' → capture all IDs
|
|
28
|
+
// - 'none' → capture none
|
|
29
|
+
// - 'roktonly' → capture only Rokt-related IDs
|
|
30
|
+
CaptureIntegrationSpecificIdsV2:"captureIntegrationSpecificIdsV2",AstBackgroundEvents:"astBackgroundEvents"},DefaultInstance:"default_instance",CCPAPurpose:"data_sale_opt_out",IdentityMethods:{Modify:"modify",Logout:"logout",Login:"login",Identify:"identify"},Environment:{Development:"development",Production:"production"},CaptureIntegrationSpecificIdsV2Modes:{All:"all",None:"none",RoktOnly:"roktonly"}};var ONE_DAY_IN_SECONDS=86400;var MILLIS_IN_ONE_SEC=1e3;// https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
|
|
24
31
|
var HTTP_OK=200;var HTTP_ACCEPTED=202;var HTTP_BAD_REQUEST=400;
|
|
25
32
|
|
|
26
33
|
/******************************************************************************
|
|
@@ -391,9 +398,10 @@ var dist = {};
|
|
|
391
398
|
|
|
392
399
|
var SDKIdentityTypeEnum;(function(a){a.other="other",a.customerId="customerid",a.facebook="facebook",a.twitter="twitter",a.google="google",a.microsoft="microsoft",a.yahoo="yahoo",a.email="email",a.alias="alias",a.facebookCustomAudienceId="facebookcustomaudienceid",a.otherId2="other2",a.otherId3="other3",a.otherId4="other4",a.otherId5="other5",a.otherId6="other6",a.otherId7="other7",a.otherId8="other8",a.otherId9="other9",a.otherId10="other10",a.mobileNumber="mobile_number",a.phoneNumber2="phone_number_2",a.phoneNumber3="phone_number_3";})(SDKIdentityTypeEnum||(SDKIdentityTypeEnum={}));
|
|
393
400
|
|
|
394
|
-
var FeatureFlags$2=Constants.FeatureFlags,CaptureIntegrationSpecificIds$1=FeatureFlags$2.CaptureIntegrationSpecificIds;function convertEvents(a,b,c){if(!a)return null;if(!b||1>b.length)return null;for(var d,e=c._IntegrationCapture,f=c._Helpers,g=f.getFeatureFlag,h=c.Identity.getCurrentUser(),i=[],j=null,k=0,l=b;k<l.length;k++)if(d=l[k],d){j=d;var m=convertEvent(d);m&&i.push(m);}if(!j)return null;var n=null;// Add the consent state from either the Last Event or the user
|
|
401
|
+
var FeatureFlags$2=Constants.FeatureFlags,CaptureIntegrationSpecificIds$1=FeatureFlags$2.CaptureIntegrationSpecificIds,CaptureIntegrationSpecificIdsV2$1=FeatureFlags$2.CaptureIntegrationSpecificIdsV2;function convertEvents(a,b,c){if(!a)return null;if(!b||1>b.length)return null;for(var d,e=c._IntegrationCapture,f=c._Helpers,g=f.getFeatureFlag,h=c.Identity.getCurrentUser(),i=[],j=null,k=0,l=b;k<l.length;k++)if(d=l[k],d){j=d;var m=convertEvent(d);m&&i.push(m);}if(!j)return null;var n=null;// Add the consent state from either the Last Event or the user
|
|
395
402
|
isEmpty(j.ConsentState)?!isEmpty(h)&&(n=h.getConsentState()):n=j.ConsentState;var o={source_request_id:c._Helpers.generateUniqueId(),mpid:a,timestamp_unixtime_ms:new Date().getTime(),environment:j.Debug?dist.BatchEnvironmentEnum.development:dist.BatchEnvironmentEnum.production,events:i,mp_deviceid:j.DeviceId,sdk_version:j.SDKVersion,// TODO: Refactor this to read from _Store or a global config
|
|
396
|
-
application_info:{application_version:j.AppVersion,application_name:j.AppName,package:j.Package,sideloaded_kits_count:c._Store.sideloadedKitsCount},device_info:{platform:dist.DeviceInformationPlatformEnum.web,screen_width:"undefined"!=typeof window&&"undefined"!=typeof window.screen?window.screen.width:0,screen_height:"undefined"!=typeof window&&"undefined"!=typeof window.screen?window.screen.height:0},user_attributes:j.UserAttributes,user_identities:convertUserIdentities(j.UserIdentities),consent_state:convertConsentState(n),integration_attributes:j.IntegrationAttributes};j.DataPlan&&j.DataPlan.PlanId&&(o.context={data_plan:{plan_id:j.DataPlan.PlanId,plan_version:j.DataPlan.PlanVersion||void 0}})
|
|
403
|
+
application_info:{application_version:j.AppVersion,application_name:j.AppName,package:j.Package,sideloaded_kits_count:c._Store.sideloadedKitsCount},device_info:{platform:dist.DeviceInformationPlatformEnum.web,screen_width:"undefined"!=typeof window&&"undefined"!=typeof window.screen?window.screen.width:0,screen_height:"undefined"!=typeof window&&"undefined"!=typeof window.screen?window.screen.height:0},user_attributes:j.UserAttributes,user_identities:convertUserIdentities(j.UserIdentities),consent_state:convertConsentState(n),integration_attributes:j.IntegrationAttributes};j.DataPlan&&j.DataPlan.PlanId&&(o.context={data_plan:{plan_id:j.DataPlan.PlanId,plan_version:j.DataPlan.PlanVersion||void 0}});// https://go.mparticle.com/work/SQDSDKS-7639
|
|
404
|
+
var p=g&&!!g(CaptureIntegrationSpecificIds$1),q=g&&g(CaptureIntegrationSpecificIdsV2$1),r=q&&q!==Constants.CaptureIntegrationSpecificIdsV2Modes.None||!0===p;if(r){var s=null===e||void 0===e?void 0:e.getClickIdsAsPartnerIdentities();isEmpty(s)||(o.partner_identities=s);}return o}function convertConsentState(a){if(isEmpty(a))return null;var b={gdpr:convertGdprConsentState(a.getGDPRConsentState()),ccpa:convertCcpaConsentState(a.getCCPAConsentState())};return b}function convertGdprConsentState(a){if(!a)return null;var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]={consented:a[c].Consented,hardware_id:a[c].HardwareId,document:a[c].ConsentDocument,timestamp_unixtime_ms:a[c].Timestamp,location:a[c].Location});return b}function convertCcpaConsentState(a){if(!a)return null;var b={data_sale_opt_out:{consented:a.Consented,hardware_id:a.HardwareId,document:a.ConsentDocument,timestamp_unixtime_ms:a.Timestamp,location:a.Location}};return b}function convertUserIdentities(a){if(!a||!a.length)return null;for(var b,c={},d=0,e=a;d<e.length;d++)switch(b=e[d],b.Type){case Types.IdentityType.CustomerId:c.customer_id=b.Identity;break;case Types.IdentityType.Email:c.email=b.Identity;break;case Types.IdentityType.Facebook:c.facebook=b.Identity;break;case Types.IdentityType.FacebookCustomAudienceId:c.facebook_custom_audience_id=b.Identity;break;case Types.IdentityType.Google:c.google=b.Identity;break;case Types.IdentityType.Microsoft:c.microsoft=b.Identity;break;case Types.IdentityType.Other:c.other=b.Identity;break;case Types.IdentityType.Other2:c.other_id_2=b.Identity;break;case Types.IdentityType.Other3:c.other_id_3=b.Identity;break;case Types.IdentityType.Other4:c.other_id_4=b.Identity;break;case Types.IdentityType.Other5:c.other_id_5=b.Identity;break;case Types.IdentityType.Other6:c.other_id_6=b.Identity;break;case Types.IdentityType.Other7:c.other_id_7=b.Identity;break;case Types.IdentityType.Other8:c.other_id_8=b.Identity;break;case Types.IdentityType.Other9:c.other_id_9=b.Identity;break;case Types.IdentityType.Other10:c.other_id_10=b.Identity;break;case Types.IdentityType.MobileNumber:c.mobile_number=b.Identity;break;case Types.IdentityType.PhoneNumber2:c.phone_number_2=b.Identity;break;case Types.IdentityType.PhoneNumber3:c.phone_number_3=b.Identity;break;}return c}function convertEvent(a){if(!a)return null;switch(a.EventDataType){case Types.MessageType.AppStateTransition:return convertAST(a);case Types.MessageType.Commerce:return convertCommerceEvent(a);case Types.MessageType.CrashReport:return convertCrashReportEvent(a);case Types.MessageType.OptOut:return convertOptOutEvent(a);case Types.MessageType.PageEvent:// Note: Media Events are also sent as PageEvents/CustomEvents
|
|
397
405
|
return convertCustomEvent(a);case Types.MessageType.PageView:return convertPageViewEvent(a);case Types.MessageType.Profile://deprecated and not supported by the web SDK
|
|
398
406
|
return null;case Types.MessageType.SessionEnd:return convertSessionEndEvent(a);case Types.MessageType.SessionStart:return convertSessionStartEvent(a);case Types.MessageType.UserAttributeChange:return convertUserAttributeChangeEvent(a);case Types.MessageType.UserIdentityChange:return convertUserIdentityChangeEvent(a);}return null}function convertProductActionType(a){if(!a)return dist.ProductActionActionEnum.unknown;return a===SDKProductActionType.AddToCart?dist.ProductActionActionEnum.addToCart:a===SDKProductActionType.AddToWishlist?dist.ProductActionActionEnum.addToWishlist:a===SDKProductActionType.Checkout?dist.ProductActionActionEnum.checkout:a===SDKProductActionType.CheckoutOption?dist.ProductActionActionEnum.checkoutOption:a===SDKProductActionType.Click?dist.ProductActionActionEnum.click:a===SDKProductActionType.Purchase?dist.ProductActionActionEnum.purchase:a===SDKProductActionType.Refund?dist.ProductActionActionEnum.refund:a===SDKProductActionType.RemoveFromCart?dist.ProductActionActionEnum.removeFromCart:a===SDKProductActionType.RemoveFromWishlist?dist.ProductActionActionEnum.removeFromWishlist:a===SDKProductActionType.ViewDetail?dist.ProductActionActionEnum.viewDetail:dist.ProductActionActionEnum.unknown}function convertProductAction(a){if(!a.ProductAction)return null;var b={action:convertProductActionType(a.ProductAction.ProductActionType),checkout_step:a.ProductAction.CheckoutStep,checkout_options:a.ProductAction.CheckoutOptions,transaction_id:a.ProductAction.TransactionId,affiliation:a.ProductAction.Affiliation,total_amount:a.ProductAction.TotalAmount,tax_amount:a.ProductAction.TaxAmount,shipping_amount:a.ProductAction.ShippingAmount,coupon_code:a.ProductAction.CouponCode,products:convertProducts(a.ProductAction.ProductList)};return b}function convertProducts(a){if(!a||!a.length)return null;for(var b=[],c=0,d=a;c<d.length;c++){var e=d[c],f={id:e.Sku,name:e.Name,brand:e.Brand,category:e.Category,variant:e.Variant,total_product_amount:e.TotalAmount,position:e.Position,price:e.Price,quantity:e.Quantity,coupon_code:e.CouponCode,custom_attributes:e.Attributes};b.push(f);}return b}function convertPromotionAction(a){if(!a.PromotionAction)return null;var b={action:a.PromotionAction.PromotionActionType,promotions:convertPromotions(a.PromotionAction.PromotionList)};return b}function convertPromotions(a){if(!a||!a.length)return null;for(var b=[],c=0,d=a;c<d.length;c++){var e=d[c],f={id:e.Id,name:e.Name,creative:e.Creative,position:e.Position};b.push(f);}return b}function convertImpressions(a){if(!a.ProductImpressions)return null;for(var b=[],c=0,d=a.ProductImpressions;c<d.length;c++){var e=d[c],f={product_impression_list:e.ProductImpressionList,products:convertProducts(e.ProductList)};b.push(f);}return b}function convertShoppingCart(a){if(!a.ShoppingCart||!a.ShoppingCart.ProductList||!a.ShoppingCart.ProductList.length)return null;var b={products:convertProducts(a.ShoppingCart.ProductList)};return b}function convertCommerceEvent(a){var b=convertBaseEventData(a),c={custom_flags:a.CustomFlags,product_action:convertProductAction(a),promotion_action:convertPromotionAction(a),product_impressions:convertImpressions(a),shopping_cart:convertShoppingCart(a),currency_code:a.CurrencyCode};return c=Object.assign(c,b),{event_type:dist.EventTypeEnum.commerceEvent,data:c}}function convertCrashReportEvent(a){var b=convertBaseEventData(a),c={message:a.EventName};return c=Object.assign(c,b),{event_type:dist.EventTypeEnum.crashReport,data:c}}function convertAST(a){var b=convertBaseEventData(a),c=dist.ApplicationStateTransitionEventDataApplicationTransitionTypeEnum,d=c.applicationBackground,e=c.applicationInitialized,f=a.IsBackgroundAST?d:e,g={application_transition_type:f,is_first_run:a.IsFirstRun,is_upgrade:!1,launch_referral:a.LaunchReferral};// Determine the transition type based on IsBackgroundAST flag
|
|
399
407
|
return g=Object.assign(g,b),{event_type:dist.EventTypeEnum.applicationStateTransition,data:g}}function convertSessionEndEvent(a){var b=convertBaseEventData(a),c={session_duration_ms:a.SessionLength//note: External Events DTO does not support the session mpids array as of this time.
|
|
@@ -444,8 +452,8 @@ function appendUserInfo(a,b){if(b){if(!a)return b.MPID=null,b.ConsentState=null,
|
|
|
444
452
|
// TODO: Handle cases where Local Storage is unavailable
|
|
445
453
|
// Potentially shared between Vault and Persistence as well
|
|
446
454
|
// https://go.mparticle.com/work/SQDSDKS-5022
|
|
447
|
-
return e>=f},a.prototype.shouldDebounceAndUpdateLastASTTime=function(){var a=Date.now();return !!(a-this.lastASTEventTime<this.AST_DEBOUNCE_MS)||(this.lastASTEventTime=a,!1)},a.prototype.createBackgroundASTEvent=function(){var a=Date.now(),b=this.mpInstance,c=b._Store,d=b.Identity,e=b._timeOnSiteTimer,f=b._Helpers,g=c.sessionId,h=c.deviceId,i=c.sessionStartDate,j=c.SDKConfig,k=f.generateUniqueId,l=f.getFeatureFlag,m=d.getCurrentUser,n={AppName:j.appName,AppVersion:j.appVersion,Package:j["package"],EventDataType:MessageType$1.AppStateTransition,Timestamp:a,SessionId:g,DeviceId:h,IsFirstRun:!1,SourceMessageId:k(),SDKVersion:Constants.sdkVersion,CustomFlags:{},EventAttributes:{},SessionStartDate:(null===i||void 0===i?void 0:i.getTime())||a,Debug:j.isDevelopmentMode,ActiveTimeOnSite:(null===e||void 0===e?void 0:e.getTimeInForeground())||0,IsBackgroundAST:!0},o=__assign({},n.CustomFlags),p=c.integrationAttributes;// https://go.mparticle.com/work/SQDSDKS-5053
|
|
448
|
-
if(
|
|
455
|
+
return e>=f},a.prototype.shouldDebounceAndUpdateLastASTTime=function(){var a=Date.now();return !!(a-this.lastASTEventTime<this.AST_DEBOUNCE_MS)||(this.lastASTEventTime=a,!1)},a.prototype.createBackgroundASTEvent=function(){var a=Date.now(),b=this.mpInstance,c=b._Store,d=b.Identity,e=b._timeOnSiteTimer,f=b._Helpers,g=c.sessionId,h=c.deviceId,i=c.sessionStartDate,j=c.SDKConfig,k=f.generateUniqueId,l=f.getFeatureFlag,m=d.getCurrentUser,n={AppName:j.appName,AppVersion:j.appVersion,Package:j["package"],EventDataType:MessageType$1.AppStateTransition,Timestamp:a,SessionId:g,DeviceId:h,IsFirstRun:!1,SourceMessageId:k(),SDKVersion:Constants.sdkVersion,CustomFlags:{},EventAttributes:{},SessionStartDate:(null===i||void 0===i?void 0:i.getTime())||a,Debug:j.isDevelopmentMode,ActiveTimeOnSite:(null===e||void 0===e?void 0:e.getTimeInForeground())||0,IsBackgroundAST:!0},o=__assign({},n.CustomFlags),p=c.integrationAttributes,q=l(Constants.FeatureFlags.CaptureIntegrationSpecificIds),r=l(Constants.FeatureFlags.CaptureIntegrationSpecificIdsV2)||"",s=r&&r!==Constants.CaptureIntegrationSpecificIdsV2Modes.None||!0===q;// https://go.mparticle.com/work/SQDSDKS-5053
|
|
456
|
+
if(s){this.mpInstance._IntegrationCapture.capture();var t=this.mpInstance._IntegrationCapture.getClickIdsAsCustomFlags();o=__assign(__assign({},t),o);var u=this.mpInstance._IntegrationCapture.getClickIdsAsIntegrationAttributes();p=__assign(__assign({},u),p);}return n.CustomFlags=o,n.IntegrationAttributes=p,appendUserInfo(m(),n),n},a.prototype.addEventListeners=function(){var a=this,b=this,c=function(){// Check for debounce before creating and queueing event
|
|
449
457
|
var c=a.mpInstance._Helpers.getFeatureFlag,d=Constants.FeatureFlags.AstBackgroundEvents;if(c(d)){if(b.shouldDebounceAndUpdateLastASTTime())return;// Add application state transition event to queue
|
|
450
458
|
var e=b.createBackgroundASTEvent();b.queueEvent(e);}// Then trigger the upload with beacon
|
|
451
459
|
b.prepareAndUpload(!1,b.isBeaconAvailable());};document.addEventListener("visibilitychange",function(){"hidden"===document.visibilityState&&c();}),window.addEventListener("beforeunload",c),window.addEventListener("pagehide",c);},a.prototype.isBeaconAvailable=function(){return !!navigator.sendBeacon},a.prototype.triggerUploadInterval=function(a,b){var c=this;void 0===a&&(a=!1),void 0===b&&(b=!1),setTimeout(function(){c.prepareAndUpload(a,b);},this.uploadIntervalMillis);},a.prototype.queueEvent=function(a){if(!isEmpty(a)){var b=this.mpInstance.Logger.verbose;this.eventsQueuedForProcessing.push(a),this.offlineStorageEnabled&&this.eventVault&&this.eventVault.store(this.eventsQueuedForProcessing),b("Queuing event: ".concat(JSON.stringify(a))),b("Queued event count: ".concat(this.eventsQueuedForProcessing.length)),this.shouldTriggerImmediateUpload(a.EventDataType)&&this.prepareAndUpload(!1,!1);}},a.prototype.shouldTriggerImmediateUpload=function(a){var b=[MessageType$1.Commerce,MessageType$1.UserIdentityChange];return !this.batchingEnabled||b.includes(a)},(a.createNewBatches=function(a,b,c){if(!b||!a||!a.length)return null;//bucket by MPID, and then by session, ordered by timestamp
|
|
@@ -561,7 +569,7 @@ var c=b.Identity.getCurrentUser();return a===(null===c||void 0===c?void 0:c.getM
|
|
|
561
569
|
// such as if the SDK is being self-hosted and the flags are different on the server config
|
|
562
570
|
// https://go.mparticle.com/work/SQDSDKS-6317
|
|
563
571
|
d.SDKConfig.flags=processFlags(a);var j=processBaseUrls(a,d.SDKConfig.flags,c);for(var k in j)d.SDKConfig[k]=j[k];e?(d.SDKConfig.workspaceToken=e,b._timeOnSiteTimer=new ForegroundTimeTracker(e)):b.Logger.warning("You should have a workspaceToken on your config object for security purposes."),d.storageName=f(e),d.prodStorageName=g(e),a.hasOwnProperty("noFunctional")&&d.setNoFunctional(a.noFunctional),a.hasOwnProperty("noTargeting")&&d.setNoTargeting(a.noTargeting),d.SDKConfig.requiredWebviewBridgeName=i||e,d.webviewBridgeEnabled=h(d.SDKConfig.requiredWebviewBridgeName,d.SDKConfig.minWebviewBridgeVersion),d.configurationLoaded=!0;};}// https://go.mparticle.com/work/SQDSDKS-6317
|
|
564
|
-
function processFlags(a){var b={},c=Constants.FeatureFlags,d=c.ReportBatching,e=c.EventBatchingIntervalMillis,f=c.OfflineStorage,g=c.DirectUrlRouting,h=c.CacheIdentity,i=c.AudienceAPI,j=c.CaptureIntegrationSpecificIds,k=c.AstBackgroundEvents;return a.flags?(b[d]=a.flags[d]||!1,b[e]=parseNumber(a.flags[e])||Constants.DefaultConfig.uploadInterval,b[f]=a.flags[f]||"0",b[g]="True"===a.flags[g],b[h]="True"===a.flags[h],b[i]="True"===a.flags[i],b[j]="True"===a.flags[j],b[k]="True"===a.flags[
|
|
572
|
+
function processFlags(a){var b={},c=Constants.FeatureFlags,d=c.ReportBatching,e=c.EventBatchingIntervalMillis,f=c.OfflineStorage,g=c.DirectUrlRouting,h=c.CacheIdentity,i=c.AudienceAPI,j=c.CaptureIntegrationSpecificIds,k=c.CaptureIntegrationSpecificIdsV2,l=c.AstBackgroundEvents;return a.flags?(b[d]=a.flags[d]||!1,b[e]=parseNumber(a.flags[e])||Constants.DefaultConfig.uploadInterval,b[f]=a.flags[f]||"0",b[g]="True"===a.flags[g],b[h]="True"===a.flags[h],b[i]="True"===a.flags[i],b[j]="True"===a.flags[j],b[k]=a.flags[k]||"none",b[l]="True"===a.flags[l],b):{};// https://go.mparticle.com/work/SQDSDKS-6317
|
|
565
573
|
// Passed in config flags take priority over defaults
|
|
566
574
|
}function processBaseUrls(a,b,c){// an API key is not present in a webview only mode. In this case, no baseUrls are needed
|
|
567
575
|
if(!c)return {};// Set default baseUrls
|
|
@@ -1085,12 +1093,13 @@ function convertCustomFlags(a,b){var c=[];for(var d in b.flags={},a.CustomFlags)
|
|
|
1085
1093
|
// tracked. If this is an `optOut` Event, we set `optOut` to the inverse of the SDK's
|
|
1086
1094
|
// `isEnabled` boolean which is controlled via `MPInstanceManager.setOptOut`.
|
|
1087
1095
|
// TODO: Why is Webview Bridge Enabled or Opt Out necessary here?
|
|
1088
|
-
if(a._Store.sessionId||b.messageType===Types.MessageType.OptOut||a._Store.webviewBridgeEnabled){var h=__assign({},b.customFlags),i=a._Store.integrationAttributes;// https://go.mparticle.com/work/SQDSDKS-5053
|
|
1089
|
-
|
|
1096
|
+
if(a._Store.sessionId||b.messageType===Types.MessageType.OptOut||a._Store.webviewBridgeEnabled){var h=__assign({},b.customFlags),i=a._Store.integrationAttributes,j=a._Helpers.getFeatureFlag,k=j&&j(Constants.FeatureFlags.CaptureIntegrationSpecificIds),l=j&&(j(Constants.FeatureFlags.CaptureIntegrationSpecificIdsV2)||""),m=l&&l!==Constants.CaptureIntegrationSpecificIdsV2Modes.None||!0===k;// https://go.mparticle.com/work/SQDSDKS-5053
|
|
1097
|
+
// https://go.mparticle.com/work/SQDSDKS-7639
|
|
1098
|
+
if(m){a._IntegrationCapture.capture();var n=a._IntegrationCapture.getClickIdsAsCustomFlags();h=__assign(__assign({},n),h);var o=a._IntegrationCapture.getClickIdsAsIntegrationAttributes();i=__assign(__assign({},o),i);}f=b.hasOwnProperty("toEventAPIObject")?b.toEventAPIObject():{// This is an artifact from v2 events where SessionStart/End and AST event
|
|
1090
1099
|
// names are numbers (1, 2, or 10), but going forward with v3, these lifecycle
|
|
1091
1100
|
// events do not have names, but are denoted by their `event_type`
|
|
1092
1101
|
EventName:b.name||b.messageType,EventCategory:b.eventType,EventAttributes:a._Helpers.sanitizeAttributes(b.data,b.name),ActiveTimeOnSite:null===(d=a._timeOnSiteTimer)||void 0===d?void 0:d.getTimeInForeground(),SourceMessageId:b.sourceMessageId||a._Helpers.generateUniqueId(),EventDataType:b.messageType,CustomFlags:h,UserAttributeChanges:b.userAttributeChanges,UserIdentityChanges:b.userIdentityChanges},b.messageType!==Types.MessageType.SessionEnd&&(a._Store.dateLastEventSent=new Date),e={// FIXME: Deprecate when we get rid of V2
|
|
1093
|
-
Store:a._Store.serverSettings,SDKVersion:Constants.sdkVersion,SessionId:a._Store.sessionId,SessionStartDate:a._Store.sessionStartDate?a._Store.sessionStartDate.getTime():0,Debug:a._Store.SDKConfig.isDevelopmentMode,Location:a._Store.currentPosition,OptOut:g,ExpandedEventCount:0,AppVersion:a.getAppVersion(),AppName:a.getAppName(),Package:a._Store.SDKConfig["package"],ClientGeneratedId:a._Store.clientId,DeviceId:a._Store.deviceId,IntegrationAttributes:i,CurrencyCode:a._Store.currencyCode,DataPlan:a._Store.SDKConfig.dataPlan?a._Store.SDKConfig.dataPlan:{}},f.EventDataType===MessageType.AppStateTransition&&(f.IsFirstRun=a._Store.isFirstRun,f.LaunchReferral=window.location.href||null),f.CurrencyCode=a._Store.currencyCode;var
|
|
1102
|
+
Store:a._Store.serverSettings,SDKVersion:Constants.sdkVersion,SessionId:a._Store.sessionId,SessionStartDate:a._Store.sessionStartDate?a._Store.sessionStartDate.getTime():0,Debug:a._Store.SDKConfig.isDevelopmentMode,Location:a._Store.currentPosition,OptOut:g,ExpandedEventCount:0,AppVersion:a.getAppVersion(),AppName:a.getAppName(),Package:a._Store.SDKConfig["package"],ClientGeneratedId:a._Store.clientId,DeviceId:a._Store.deviceId,IntegrationAttributes:i,CurrencyCode:a._Store.currencyCode,DataPlan:a._Store.SDKConfig.dataPlan?a._Store.SDKConfig.dataPlan:{}},f.EventDataType===MessageType.AppStateTransition&&(f.IsFirstRun=a._Store.isFirstRun,f.LaunchReferral=window.location.href||null),f.CurrencyCode=a._Store.currencyCode;var p=c||a.Identity.getCurrentUser();return appendUserInfo(p,f),b.messageType===Types.MessageType.SessionEnd&&(f.SessionLength=a._Store.dateLastEventSent.getTime()-a._Store.sessionStartDate.getTime(),f.currentSessionMPIDs=a._Store.currentSessionMPIDs,f.EventAttributes=a._Store.sessionAttributes,a._Store.currentSessionMPIDs=[],a._Store.sessionStartDate=null),e.Timestamp=a._Store.dateLastEventSent.getTime(),a._Helpers.extend({},f,e)}return null},this.convertEventToV2DTO=function(c){var d={n:c.EventName,et:c.EventCategory,ua:c.UserAttributes,ui:c.UserIdentities,ia:c.IntegrationAttributes,str:c.Store,attrs:c.EventAttributes,sdk:c.SDKVersion,sid:c.SessionId,sl:c.SessionLength,ssd:c.SessionStartDate,dt:c.EventDataType,dbg:c.Debug,ct:c.Timestamp,lc:c.Location,o:c.OptOut,eec:c.ExpandedEventCount,av:c.AppVersion,cgid:c.ClientGeneratedId,das:c.DeviceId,mpid:c.MPID,smpids:c.currentSessionMPIDs};c.DataPlan&&c.DataPlan.PlanId&&(d.dp_id=c.DataPlan.PlanId,c.DataPlan.PlanVersion&&(d.dp_v=c.DataPlan.PlanVersion));var e=b.convertToConsentStateV2DTO(c.ConsentState);return e&&(d.con=e),c.EventDataType===MessageType.AppStateTransition&&(d.fr=c.IsFirstRun,d.iu=!1,d.at=ApplicationTransitionType.AppInit,d.lr=c.LaunchReferral,d.attrs=null),c.CustomFlags&&convertCustomFlags(c,d),c.EventDataType===MessageType.Commerce?(d.cu=c.CurrencyCode,c.ShoppingCart&&(d.sc={pl:convertProductListToV2DTO(c.ShoppingCart.ProductList)}),c.ProductAction?d.pd={an:c.ProductAction.ProductActionType,cs:a._Helpers.parseNumber(c.ProductAction.CheckoutStep),co:c.ProductAction.CheckoutOptions,pl:convertProductListToV2DTO(c.ProductAction.ProductList),ti:c.ProductAction.TransactionId,ta:c.ProductAction.Affiliation,tcc:c.ProductAction.CouponCode,tr:a._Helpers.parseNumber(c.ProductAction.TotalAmount),ts:a._Helpers.parseNumber(c.ProductAction.ShippingAmount),tt:a._Helpers.parseNumber(c.ProductAction.TaxAmount)}:c.PromotionAction?d.pm={an:c.PromotionAction.PromotionActionType,pl:c.PromotionAction.PromotionList.map(function(a){return {id:a.Id,nm:a.Name,cr:a.Creative,ps:a.Position?a.Position:0}})}:c.ProductImpressions&&(d.pi=c.ProductImpressions.map(function(a){return {pil:a.ProductImpressionList,pl:convertProductListToV2DTO(a.ProductList)}}))):c.EventDataType===MessageType.Profile&&(d.pet=c.ProfileMessageType),d};}
|
|
1094
1103
|
|
|
1095
1104
|
function forwardingStatsUploader(a){function b(){var b=a._Forwarders.getForwarderStatsQueue(),c=a._Persistence.forwardingStatsBatches.uploadsTable,d=Date.now();for(var e in b.length&&(c[d]={uploading:!1,data:b},a._Forwarders.setForwarderStatsQueue([])),c)(function(b){if(c.hasOwnProperty(b)&&!1===c[b].uploading){var d=function(){4===e.readyState&&(200===e.status||202===e.status?(a.Logger.verbose("Successfully sent "+e.statusText+" from server"),delete c[b]):"4"===e.status.toString()[0]?429!==e.status&&delete c[b]:c[b].uploading=!1);},e=a._Helpers.createXHR(d),f=c[b].data;c[b].uploading=!0,a._APIClient.sendBatchForwardingStatsToServer(f,e);}})(e);}this.startForwardingStatsTimer=function(){mParticle._forwardingStatsTimer=setInterval(function(){b();},a._Store.SDKConfig.forwarderStatsTimeout);};}
|
|
1096
1105
|
|
|
@@ -1396,21 +1405,21 @@ var h=c||Date.now();return "fb.".concat(g,".").concat(h,".").concat(a)};// Integ
|
|
|
1396
1405
|
// CUSTOM_FLAGS are sent out when an Event is created via ServerModel.createEventObject
|
|
1397
1406
|
// PARTNER_IDENTITIES are sent out in a Batch when a group of events are converted to a Batch
|
|
1398
1407
|
// INTEGRATION_ATTRIBUTES are stored initially on the SDKEvent level but then is added to the Batch when the batch is created
|
|
1399
|
-
var IntegrationOutputs={CUSTOM_FLAGS:"custom_flags",PARTNER_IDENTITIES:"partner_identities",INTEGRATION_ATTRIBUTES:"integration_attributes"},
|
|
1408
|
+
var IntegrationOutputs={CUSTOM_FLAGS:"custom_flags",PARTNER_IDENTITIES:"partner_identities",INTEGRATION_ATTRIBUTES:"integration_attributes"},integrationMappingExternal={// Facebook / Meta
|
|
1400
1409
|
fbclid:{mappedKey:"Facebook.ClickId",processor:facebookClickIdProcessor,output:IntegrationOutputs.CUSTOM_FLAGS},_fbp:{mappedKey:"Facebook.BrowserId",output:IntegrationOutputs.CUSTOM_FLAGS},_fbc:{mappedKey:"Facebook.ClickId",output:IntegrationOutputs.CUSTOM_FLAGS},// Google
|
|
1401
|
-
gclid:{mappedKey:"GoogleEnhancedConversions.Gclid",output:IntegrationOutputs.CUSTOM_FLAGS},gbraid:{mappedKey:"GoogleEnhancedConversions.Gbraid",output:IntegrationOutputs.CUSTOM_FLAGS},wbraid:{mappedKey:"GoogleEnhancedConversions.Wbraid",output:IntegrationOutputs.CUSTOM_FLAGS},//
|
|
1402
|
-
// https://docs.rokt.com/developers/integration-guides/web/advanced/rokt-id-tag/
|
|
1403
|
-
// https://go.mparticle.com/work/SQDSDKS-7167
|
|
1404
|
-
rtid:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},rclid:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},RoktTransactionId:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},// TIKTOK
|
|
1410
|
+
gclid:{mappedKey:"GoogleEnhancedConversions.Gclid",output:IntegrationOutputs.CUSTOM_FLAGS},gbraid:{mappedKey:"GoogleEnhancedConversions.Gbraid",output:IntegrationOutputs.CUSTOM_FLAGS},wbraid:{mappedKey:"GoogleEnhancedConversions.Wbraid",output:IntegrationOutputs.CUSTOM_FLAGS},// TIKTOK
|
|
1405
1411
|
ttclid:{mappedKey:"TikTok.Callback",output:IntegrationOutputs.CUSTOM_FLAGS},_ttp:{mappedKey:"tiktok_cookie_id",output:IntegrationOutputs.PARTNER_IDENTITIES},// Snapchat
|
|
1406
1412
|
// https://businesshelp.snapchat.com/s/article/troubleshooting-click-id?language=en_US
|
|
1407
|
-
ScCid:{mappedKey:"SnapchatConversions.ClickId",output:IntegrationOutputs.CUSTOM_FLAGS}},
|
|
1413
|
+
ScCid:{mappedKey:"SnapchatConversions.ClickId",output:IntegrationOutputs.CUSTOM_FLAGS}},integrationMappingRokt={// Rokt
|
|
1414
|
+
// https://docs.rokt.com/developers/integration-guides/web/advanced/rokt-id-tag/
|
|
1415
|
+
// https://go.mparticle.com/work/SQDSDKS-7167
|
|
1416
|
+
rtid:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},rclid:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277},RoktTransactionId:{mappedKey:"passbackconversiontrackingid",output:IntegrationOutputs.INTEGRATION_ATTRIBUTES,moduleId:1277}},IntegrationCapture=/** @class */function(){function a(a){this.initialTimestamp=Date.now(),this.captureMode=a,this.filteredPartnerIdentityMappings=this.filterMappings(IntegrationOutputs.PARTNER_IDENTITIES),this.filteredCustomFlagMappings=this.filterMappings(IntegrationOutputs.CUSTOM_FLAGS),this.filteredIntegrationAttributeMappings=this.filterMappings(IntegrationOutputs.INTEGRATION_ATTRIBUTES);}/**
|
|
1408
1417
|
* Captures Integration Ids from cookies and query params and stores them in clickIds object
|
|
1409
1418
|
*/return a.prototype.capture=function(){var a=this.captureQueryParams()||{},b=this.captureCookies()||{},c=this.captureLocalStorage()||{};a.fbclid&&b._fbc&&delete b._fbc;// ROKT Rules
|
|
1410
1419
|
// If both rtid or rclid and RoktTransactionId are present, prioritize rtid/rclid
|
|
1411
1420
|
// If RoktTransactionId is present in both cookies and localStorage,
|
|
1412
1421
|
// prioritize localStorage
|
|
1413
|
-
var d=a.rtid||a.rclid,e=c.RoktTransactionId,f=b.RoktTransactionId;d?(e&&delete c.RoktTransactionId,f&&delete b.RoktTransactionId):e&&f&&delete b.RoktTransactionId,this.clickIds=__assign(__assign(__assign(__assign({},this.clickIds),a),c),b);},a.prototype.captureCookies=function(){var a=
|
|
1422
|
+
var d=a.rtid||a.rclid,e=c.RoktTransactionId,f=b.RoktTransactionId;d?(e&&delete c.RoktTransactionId,f&&delete b.RoktTransactionId):e&&f&&delete b.RoktTransactionId,this.clickIds=__assign(__assign(__assign(__assign({},this.clickIds),a),c),b);},a.prototype.captureCookies=function(){var a=this.getAllowedKeysForMode(),b=getCookies(a);return this.applyProcessors(b,getHref(),this.initialTimestamp)},a.prototype.captureQueryParams=function(){var a=this.getQueryParams();return this.applyProcessors(a,getHref(),this.initialTimestamp)},a.prototype.captureLocalStorage=function(){for(var a=this.getAllowedKeysForMode(),b={},c=0,d=a;c<d.length;c++){var e=d[c],f=localStorage.getItem(e);f&&(b[e]=f);}return this.applyProcessors(b,getHref(),this.initialTimestamp)},a.prototype.getQueryParams=function(){var a=this.getAllowedKeysForMode();return queryStringParser(getHref(),a)},a.prototype.getClickIdsAsCustomFlags=function(){return this.getClickIds(this.clickIds,this.filteredCustomFlagMappings)},a.prototype.getClickIdsAsPartnerIdentities=function(){return this.getClickIds(this.clickIds,this.filteredPartnerIdentityMappings)},a.prototype.getClickIdsAsIntegrationAttributes=function(){var a,b,c,d={};// Integration IDs are stored in the following format:
|
|
1414
1423
|
// {
|
|
1415
1424
|
// "integration_attributes": {
|
|
1416
1425
|
// "<moduleId>": {
|
|
@@ -1418,7 +1427,7 @@ var d=a.rtid||a.rclid,e=c.RoktTransactionId,f=b.RoktTransactionId;d?(e&&delete c
|
|
|
1418
1427
|
// }
|
|
1419
1428
|
// }
|
|
1420
1429
|
// }
|
|
1421
|
-
for(var e in this.clickIds)if(this.clickIds.hasOwnProperty(e)){var f=this.clickIds[e],g=null===(b=this.filteredIntegrationAttributeMappings[e])||void 0===b?void 0:b.mappedKey;if(!isEmpty(g)){var h=null===(c=this.filteredIntegrationAttributeMappings[e])||void 0===c?void 0:c.moduleId;h&&!d[h]&&(d[h]=(a={},a[g]=f,a));}}return d},a.prototype.getClickIds=function(a,b){var c,d={};if(!a)return d;for(var e in a)if(a.hasOwnProperty(e)){var f=a[e],g=null===(c=b[e])||void 0===c?void 0:c.mappedKey;isEmpty(g)||(d[g]=f);}return d},a.prototype.applyProcessors=function(a,b,c){var d,e={};for(var
|
|
1430
|
+
for(var e in this.clickIds)if(this.clickIds.hasOwnProperty(e)){var f=this.clickIds[e],g=null===(b=this.filteredIntegrationAttributeMappings[e])||void 0===b?void 0:b.mappedKey;if(!isEmpty(g)){var h=null===(c=this.filteredIntegrationAttributeMappings[e])||void 0===c?void 0:c.moduleId;h&&!d[h]&&(d[h]=(a={},a[g]=f,a));}}return d},a.prototype.getClickIds=function(a,b){var c,d={};if(!a)return d;for(var e in a)if(a.hasOwnProperty(e)){var f=a[e],g=null===(c=b[e])||void 0===c?void 0:c.mappedKey;isEmpty(g)||(d[g]=f);}return d},a.prototype.applyProcessors=function(a,b,c){var d,e={},f=this.getActiveIntegrationMapping();for(var g in a)if(a.hasOwnProperty(g)){var h=a[g],i=null===(d=f[g])||void 0===d?void 0:d.processor;e[g]=i?i(h,b,c):h;}return e},a.prototype.filterMappings=function(a){var b={},c=this.getActiveIntegrationMapping();for(var d in c)c[d].output===a&&(b[d]=c[d]);return b},a.prototype.getAllowedKeysForMode=function(){return Object.keys(this.getActiveIntegrationMapping())},a.prototype.getActiveIntegrationMapping=function(){return this.captureMode===Constants.CaptureIntegrationSpecificIdsV2Modes.RoktOnly?integrationMappingRokt:this.captureMode===Constants.CaptureIntegrationSpecificIdsV2Modes.All?__assign(__assign({},integrationMappingExternal),integrationMappingRokt):{}},a}();
|
|
1422
1431
|
|
|
1423
1432
|
// Rokt Web SDK via a Web Kit.
|
|
1424
1433
|
// The Rokt Manager should load before the Web Kit and stubs out many of the
|
|
@@ -1447,7 +1456,7 @@ var k=(null===f||void 0===f?void 0:f.sandbox)||!1;// Launcher options are set he
|
|
|
1447
1456
|
this.launcherOptions=__assign({sandbox:k},null===f||void 0===f?void 0:f.launcherOptions),(null===f||void 0===f?void 0:f.domain)&&(this.domain=f.domain);},a.prototype.attachKit=function(a){this.kit=a,this.processMessageQueue();},a.prototype.selectPlacements=function(a){var b,c;return __awaiter(this,void 0,void 0,function(){var d,e,f,g,h,i,j,k,l,m,n=this;return __generator(this,function(o){switch(o.label){case 0:if(!this.isReady())return [2/*return*/,this.deferredCall("selectPlacements",a)];o.label=1;case 1:if(o.trys.push([1,6,,7]),d=a.attributes,e=(null===d||void 0===d?void 0:d.sandbox)||null,f=this.mapPlacementAttributes(d,this.placementAttributesMapping),this.currentUser=this.identityService.getCurrentUser(),g=(null===(c=null===(b=this.currentUser)||void 0===b?void 0:b.getUserIdentities())||void 0===c?void 0:c.userIdentities)||{},h=g.email,i=f.email,!i||h&&h===i)return [3/*break*/,5];h&&h!==i&&this.logger.warning("Email mismatch detected. Current email, ".concat(h," differs from email passed to selectPlacements call, ").concat(i,". Proceeding to call identify with ").concat(i,". Please verify your implementation.")),o.label=2;case 2:return o.trys.push([2,4,,5]),[4/*yield*/,new Promise(function(a){n.identityService.identify({userIdentities:__assign(__assign({},g),{email:i})},function(){a();});})];case 3:return o.sent(),[3/*break*/,5];case 4:return j=o.sent(),this.logger.error("Failed to identify user with new email: "+JSON.stringify(j)),[3/*break*/,5];case 5:return this.setUserAttributes(f),k=__assign(__assign({},f),null===e?{}:{sandbox:e}),l=__assign(__assign({},a),{attributes:k}),[2/*return*/,this.kit.selectPlacements(l)];case 6:return m=o.sent(),[2/*return*/,Promise.reject(m instanceof Error?m:new Error("Unknown error occurred"))];case 7:return [2/*return*/]}})})},a.prototype.hashAttributes=function(a){if(!this.isReady())return this.deferredCall("hashAttributes",a);try{return this.kit.hashAttributes(a)}catch(a){return Promise.reject(a instanceof Error?a:new Error("Unknown error occurred"))}},a.prototype.setExtensionData=function(a){if(!this.isReady())return void this.deferredCall("setExtensionData",a);try{this.kit.setExtensionData(a);}catch(a){var b=a instanceof Error?a.message:a+"";throw new Error("Error setting extension data: "+b)}},a.prototype.use=function(a){if(!this.isReady())return this.deferredCall("use",a);try{return this.kit.use(a)}catch(b){return Promise.reject(b instanceof Error?b:new Error("Error using extension: "+a))}},a.prototype.getLocalSessionAttributes=function(){return this.store.getLocalSessionAttributes()},a.prototype.setLocalSessionAttribute=function(a,b){this.store.setLocalSessionAttribute(a,b);},a.prototype.isReady=function(){// The Rokt Manager is ready when a kit is attached and has a launcher
|
|
1448
1457
|
return !!(this.kit&&this.kit.launcher)},a.prototype.setUserAttributes=function(a){var b=["sandbox"],c={};for(var d in a)a.hasOwnProperty(d)&&-1===b.indexOf(d)&&(c[d]=a[d]);try{this.currentUser.setUserAttributes(c);}catch(a){this.logger.error("Error setting user attributes: "+a);}},a.prototype.mapPlacementAttributes=function(a,b){for(var c,d={},e=0,f=b;e<f.length;e++)c=f[e],d[c.map]=c.value;var g={};for(var h in a)if(a.hasOwnProperty(h)){var i=d[h]||h;g[i]=a[h];}return g},a.prototype.processMessageQueue=function(){var a,b=this;this.isReady()&&0!==this.messageQueue.size&&(null===(a=this.logger)||void 0===a?void 0:a.verbose("RoktManager: Processing ".concat(this.messageQueue.size," queued messages")),this.messageQueue.forEach(function(a){var c,d,e;if(!(a.methodName in b.kit)||!isFunction(b.kit[a.methodName]))return void(null===(c=b.logger)||void 0===c?void 0:c.error("RoktManager: Method ".concat(a.methodName," not found in kit")));null===(d=b.logger)||void 0===d?void 0:d.verbose("RoktManager: Processing queued message: ".concat(a.methodName," with payload: ").concat(JSON.stringify(a.payload)));try{var f=b.kit[a.methodName](a.payload);b.completePendingPromise(a.messageId,f);}catch(c){var g=c instanceof Error?c.message:c+"";null===(e=b.logger)||void 0===e?void 0:e.error("RoktManager: Error processing message '".concat(a.methodName,"': ").concat(g)),b.completePendingPromise(a.messageId,Promise.reject(c));}}));},a.prototype.queueMessage=function(a){this.messageQueue.set(a.messageId,a);},a.prototype.deferredCall=function(a,b){var c=this;return new Promise(function(d,e){var f="".concat(a,"_").concat(generateUniqueId());c.queueMessage({messageId:f,methodName:a,payload:b,resolve:d,reject:e});})},a.prototype.completePendingPromise=function(a,b){if(a&&this.messageQueue.has(a)){var c=this.messageQueue.get(a);c.resolve&&Promise.resolve(b).then(function(a){return c.resolve(a)})["catch"](function(a){return c.reject(a)}),this.messageQueue["delete"](a);}},a}();
|
|
1449
1458
|
|
|
1450
|
-
var Messages=Constants.Messages,HTTPCodes=Constants.HTTPCodes,FeatureFlags=Constants.FeatureFlags,ReportBatching=FeatureFlags.ReportBatching,CaptureIntegrationSpecificIds=FeatureFlags.CaptureIntegrationSpecificIds,StartingInitialization=Messages.InformationMessages.StartingInitialization;/**
|
|
1459
|
+
var Messages=Constants.Messages,HTTPCodes=Constants.HTTPCodes,FeatureFlags=Constants.FeatureFlags,CaptureIntegrationSpecificIdsV2Modes=Constants.CaptureIntegrationSpecificIdsV2Modes,ReportBatching=FeatureFlags.ReportBatching,CaptureIntegrationSpecificIds=FeatureFlags.CaptureIntegrationSpecificIds,CaptureIntegrationSpecificIdsV2=FeatureFlags.CaptureIntegrationSpecificIdsV2,StartingInitialization=Messages.InformationMessages.StartingInitialization;/**
|
|
1451
1460
|
* <p>All of the following methods can be called on the primary mParticle class. In version 2.10.0, we introduced <a href="https://docs.mparticle.com/developers/sdk/web/multiple-instances/">multiple instances</a>. If you are using multiple instances (self hosted environments only), you should call these methods on each instance.</p>
|
|
1452
1461
|
* <p>In current versions of mParticle, if your site has one instance, that instance name is 'default_instance'. Any methods called on mParticle on a site with one instance will be mapped to the `default_instance`.</p>
|
|
1453
1462
|
* <p>This is for simplicity and backwards compatibility. For example, calling mParticle.logPageView() automatically maps to mParticle.getInstance('default_instance').logPageView().</p>
|
|
@@ -1621,7 +1630,7 @@ var Messages=Constants.Messages,HTTPCodes=Constants.HTTPCodes,FeatureFlags=Const
|
|
|
1621
1630
|
If there is no delay, then the events sent before an integration attribute is included would not
|
|
1622
1631
|
be forwarded successfully server side.
|
|
1623
1632
|
*/ // Internal use only. Used by our wrapper SDKs to identify themselves during initialization.
|
|
1624
|
-
this._instanceName=a,this._NativeSdkHelpers=new NativeSdkHelpers(this),this._SessionManager=new SessionManager(this),this._Persistence=new _Persistence(this),this._Helpers=new Helpers(this),this._Events=new Events(this),this._CookieSyncManager=new CookieSyncManager(this),this._ServerModel=new ServerModel(this),this._Ecommerce=new Ecommerce(this),this._ForwardingStatsUploader=new forwardingStatsUploader(this),this._Consent=new Consent(this),this._IdentityAPIClient=new IdentityAPIClient(this),this._preInit={readyQueue:[],integrationDelays:{},forwarderConstructors:[]},this.
|
|
1633
|
+
this._instanceName=a,this._NativeSdkHelpers=new NativeSdkHelpers(this),this._SessionManager=new SessionManager(this),this._Persistence=new _Persistence(this),this._Helpers=new Helpers(this),this._Events=new Events(this),this._CookieSyncManager=new CookieSyncManager(this),this._ServerModel=new ServerModel(this),this._Ecommerce=new Ecommerce(this),this._ForwardingStatsUploader=new forwardingStatsUploader(this),this._Consent=new Consent(this),this._IdentityAPIClient=new IdentityAPIClient(this),this._preInit={readyQueue:[],integrationDelays:{},forwarderConstructors:[]},this._RoktManager=new RoktManager,this.IdentityType=IdentityType,this.EventType=EventType,this.CommerceEventType=CommerceEventType,this.PromotionType=PromotionActionType,this.ProductActionType=ProductActionType,this._Identity=new Identity(this),this.Identity=this._Identity.IdentityAPI,this.generateHash=this._Helpers.generateHash,this.getDeviceId=this._Persistence.getDeviceId,"undefined"!=typeof window&&window.mParticle&&window.mParticle.config&&window.mParticle.config.hasOwnProperty("rq")&&(this._preInit.readyQueue=window.mParticle.config.rq),this.init=function(a,b){var c=this;// config code - Fetch config when requestConfig = true, otherwise, proceed with SDKInitialization
|
|
1625
1634
|
// Since fetching the configuration is asynchronous, we must pass completeSDKInitialization
|
|
1626
1635
|
// to it for it to be run after fetched
|
|
1627
1636
|
if(b||console.warn("You did not pass a config object to init(). mParticle will not initialize properly"),runPreConfigFetchInitialization(this,a,b),!b)return void console.error("No config available on the window, please pass a config object to mParticle.init()");if(!b.hasOwnProperty("requestConfig")||b.requestConfig){var d=new ConfigAPIClient(a,b,this);d.getSDKConfiguration().then(function(d){var e=c._Helpers.extend({},b,d);completeSDKInitialization(a,e,c);});}else completeSDKInitialization(a,b,this);},this.setLogLevel=function(a){b.Logger.setLogLevel(a);},this.reset=function(a){try{a._Persistence.resetPersistence(),a._Store&&delete a._Store;}catch(a){console.error("Cannot reset mParticle",a);}},this._resetForTests=function(a,b,c){c._Store&&delete c._Store,c._Store=new Store(a,c),c._Store.isLocalStorageAvailable=c._Persistence.determineLocalStorageAvailability(window.localStorage),c._Events.stopTracking(),b||c._Persistence.resetPersistence(),c._Persistence.forwardingStatsBatches.uploadsTable={},c._Persistence.forwardingStatsBatches.forwardingStatsEventQueue=[],c._preInit={readyQueue:[],pixelConfigurations:[],integrationDelays:{},forwarderConstructors:[],isDevelopmentMode:!1};},this.ready=function(a){b.isInitialized()&&"function"==typeof a?a():b._preInit.readyQueue.push(a);},this.getEnvironment=function(){return b._Store.SDKConfig.isDevelopmentMode?Constants.Environment.Development:Constants.Environment.Production},this.getVersion=function(){return Constants.sdkVersion},this.setAppVersion=function(a){var c=queueIfNotInitialized(function(){b.setAppVersion(a);},b);c||(b._Store.SDKConfig.appVersion=a,b._Persistence.update());},this.setDeviceId=function(a){var c=queueIfNotInitialized(function(){b.setDeviceId(a);},b);c||this._Store.setDeviceId(a);},this.isInitialized=function(){return !!b._Store&&b._Store.isInitialized},this.getAppName=function(){return b._Store.SDKConfig.appName},this.setAppName=function(a){var c=queueIfNotInitialized(function(){b.setAppName(a);},b);c||(b._Store.SDKConfig.appName=a);},this.getAppVersion=function(){return b._Store.SDKConfig.appVersion},this.stopTrackingLocation=function(){b._SessionManager.resetSessionTimer(),b._Events.stopTracking();},this.startTrackingLocation=function(a){isFunction(a)||b.Logger.warning("Warning: Location tracking is triggered, but not including a callback into the `startTrackingLocation` may result in events logged too quickly and not being associated with a location."),b._SessionManager.resetSessionTimer(),b._Events.startTracking(a);},this.setPosition=function(a,c){var d=queueIfNotInitialized(function(){b.setPosition(a,c);},b);d||(b._SessionManager.resetSessionTimer(),"number"==typeof a&&"number"==typeof c?b._Store.currentPosition={lat:a,lng:c}:b.Logger.error("Position latitude and/or longitude must both be of type number"));},this.startNewSession=function(){b._SessionManager.startNewSession();},this.endSession=function(){// Sends true as an over ride vs when endSession is called from the setInterval
|
|
@@ -1777,14 +1786,15 @@ b._SessionManager.endSession(!0);},this.logBaseEvent=function(a,c){var d=queueIf
|
|
|
1777
1786
|
if(b._preInit.integrationDelays[a]=c,!0!==c){// If the integration delay is set to false, check to see if there are any
|
|
1778
1787
|
// other integration delays set to true. It not, process the queued events/.
|
|
1779
1788
|
var d=Object.keys(b._preInit.integrationDelays);if(0!==d.length){var e=d.some(function(a){return !0===b._preInit.integrationDelays[a]});e||b._APIClient.processQueuedEvents();}}},this._setWrapperSDKInfo=function(a,c){var d=queueIfNotInitialized(function(){b._setWrapperSDKInfo(a,c);},b);d||(b._Store.wrapperSDKInfo===void 0||!b._Store.wrapperSDKInfo.isInfoSet)&&(b._Store.wrapperSDKInfo={name:a,version:c,isInfoSet:!0});};}// Some (server) config settings need to be returned before they are set on SDKConfig in a self hosted environment
|
|
1780
|
-
function completeSDKInitialization(a,b,c){var d=createKitBlocker(b,c);// Web View Bridge is used for cases where the Web SDK is loaded within an iOS or Android device's
|
|
1789
|
+
function completeSDKInitialization(a,b,c){var d=createKitBlocker(b,c),e=c._Helpers.getFeatureFlag;// Web View Bridge is used for cases where the Web SDK is loaded within an iOS or Android device's
|
|
1781
1790
|
// Web View. The Web SDK simply acts as a passthrough to the mParticle Native SDK. It is not
|
|
1782
1791
|
// responsible for sending events directly to mParticle's servers. The Web SDK will not initialize
|
|
1783
1792
|
// persistence or Identity directly.
|
|
1784
1793
|
if(c._APIClient=new APIClient(c,d),c._Forwarders=new Forwarders(c,d),c._Store.processConfig(b),c._Identity.idCache=createIdentityCache(c),removeExpiredIdentityCacheDates(c._Identity.idCache),c._Store.webviewBridgeEnabled)c._NativeSdkHelpers.initializeSessionAttributes(a);else {c._Persistence.initializeStorage(),c._Store.syncPersistenceData();// Set up user identitiy variables for later use
|
|
1785
|
-
var
|
|
1786
|
-
var
|
|
1787
|
-
|
|
1794
|
+
var f=c.Identity.getCurrentUser(),g=f?f.getMPID():null,h=f?f.getUserIdentities().userIdentities:{};c._Store.SDKConfig.identifyRequest=c._Store.hasInvalidIdentifyRequest()?{userIdentities:h}:c._Store.SDKConfig.identifyRequest,e(ReportBatching)&&c._ForwardingStatsUploader.startForwardingStatsTimer();// https://go.mparticle.com/work/SQDSDKS-7639
|
|
1795
|
+
var i=e(CaptureIntegrationSpecificIds),j=e(CaptureIntegrationSpecificIdsV2),k=j&&j!==CaptureIntegrationSpecificIdsV2Modes.None||!0===i;if(k){var l;i||j===CaptureIntegrationSpecificIdsV2Modes.All?l="all":j===CaptureIntegrationSpecificIdsV2Modes.RoktOnly&&(l="roktonly"),c._IntegrationCapture=new IntegrationCapture(l),c._IntegrationCapture.capture();}// Configure Rokt Manager with user and filtered user
|
|
1796
|
+
var m=parseConfig(b,"Rokt",181);if(m){var n=m.userAttributeFilters,o=filteredMparticleUser(g,{userAttributeFilters:n},c),p={sandbox:null===b||void 0===b?void 0:b.isDevelopmentMode,launcherOptions:null===b||void 0===b?void 0:b.launcherOptions,domain:null===b||void 0===b?void 0:b.domain};// https://go.mparticle.com/work/SQDSDKS-7339
|
|
1797
|
+
c._RoktManager.init(m,o,c.Identity,c._Store,c.Logger,p);}c._Forwarders.processForwarders(b,c._APIClient.prepareForwardingStats),c._Forwarders.processPixelConfigs(b),c._SessionManager.initialize(),c._Events.logAST(),processIdentityCallback(c,f,g,h);}// We will continue to clear out the ready queue as part of the initial init flow
|
|
1788
1798
|
// if an identify request is unnecessary, such as if there is an existing session
|
|
1789
1799
|
(c._Store.mpid&&!c._Store.identifyCalled||c._Store.webviewBridgeEnabled)&&(c._Store.isInitialized=!0,c._preInit.readyQueue=processReadyQueue(c._preInit.readyQueue)),c._Store.isFirstRun&&(c._Store.isFirstRun=!1);}// https://go.mparticle.com/work/SQDSDKS-7061
|
|
1790
1800
|
function createKitBlocker(a,b){var c,d,e,f;/* There are three ways a data plan object for blocking can be passed to the SDK:
|
package/dist/mparticle.js
CHANGED
|
@@ -203,7 +203,7 @@ var mParticle = (function () {
|
|
|
203
203
|
Base64: Base64$1
|
|
204
204
|
};
|
|
205
205
|
|
|
206
|
-
var version = "2.
|
|
206
|
+
var version = "2.46.0";
|
|
207
207
|
|
|
208
208
|
var Constants = {
|
|
209
209
|
sdkVersion: version,
|
|
@@ -373,7 +373,15 @@ var mParticle = (function () {
|
|
|
373
373
|
DirectUrlRouting: 'directURLRouting',
|
|
374
374
|
CacheIdentity: 'cacheIdentity',
|
|
375
375
|
AudienceAPI: 'audienceAPI',
|
|
376
|
+
// CaptureIntegrationSpecificIds (legacy): boolean flag from server/UI
|
|
377
|
+
// - 'True' → capture all integration-specific IDs
|
|
378
|
+
// - 'False' → capture none
|
|
376
379
|
CaptureIntegrationSpecificIds: 'captureIntegrationSpecificIds',
|
|
380
|
+
// CaptureIntegrationSpecificIdsV2 (new): string mode from server
|
|
381
|
+
// - 'all' → capture all IDs
|
|
382
|
+
// - 'none' → capture none
|
|
383
|
+
// - 'roktonly' → capture only Rokt-related IDs
|
|
384
|
+
CaptureIntegrationSpecificIdsV2: 'captureIntegrationSpecificIdsV2',
|
|
377
385
|
AstBackgroundEvents: 'astBackgroundEvents'
|
|
378
386
|
},
|
|
379
387
|
DefaultInstance: 'default_instance',
|
|
@@ -387,6 +395,11 @@ var mParticle = (function () {
|
|
|
387
395
|
Environment: {
|
|
388
396
|
Development: 'development',
|
|
389
397
|
Production: 'production'
|
|
398
|
+
},
|
|
399
|
+
CaptureIntegrationSpecificIdsV2Modes: {
|
|
400
|
+
All: 'all',
|
|
401
|
+
None: 'none',
|
|
402
|
+
RoktOnly: 'roktonly'
|
|
390
403
|
}
|
|
391
404
|
};
|
|
392
405
|
// https://go.mparticle.com/work/SQDSDKS-6080
|
|
@@ -1480,7 +1493,8 @@ var mParticle = (function () {
|
|
|
1480
1493
|
})(SDKIdentityTypeEnum || (SDKIdentityTypeEnum = {}));
|
|
1481
1494
|
|
|
1482
1495
|
var FeatureFlags$2 = Constants.FeatureFlags;
|
|
1483
|
-
var CaptureIntegrationSpecificIds$1 = FeatureFlags$2.CaptureIntegrationSpecificIds
|
|
1496
|
+
var CaptureIntegrationSpecificIds$1 = FeatureFlags$2.CaptureIntegrationSpecificIds,
|
|
1497
|
+
CaptureIntegrationSpecificIdsV2$1 = FeatureFlags$2.CaptureIntegrationSpecificIdsV2;
|
|
1484
1498
|
function convertEvents(mpid, sdkEvents, mpInstance) {
|
|
1485
1499
|
if (!mpid) {
|
|
1486
1500
|
return null;
|
|
@@ -1547,7 +1561,10 @@ var mParticle = (function () {
|
|
|
1547
1561
|
}
|
|
1548
1562
|
};
|
|
1549
1563
|
}
|
|
1550
|
-
|
|
1564
|
+
// https://go.mparticle.com/work/SQDSDKS-7639
|
|
1565
|
+
var integrationSpecificIds = getFeatureFlag && Boolean(getFeatureFlag(CaptureIntegrationSpecificIds$1));
|
|
1566
|
+
var integrationSpecificIdsV2 = getFeatureFlag && getFeatureFlag(CaptureIntegrationSpecificIdsV2$1);
|
|
1567
|
+
var isIntegrationCaptureEnabled = integrationSpecificIdsV2 && integrationSpecificIdsV2 !== Constants.CaptureIntegrationSpecificIdsV2Modes.None || integrationSpecificIds === true;
|
|
1551
1568
|
if (isIntegrationCaptureEnabled) {
|
|
1552
1569
|
var capturedPartnerIdentities = _IntegrationCapture === null || _IntegrationCapture === void 0 ? void 0 : _IntegrationCapture.getClickIdsAsPartnerIdentities();
|
|
1553
1570
|
if (!isEmpty(capturedPartnerIdentities)) {
|
|
@@ -2418,8 +2435,11 @@ var mParticle = (function () {
|
|
|
2418
2435
|
};
|
|
2419
2436
|
var customFlags = __assign({}, event.CustomFlags);
|
|
2420
2437
|
var integrationAttributes = _Store.integrationAttributes;
|
|
2438
|
+
var integrationSpecificIds = getFeatureFlag(Constants.FeatureFlags.CaptureIntegrationSpecificIds);
|
|
2439
|
+
var integrationSpecificIdsV2 = getFeatureFlag(Constants.FeatureFlags.CaptureIntegrationSpecificIdsV2) || '';
|
|
2440
|
+
var isIntegrationCaptureEnabled = integrationSpecificIdsV2 && integrationSpecificIdsV2 !== Constants.CaptureIntegrationSpecificIdsV2Modes.None || integrationSpecificIds === true;
|
|
2421
2441
|
// https://go.mparticle.com/work/SQDSDKS-5053
|
|
2422
|
-
if (
|
|
2442
|
+
if (isIntegrationCaptureEnabled) {
|
|
2423
2443
|
// Attempt to recapture click IDs in case a third party integration
|
|
2424
2444
|
// has added or updated new click IDs since the last event was sent.
|
|
2425
2445
|
this.mpInstance._IntegrationCapture.capture();
|
|
@@ -4728,6 +4748,7 @@ var mParticle = (function () {
|
|
|
4728
4748
|
CacheIdentity = _a.CacheIdentity,
|
|
4729
4749
|
AudienceAPI = _a.AudienceAPI,
|
|
4730
4750
|
CaptureIntegrationSpecificIds = _a.CaptureIntegrationSpecificIds,
|
|
4751
|
+
CaptureIntegrationSpecificIdsV2 = _a.CaptureIntegrationSpecificIdsV2,
|
|
4731
4752
|
AstBackgroundEvents = _a.AstBackgroundEvents;
|
|
4732
4753
|
if (!config.flags) {
|
|
4733
4754
|
return {};
|
|
@@ -4742,6 +4763,7 @@ var mParticle = (function () {
|
|
|
4742
4763
|
flags[CacheIdentity] = config.flags[CacheIdentity] === 'True';
|
|
4743
4764
|
flags[AudienceAPI] = config.flags[AudienceAPI] === 'True';
|
|
4744
4765
|
flags[CaptureIntegrationSpecificIds] = config.flags[CaptureIntegrationSpecificIds] === 'True';
|
|
4766
|
+
flags[CaptureIntegrationSpecificIdsV2] = config.flags[CaptureIntegrationSpecificIdsV2] || 'none';
|
|
4745
4767
|
flags[AstBackgroundEvents] = config.flags[AstBackgroundEvents] === 'True';
|
|
4746
4768
|
return flags;
|
|
4747
4769
|
}
|
|
@@ -7011,8 +7033,13 @@ var mParticle = (function () {
|
|
|
7011
7033
|
if (mpInstance._Store.sessionId || event.messageType === Types.MessageType.OptOut || mpInstance._Store.webviewBridgeEnabled) {
|
|
7012
7034
|
var customFlags = __assign({}, event.customFlags);
|
|
7013
7035
|
var integrationAttributes = mpInstance._Store.integrationAttributes;
|
|
7036
|
+
var getFeatureFlag = mpInstance._Helpers.getFeatureFlag;
|
|
7014
7037
|
// https://go.mparticle.com/work/SQDSDKS-5053
|
|
7015
|
-
|
|
7038
|
+
// https://go.mparticle.com/work/SQDSDKS-7639
|
|
7039
|
+
var integrationSpecificIds = getFeatureFlag && getFeatureFlag(Constants.FeatureFlags.CaptureIntegrationSpecificIds);
|
|
7040
|
+
var integrationSpecificIdsV2 = getFeatureFlag && (getFeatureFlag(Constants.FeatureFlags.CaptureIntegrationSpecificIdsV2) || '');
|
|
7041
|
+
var isIntegrationCaptureEnabled = integrationSpecificIdsV2 && integrationSpecificIdsV2 !== Constants.CaptureIntegrationSpecificIdsV2Modes.None || integrationSpecificIds === true;
|
|
7042
|
+
if (isIntegrationCaptureEnabled) {
|
|
7016
7043
|
// Attempt to recapture click IDs in case a third party integration
|
|
7017
7044
|
// has added or updated new click IDs since the last event was sent.
|
|
7018
7045
|
mpInstance._IntegrationCapture.capture();
|
|
@@ -9534,7 +9561,7 @@ var mParticle = (function () {
|
|
|
9534
9561
|
PARTNER_IDENTITIES: 'partner_identities',
|
|
9535
9562
|
INTEGRATION_ATTRIBUTES: 'integration_attributes'
|
|
9536
9563
|
};
|
|
9537
|
-
var
|
|
9564
|
+
var integrationMappingExternal = {
|
|
9538
9565
|
// Facebook / Meta
|
|
9539
9566
|
fbclid: {
|
|
9540
9567
|
mappedKey: 'Facebook.ClickId',
|
|
@@ -9562,6 +9589,23 @@ var mParticle = (function () {
|
|
|
9562
9589
|
mappedKey: 'GoogleEnhancedConversions.Wbraid',
|
|
9563
9590
|
output: IntegrationOutputs.CUSTOM_FLAGS
|
|
9564
9591
|
},
|
|
9592
|
+
// TIKTOK
|
|
9593
|
+
ttclid: {
|
|
9594
|
+
mappedKey: 'TikTok.Callback',
|
|
9595
|
+
output: IntegrationOutputs.CUSTOM_FLAGS
|
|
9596
|
+
},
|
|
9597
|
+
_ttp: {
|
|
9598
|
+
mappedKey: 'tiktok_cookie_id',
|
|
9599
|
+
output: IntegrationOutputs.PARTNER_IDENTITIES
|
|
9600
|
+
},
|
|
9601
|
+
// Snapchat
|
|
9602
|
+
// https://businesshelp.snapchat.com/s/article/troubleshooting-click-id?language=en_US
|
|
9603
|
+
ScCid: {
|
|
9604
|
+
mappedKey: 'SnapchatConversions.ClickId',
|
|
9605
|
+
output: IntegrationOutputs.CUSTOM_FLAGS
|
|
9606
|
+
}
|
|
9607
|
+
};
|
|
9608
|
+
var integrationMappingRokt = {
|
|
9565
9609
|
// Rokt
|
|
9566
9610
|
// https://docs.rokt.com/developers/integration-guides/web/advanced/rokt-id-tag/
|
|
9567
9611
|
// https://go.mparticle.com/work/SQDSDKS-7167
|
|
@@ -9579,26 +9623,12 @@ var mParticle = (function () {
|
|
|
9579
9623
|
mappedKey: 'passbackconversiontrackingid',
|
|
9580
9624
|
output: IntegrationOutputs.INTEGRATION_ATTRIBUTES,
|
|
9581
9625
|
moduleId: 1277
|
|
9582
|
-
},
|
|
9583
|
-
// TIKTOK
|
|
9584
|
-
ttclid: {
|
|
9585
|
-
mappedKey: 'TikTok.Callback',
|
|
9586
|
-
output: IntegrationOutputs.CUSTOM_FLAGS
|
|
9587
|
-
},
|
|
9588
|
-
_ttp: {
|
|
9589
|
-
mappedKey: 'tiktok_cookie_id',
|
|
9590
|
-
output: IntegrationOutputs.PARTNER_IDENTITIES
|
|
9591
|
-
},
|
|
9592
|
-
// Snapchat
|
|
9593
|
-
// https://businesshelp.snapchat.com/s/article/troubleshooting-click-id?language=en_US
|
|
9594
|
-
ScCid: {
|
|
9595
|
-
mappedKey: 'SnapchatConversions.ClickId',
|
|
9596
|
-
output: IntegrationOutputs.CUSTOM_FLAGS
|
|
9597
9626
|
}
|
|
9598
9627
|
};
|
|
9599
9628
|
var IntegrationCapture = /** @class */function () {
|
|
9600
|
-
function IntegrationCapture() {
|
|
9629
|
+
function IntegrationCapture(captureMode) {
|
|
9601
9630
|
this.initialTimestamp = Date.now();
|
|
9631
|
+
this.captureMode = captureMode;
|
|
9602
9632
|
// Cache filtered mappings for faster access
|
|
9603
9633
|
this.filteredPartnerIdentityMappings = this.filterMappings(IntegrationOutputs.PARTNER_IDENTITIES);
|
|
9604
9634
|
this.filteredCustomFlagMappings = this.filterMappings(IntegrationOutputs.CUSTOM_FLAGS);
|
|
@@ -9643,7 +9673,8 @@ var mParticle = (function () {
|
|
|
9643
9673
|
* Captures cookies based on the integration ID mapping.
|
|
9644
9674
|
*/
|
|
9645
9675
|
IntegrationCapture.prototype.captureCookies = function () {
|
|
9646
|
-
var
|
|
9676
|
+
var integrationKeys = this.getAllowedKeysForMode();
|
|
9677
|
+
var cookies = getCookies(integrationKeys);
|
|
9647
9678
|
return this.applyProcessors(cookies, getHref(), this.initialTimestamp);
|
|
9648
9679
|
};
|
|
9649
9680
|
/**
|
|
@@ -9657,8 +9688,10 @@ var mParticle = (function () {
|
|
|
9657
9688
|
* Captures local storage based on the integration ID mapping.
|
|
9658
9689
|
*/
|
|
9659
9690
|
IntegrationCapture.prototype.captureLocalStorage = function () {
|
|
9691
|
+
var integrationKeys = this.getAllowedKeysForMode();
|
|
9660
9692
|
var localStorageItems = {};
|
|
9661
|
-
for (var
|
|
9693
|
+
for (var _i = 0, integrationKeys_1 = integrationKeys; _i < integrationKeys_1.length; _i++) {
|
|
9694
|
+
var key = integrationKeys_1[_i];
|
|
9662
9695
|
var localStorageItem = localStorage.getItem(key);
|
|
9663
9696
|
if (localStorageItem) {
|
|
9664
9697
|
localStorageItems[key] = localStorageItem;
|
|
@@ -9671,7 +9704,8 @@ var mParticle = (function () {
|
|
|
9671
9704
|
* @returns {Dictionary<string>} The query parameters.
|
|
9672
9705
|
*/
|
|
9673
9706
|
IntegrationCapture.prototype.getQueryParams = function () {
|
|
9674
|
-
|
|
9707
|
+
var integrationKeys = this.getAllowedKeysForMode();
|
|
9708
|
+
return queryStringParser(getHref(), integrationKeys);
|
|
9675
9709
|
};
|
|
9676
9710
|
/**
|
|
9677
9711
|
* Converts captured click IDs to custom flags for SDK events.
|
|
@@ -9737,10 +9771,11 @@ var mParticle = (function () {
|
|
|
9737
9771
|
IntegrationCapture.prototype.applyProcessors = function (clickIds, url, timestamp) {
|
|
9738
9772
|
var _a;
|
|
9739
9773
|
var processedClickIds = {};
|
|
9774
|
+
var integrationKeys = this.getActiveIntegrationMapping();
|
|
9740
9775
|
for (var key in clickIds) {
|
|
9741
9776
|
if (clickIds.hasOwnProperty(key)) {
|
|
9742
9777
|
var value = clickIds[key];
|
|
9743
|
-
var processor = (_a =
|
|
9778
|
+
var processor = (_a = integrationKeys[key]) === null || _a === void 0 ? void 0 : _a.processor;
|
|
9744
9779
|
processedClickIds[key] = processor ? processor(value, url, timestamp) : value;
|
|
9745
9780
|
}
|
|
9746
9781
|
}
|
|
@@ -9748,13 +9783,36 @@ var mParticle = (function () {
|
|
|
9748
9783
|
};
|
|
9749
9784
|
IntegrationCapture.prototype.filterMappings = function (outputType) {
|
|
9750
9785
|
var filteredMappings = {};
|
|
9751
|
-
|
|
9752
|
-
|
|
9753
|
-
|
|
9786
|
+
var integrationKeys = this.getActiveIntegrationMapping();
|
|
9787
|
+
for (var key in integrationKeys) {
|
|
9788
|
+
if (integrationKeys[key].output === outputType) {
|
|
9789
|
+
filteredMappings[key] = integrationKeys[key];
|
|
9754
9790
|
}
|
|
9755
9791
|
}
|
|
9756
9792
|
return filteredMappings;
|
|
9757
9793
|
};
|
|
9794
|
+
/**
|
|
9795
|
+
* Returns the allowed keys to capture based on the current mode.
|
|
9796
|
+
* For RoktOnly, limit capture to Rokt keys; for All, capture all mapped keys.
|
|
9797
|
+
*/
|
|
9798
|
+
IntegrationCapture.prototype.getAllowedKeysForMode = function () {
|
|
9799
|
+
return Object.keys(this.getActiveIntegrationMapping());
|
|
9800
|
+
};
|
|
9801
|
+
/**
|
|
9802
|
+
* Selects the active integration mapping for the current captureMode.
|
|
9803
|
+
* - 'roktonly': only Rokt IDs are considered
|
|
9804
|
+
* - 'all': both External and Rokt IDs are considered
|
|
9805
|
+
* - else: returns an empty mapping and nothing will be captured
|
|
9806
|
+
*/
|
|
9807
|
+
IntegrationCapture.prototype.getActiveIntegrationMapping = function () {
|
|
9808
|
+
if (this.captureMode === Constants.CaptureIntegrationSpecificIdsV2Modes.RoktOnly) {
|
|
9809
|
+
return integrationMappingRokt;
|
|
9810
|
+
}
|
|
9811
|
+
if (this.captureMode === Constants.CaptureIntegrationSpecificIdsV2Modes.All) {
|
|
9812
|
+
return __assign(__assign({}, integrationMappingExternal), integrationMappingRokt);
|
|
9813
|
+
}
|
|
9814
|
+
return {};
|
|
9815
|
+
};
|
|
9758
9816
|
return IntegrationCapture;
|
|
9759
9817
|
}();
|
|
9760
9818
|
|
|
@@ -10032,9 +10090,11 @@ var mParticle = (function () {
|
|
|
10032
10090
|
|
|
10033
10091
|
var Messages = Constants.Messages,
|
|
10034
10092
|
HTTPCodes = Constants.HTTPCodes,
|
|
10035
|
-
FeatureFlags = Constants.FeatureFlags
|
|
10093
|
+
FeatureFlags = Constants.FeatureFlags,
|
|
10094
|
+
CaptureIntegrationSpecificIdsV2Modes = Constants.CaptureIntegrationSpecificIdsV2Modes;
|
|
10036
10095
|
var ReportBatching = FeatureFlags.ReportBatching,
|
|
10037
|
-
CaptureIntegrationSpecificIds = FeatureFlags.CaptureIntegrationSpecificIds
|
|
10096
|
+
CaptureIntegrationSpecificIds = FeatureFlags.CaptureIntegrationSpecificIds,
|
|
10097
|
+
CaptureIntegrationSpecificIdsV2 = FeatureFlags.CaptureIntegrationSpecificIdsV2;
|
|
10038
10098
|
var StartingInitialization = Messages.InformationMessages.StartingInitialization;
|
|
10039
10099
|
/**
|
|
10040
10100
|
* <p>All of the following methods can be called on the primary mParticle class. In version 2.10.0, we introduced <a href="https://docs.mparticle.com/developers/sdk/web/multiple-instances/">multiple instances</a>. If you are using multiple instances (self hosted environments only), you should call these methods on each instance.</p>
|
|
@@ -10068,7 +10128,6 @@ var mParticle = (function () {
|
|
|
10068
10128
|
integrationDelays: {},
|
|
10069
10129
|
forwarderConstructors: []
|
|
10070
10130
|
};
|
|
10071
|
-
this._IntegrationCapture = new IntegrationCapture();
|
|
10072
10131
|
this._RoktManager = new RoktManager();
|
|
10073
10132
|
// required for forwarders once they reference the mparticle instance
|
|
10074
10133
|
this.IdentityType = IdentityType;
|
|
@@ -10971,6 +11030,7 @@ var mParticle = (function () {
|
|
|
10971
11030
|
// Some (server) config settings need to be returned before they are set on SDKConfig in a self hosted environment
|
|
10972
11031
|
function completeSDKInitialization(apiKey, config, mpInstance) {
|
|
10973
11032
|
var kitBlocker = createKitBlocker(config, mpInstance);
|
|
11033
|
+
var getFeatureFlag = mpInstance._Helpers.getFeatureFlag;
|
|
10974
11034
|
mpInstance._APIClient = new APIClient(mpInstance, kitBlocker);
|
|
10975
11035
|
mpInstance._Forwarders = new Forwarders(mpInstance, kitBlocker);
|
|
10976
11036
|
mpInstance._Store.processConfig(config);
|
|
@@ -10994,10 +11054,21 @@ var mParticle = (function () {
|
|
|
10994
11054
|
mpInstance._Store.SDKConfig.identifyRequest = mpInstance._Store.hasInvalidIdentifyRequest() ? {
|
|
10995
11055
|
userIdentities: currentUserIdentities
|
|
10996
11056
|
} : mpInstance._Store.SDKConfig.identifyRequest;
|
|
10997
|
-
if (
|
|
11057
|
+
if (getFeatureFlag(ReportBatching)) {
|
|
10998
11058
|
mpInstance._ForwardingStatsUploader.startForwardingStatsTimer();
|
|
10999
11059
|
}
|
|
11000
|
-
|
|
11060
|
+
// https://go.mparticle.com/work/SQDSDKS-7639
|
|
11061
|
+
var integrationSpecificIds = getFeatureFlag(CaptureIntegrationSpecificIds);
|
|
11062
|
+
var integrationSpecificIdsV2 = getFeatureFlag(CaptureIntegrationSpecificIdsV2);
|
|
11063
|
+
var isIntegrationCaptureEnabled = integrationSpecificIdsV2 && integrationSpecificIdsV2 !== CaptureIntegrationSpecificIdsV2Modes.None || integrationSpecificIds === true;
|
|
11064
|
+
if (isIntegrationCaptureEnabled) {
|
|
11065
|
+
var captureMode = void 0;
|
|
11066
|
+
if (integrationSpecificIds || integrationSpecificIdsV2 === CaptureIntegrationSpecificIdsV2Modes.All) {
|
|
11067
|
+
captureMode = 'all';
|
|
11068
|
+
} else if (integrationSpecificIdsV2 === CaptureIntegrationSpecificIdsV2Modes.RoktOnly) {
|
|
11069
|
+
captureMode = 'roktonly';
|
|
11070
|
+
}
|
|
11071
|
+
mpInstance._IntegrationCapture = new IntegrationCapture(captureMode);
|
|
11001
11072
|
mpInstance._IntegrationCapture.capture();
|
|
11002
11073
|
}
|
|
11003
11074
|
// Configure Rokt Manager with user and filtered user
|
package/package.json
CHANGED
package/src/batchUploader.ts
CHANGED
|
@@ -173,9 +173,12 @@ export class BatchUploader {
|
|
|
173
173
|
|
|
174
174
|
let customFlags: SDKEventCustomFlags = {...event.CustomFlags};
|
|
175
175
|
let integrationAttributes: IntegrationAttributes = _Store.integrationAttributes;
|
|
176
|
+
const integrationSpecificIds = getFeatureFlag(Constants.FeatureFlags.CaptureIntegrationSpecificIds) as boolean;
|
|
177
|
+
const integrationSpecificIdsV2 = getFeatureFlag(Constants.FeatureFlags.CaptureIntegrationSpecificIdsV2) as string || '';
|
|
178
|
+
const isIntegrationCaptureEnabled = (integrationSpecificIdsV2 && integrationSpecificIdsV2 !== Constants.CaptureIntegrationSpecificIdsV2Modes.None) || integrationSpecificIds === true;
|
|
176
179
|
|
|
177
180
|
// https://go.mparticle.com/work/SQDSDKS-5053
|
|
178
|
-
if (
|
|
181
|
+
if (isIntegrationCaptureEnabled) {
|
|
179
182
|
|
|
180
183
|
// Attempt to recapture click IDs in case a third party integration
|
|
181
184
|
// has added or updated new click IDs since the last event was sent.
|
package/src/constants.ts
CHANGED
|
@@ -184,7 +184,15 @@ const Constants = {
|
|
|
184
184
|
DirectUrlRouting: 'directURLRouting',
|
|
185
185
|
CacheIdentity: 'cacheIdentity',
|
|
186
186
|
AudienceAPI: 'audienceAPI',
|
|
187
|
+
// CaptureIntegrationSpecificIds (legacy): boolean flag from server/UI
|
|
188
|
+
// - 'True' → capture all integration-specific IDs
|
|
189
|
+
// - 'False' → capture none
|
|
187
190
|
CaptureIntegrationSpecificIds: 'captureIntegrationSpecificIds',
|
|
191
|
+
// CaptureIntegrationSpecificIdsV2 (new): string mode from server
|
|
192
|
+
// - 'all' → capture all IDs
|
|
193
|
+
// - 'none' → capture none
|
|
194
|
+
// - 'roktonly' → capture only Rokt-related IDs
|
|
195
|
+
CaptureIntegrationSpecificIdsV2: 'captureIntegrationSpecificIdsV2',
|
|
188
196
|
AstBackgroundEvents: 'astBackgroundEvents',
|
|
189
197
|
},
|
|
190
198
|
DefaultInstance: 'default_instance',
|
|
@@ -200,6 +208,11 @@ const Constants = {
|
|
|
200
208
|
Development: 'development',
|
|
201
209
|
Production: 'production',
|
|
202
210
|
},
|
|
211
|
+
CaptureIntegrationSpecificIdsV2Modes: {
|
|
212
|
+
All: 'all',
|
|
213
|
+
None: 'none',
|
|
214
|
+
RoktOnly: 'roktonly',
|
|
215
|
+
},
|
|
203
216
|
} as const;
|
|
204
217
|
|
|
205
218
|
export default Constants;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SDKEventCustomFlags } from './sdkRuntimeModels';
|
|
2
|
+
import Constants from './constants';
|
|
2
3
|
import { IntegrationAttributes } from './store';
|
|
3
4
|
import {
|
|
4
5
|
Dictionary,
|
|
@@ -73,7 +74,7 @@ interface IntegrationIdMapping {
|
|
|
73
74
|
[key: string]: IntegrationMappingItem;
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
const
|
|
77
|
+
const integrationMappingExternal: IntegrationIdMapping = {
|
|
77
78
|
// Facebook / Meta
|
|
78
79
|
fbclid: {
|
|
79
80
|
mappedKey: 'Facebook.ClickId',
|
|
@@ -103,6 +104,25 @@ const integrationMapping: IntegrationIdMapping = {
|
|
|
103
104
|
output: IntegrationOutputs.CUSTOM_FLAGS,
|
|
104
105
|
},
|
|
105
106
|
|
|
107
|
+
// TIKTOK
|
|
108
|
+
ttclid: {
|
|
109
|
+
mappedKey: 'TikTok.Callback',
|
|
110
|
+
output: IntegrationOutputs.CUSTOM_FLAGS,
|
|
111
|
+
},
|
|
112
|
+
_ttp: {
|
|
113
|
+
mappedKey: 'tiktok_cookie_id',
|
|
114
|
+
output: IntegrationOutputs.PARTNER_IDENTITIES,
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
// Snapchat
|
|
118
|
+
// https://businesshelp.snapchat.com/s/article/troubleshooting-click-id?language=en_US
|
|
119
|
+
ScCid: {
|
|
120
|
+
mappedKey: 'SnapchatConversions.ClickId',
|
|
121
|
+
output: IntegrationOutputs.CUSTOM_FLAGS,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const integrationMappingRokt: IntegrationIdMapping = {
|
|
106
126
|
// Rokt
|
|
107
127
|
// https://docs.rokt.com/developers/integration-guides/web/advanced/rokt-id-tag/
|
|
108
128
|
// https://go.mparticle.com/work/SQDSDKS-7167
|
|
@@ -121,23 +141,6 @@ const integrationMapping: IntegrationIdMapping = {
|
|
|
121
141
|
output: IntegrationOutputs.INTEGRATION_ATTRIBUTES,
|
|
122
142
|
moduleId: 1277,
|
|
123
143
|
},
|
|
124
|
-
|
|
125
|
-
// TIKTOK
|
|
126
|
-
ttclid: {
|
|
127
|
-
mappedKey: 'TikTok.Callback',
|
|
128
|
-
output: IntegrationOutputs.CUSTOM_FLAGS,
|
|
129
|
-
},
|
|
130
|
-
_ttp: {
|
|
131
|
-
mappedKey: 'tiktok_cookie_id',
|
|
132
|
-
output: IntegrationOutputs.PARTNER_IDENTITIES,
|
|
133
|
-
},
|
|
134
|
-
|
|
135
|
-
// Snapchat
|
|
136
|
-
// https://businesshelp.snapchat.com/s/article/troubleshooting-click-id?language=en_US
|
|
137
|
-
ScCid: {
|
|
138
|
-
mappedKey: 'SnapchatConversions.ClickId',
|
|
139
|
-
output: IntegrationOutputs.CUSTOM_FLAGS,
|
|
140
|
-
},
|
|
141
144
|
};
|
|
142
145
|
|
|
143
146
|
export default class IntegrationCapture {
|
|
@@ -146,9 +149,11 @@ export default class IntegrationCapture {
|
|
|
146
149
|
public readonly filteredPartnerIdentityMappings: IntegrationIdMapping;
|
|
147
150
|
public readonly filteredCustomFlagMappings: IntegrationIdMapping;
|
|
148
151
|
public readonly filteredIntegrationAttributeMappings: IntegrationIdMapping;
|
|
152
|
+
public captureMode?: valueof<typeof Constants.CaptureIntegrationSpecificIdsV2Modes>;
|
|
149
153
|
|
|
150
|
-
constructor() {
|
|
154
|
+
constructor(captureMode: valueof<typeof Constants.CaptureIntegrationSpecificIdsV2Modes>) {
|
|
151
155
|
this.initialTimestamp = Date.now();
|
|
156
|
+
this.captureMode = captureMode;
|
|
152
157
|
|
|
153
158
|
// Cache filtered mappings for faster access
|
|
154
159
|
this.filteredPartnerIdentityMappings = this.filterMappings(IntegrationOutputs.PARTNER_IDENTITIES);
|
|
@@ -205,7 +210,8 @@ export default class IntegrationCapture {
|
|
|
205
210
|
* Captures cookies based on the integration ID mapping.
|
|
206
211
|
*/
|
|
207
212
|
public captureCookies(): Dictionary<string> {
|
|
208
|
-
const
|
|
213
|
+
const integrationKeys = this.getAllowedKeysForMode();
|
|
214
|
+
const cookies = getCookies(integrationKeys);
|
|
209
215
|
return this.applyProcessors(cookies, getHref(), this.initialTimestamp);
|
|
210
216
|
}
|
|
211
217
|
|
|
@@ -221,8 +227,9 @@ export default class IntegrationCapture {
|
|
|
221
227
|
* Captures local storage based on the integration ID mapping.
|
|
222
228
|
*/
|
|
223
229
|
public captureLocalStorage(): Dictionary<string> {
|
|
230
|
+
const integrationKeys = this.getAllowedKeysForMode();
|
|
224
231
|
let localStorageItems: Dictionary<string> = {};
|
|
225
|
-
for (const key
|
|
232
|
+
for (const key of integrationKeys) {
|
|
226
233
|
const localStorageItem = localStorage.getItem(key);
|
|
227
234
|
if (localStorageItem) {
|
|
228
235
|
localStorageItems[key] = localStorageItem;
|
|
@@ -237,7 +244,8 @@ export default class IntegrationCapture {
|
|
|
237
244
|
* @returns {Dictionary<string>} The query parameters.
|
|
238
245
|
*/
|
|
239
246
|
public getQueryParams(): Dictionary<string> {
|
|
240
|
-
|
|
247
|
+
const integrationKeys = this.getAllowedKeysForMode();
|
|
248
|
+
return queryStringParser(getHref(), integrationKeys);
|
|
241
249
|
}
|
|
242
250
|
|
|
243
251
|
/**
|
|
@@ -316,15 +324,15 @@ export default class IntegrationCapture {
|
|
|
316
324
|
timestamp?: number
|
|
317
325
|
): Dictionary<string> {
|
|
318
326
|
const processedClickIds: Dictionary<string> = {};
|
|
319
|
-
|
|
327
|
+
const integrationKeys = this.getActiveIntegrationMapping();
|
|
328
|
+
|
|
320
329
|
for (const key in clickIds) {
|
|
321
330
|
if (clickIds.hasOwnProperty(key)) {
|
|
322
331
|
const value = clickIds[key];
|
|
323
|
-
const processor =
|
|
332
|
+
const processor = integrationKeys[key]?.processor;
|
|
324
333
|
processedClickIds[key] = processor ? processor(value, url, timestamp) : value;
|
|
325
334
|
}
|
|
326
335
|
}
|
|
327
|
-
|
|
328
336
|
return processedClickIds;
|
|
329
337
|
}
|
|
330
338
|
|
|
@@ -332,11 +340,36 @@ export default class IntegrationCapture {
|
|
|
332
340
|
outputType: valueof<typeof IntegrationOutputs>
|
|
333
341
|
): IntegrationIdMapping {
|
|
334
342
|
const filteredMappings: IntegrationIdMapping = {};
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
343
|
+
const integrationKeys = this.getActiveIntegrationMapping();
|
|
344
|
+
for (const key in integrationKeys) {
|
|
345
|
+
if (integrationKeys[key].output === outputType) {
|
|
346
|
+
filteredMappings[key] = integrationKeys[key];
|
|
338
347
|
}
|
|
339
348
|
}
|
|
340
349
|
return filteredMappings;
|
|
341
350
|
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Returns the allowed keys to capture based on the current mode.
|
|
354
|
+
* For RoktOnly, limit capture to Rokt keys; for All, capture all mapped keys.
|
|
355
|
+
*/
|
|
356
|
+
private getAllowedKeysForMode(): string[] {
|
|
357
|
+
return Object.keys(this.getActiveIntegrationMapping());
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Selects the active integration mapping for the current captureMode.
|
|
362
|
+
* - 'roktonly': only Rokt IDs are considered
|
|
363
|
+
* - 'all': both External and Rokt IDs are considered
|
|
364
|
+
* - else: returns an empty mapping and nothing will be captured
|
|
365
|
+
*/
|
|
366
|
+
private getActiveIntegrationMapping(): IntegrationIdMapping {
|
|
367
|
+
if (this.captureMode === Constants.CaptureIntegrationSpecificIdsV2Modes.RoktOnly) {
|
|
368
|
+
return integrationMappingRokt;
|
|
369
|
+
}
|
|
370
|
+
if (this.captureMode === Constants.CaptureIntegrationSpecificIdsV2Modes.All) {
|
|
371
|
+
return { ...integrationMappingExternal, ...integrationMappingRokt };
|
|
372
|
+
}
|
|
373
|
+
return {};
|
|
374
|
+
}
|
|
342
375
|
}
|
package/src/mp-instance.ts
CHANGED
|
@@ -36,7 +36,7 @@ import Consent, { IConsent } from './consent';
|
|
|
36
36
|
import KitBlocker from './kitBlocking';
|
|
37
37
|
import ConfigAPIClient, { IKitConfigs } from './configAPIClient';
|
|
38
38
|
import IdentityAPIClient from './identityApiClient';
|
|
39
|
-
import { isFunction, parseConfig } from './utils';
|
|
39
|
+
import { isFunction, parseConfig, valueof } from './utils';
|
|
40
40
|
import { LocalStorageVault } from './vault';
|
|
41
41
|
import { removeExpiredIdentityCacheDates } from './identity-utils';
|
|
42
42
|
import IntegrationCapture from './integrationCapture';
|
|
@@ -91,8 +91,8 @@ export interface IMParticleWebSDKInstance extends MParticleWebSDK {
|
|
|
91
91
|
_timeOnSiteTimer: ForegroundTimer;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
const { Messages, HTTPCodes, FeatureFlags } = Constants;
|
|
95
|
-
const { ReportBatching, CaptureIntegrationSpecificIds } = FeatureFlags;
|
|
94
|
+
const { Messages, HTTPCodes, FeatureFlags, CaptureIntegrationSpecificIdsV2Modes } = Constants;
|
|
95
|
+
const { ReportBatching, CaptureIntegrationSpecificIds, CaptureIntegrationSpecificIdsV2 } = FeatureFlags;
|
|
96
96
|
const { StartingInitialization } = Messages.InformationMessages;
|
|
97
97
|
|
|
98
98
|
/**
|
|
@@ -128,7 +128,6 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
|
|
|
128
128
|
integrationDelays: {},
|
|
129
129
|
forwarderConstructors: [],
|
|
130
130
|
};
|
|
131
|
-
this._IntegrationCapture = new IntegrationCapture();
|
|
132
131
|
this._RoktManager = new RoktManager();
|
|
133
132
|
|
|
134
133
|
// required for forwarders once they reference the mparticle instance
|
|
@@ -1354,6 +1353,7 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
|
|
|
1354
1353
|
// Some (server) config settings need to be returned before they are set on SDKConfig in a self hosted environment
|
|
1355
1354
|
function completeSDKInitialization(apiKey, config, mpInstance) {
|
|
1356
1355
|
const kitBlocker = createKitBlocker(config, mpInstance);
|
|
1356
|
+
const { getFeatureFlag } = mpInstance._Helpers;
|
|
1357
1357
|
|
|
1358
1358
|
mpInstance._APIClient = new APIClient(mpInstance, kitBlocker);
|
|
1359
1359
|
mpInstance._Forwarders = new Forwarders(mpInstance, kitBlocker);
|
|
@@ -1386,11 +1386,22 @@ function completeSDKInitialization(apiKey, config, mpInstance) {
|
|
|
1386
1386
|
? { userIdentities: currentUserIdentities }
|
|
1387
1387
|
: mpInstance._Store.SDKConfig.identifyRequest;
|
|
1388
1388
|
|
|
1389
|
-
if (
|
|
1389
|
+
if (getFeatureFlag(ReportBatching)) {
|
|
1390
1390
|
mpInstance._ForwardingStatsUploader.startForwardingStatsTimer();
|
|
1391
1391
|
}
|
|
1392
|
-
|
|
1393
|
-
|
|
1392
|
+
// https://go.mparticle.com/work/SQDSDKS-7639
|
|
1393
|
+
const integrationSpecificIds = getFeatureFlag(CaptureIntegrationSpecificIds) as boolean;
|
|
1394
|
+
const integrationSpecificIdsV2 = getFeatureFlag(CaptureIntegrationSpecificIdsV2) as string;
|
|
1395
|
+
|
|
1396
|
+
const isIntegrationCaptureEnabled = (integrationSpecificIdsV2 && integrationSpecificIdsV2 !== CaptureIntegrationSpecificIdsV2Modes.None) || integrationSpecificIds === true;
|
|
1397
|
+
if (isIntegrationCaptureEnabled) {
|
|
1398
|
+
let captureMode: valueof<typeof CaptureIntegrationSpecificIdsV2Modes> | undefined;
|
|
1399
|
+
if (integrationSpecificIds || integrationSpecificIdsV2 === CaptureIntegrationSpecificIdsV2Modes.All) {
|
|
1400
|
+
captureMode = 'all';
|
|
1401
|
+
} else if (integrationSpecificIdsV2 === CaptureIntegrationSpecificIdsV2Modes.RoktOnly) {
|
|
1402
|
+
captureMode = 'roktonly';
|
|
1403
|
+
}
|
|
1404
|
+
mpInstance._IntegrationCapture = new IntegrationCapture(captureMode);
|
|
1394
1405
|
mpInstance._IntegrationCapture.capture();
|
|
1395
1406
|
}
|
|
1396
1407
|
|
|
@@ -18,11 +18,10 @@ import { SDKIdentityTypeEnum } from './identity.interfaces';
|
|
|
18
18
|
import Constants from './constants';
|
|
19
19
|
import { IMParticleWebSDKInstance } from './mp-instance';
|
|
20
20
|
|
|
21
|
-
const {
|
|
22
|
-
FeatureFlags
|
|
23
|
-
} = Constants;
|
|
21
|
+
const { FeatureFlags } = Constants;
|
|
24
22
|
const {
|
|
25
|
-
CaptureIntegrationSpecificIds
|
|
23
|
+
CaptureIntegrationSpecificIds,
|
|
24
|
+
CaptureIntegrationSpecificIdsV2,
|
|
26
25
|
} = FeatureFlags;
|
|
27
26
|
|
|
28
27
|
type PartnerIdentities = Dictionary<string>;
|
|
@@ -127,8 +126,12 @@ export function convertEvents(
|
|
|
127
126
|
},
|
|
128
127
|
};
|
|
129
128
|
}
|
|
129
|
+
// https://go.mparticle.com/work/SQDSDKS-7639
|
|
130
|
+
const integrationSpecificIds = getFeatureFlag && Boolean(getFeatureFlag(CaptureIntegrationSpecificIds));
|
|
131
|
+
const integrationSpecificIdsV2 = getFeatureFlag && (getFeatureFlag(CaptureIntegrationSpecificIdsV2) as string);
|
|
132
|
+
|
|
133
|
+
const isIntegrationCaptureEnabled = (integrationSpecificIdsV2 && integrationSpecificIdsV2 !== Constants.CaptureIntegrationSpecificIdsV2Modes.None) || integrationSpecificIds === true;
|
|
130
134
|
|
|
131
|
-
const isIntegrationCaptureEnabled: boolean = getFeatureFlag && Boolean(getFeatureFlag(CaptureIntegrationSpecificIds));
|
|
132
135
|
if (isIntegrationCaptureEnabled) {
|
|
133
136
|
const capturedPartnerIdentities: PartnerIdentities = _IntegrationCapture?.getClickIdsAsPartnerIdentities();
|
|
134
137
|
if (!isEmpty(capturedPartnerIdentities)) {
|
package/src/serverModel.ts
CHANGED
|
@@ -276,18 +276,22 @@ export default function ServerModel(
|
|
|
276
276
|
let customFlags: SDKEventCustomFlags = {...event.customFlags};
|
|
277
277
|
let integrationAttributes: IntegrationAttributes = mpInstance._Store.integrationAttributes;
|
|
278
278
|
|
|
279
|
+
const { getFeatureFlag } = mpInstance._Helpers;
|
|
279
280
|
// https://go.mparticle.com/work/SQDSDKS-5053
|
|
280
|
-
|
|
281
|
-
|
|
281
|
+
// https://go.mparticle.com/work/SQDSDKS-7639
|
|
282
|
+
const integrationSpecificIds = getFeatureFlag && (getFeatureFlag(Constants.FeatureFlags.CaptureIntegrationSpecificIds) as boolean);
|
|
283
|
+
const integrationSpecificIdsV2 = getFeatureFlag && ((getFeatureFlag(Constants.FeatureFlags.CaptureIntegrationSpecificIdsV2) as string) || '');
|
|
284
|
+
const isIntegrationCaptureEnabled = (integrationSpecificIdsV2 && integrationSpecificIdsV2 !== Constants.CaptureIntegrationSpecificIdsV2Modes.None) || integrationSpecificIds === true;
|
|
285
|
+
if (isIntegrationCaptureEnabled) {
|
|
282
286
|
// Attempt to recapture click IDs in case a third party integration
|
|
283
287
|
// has added or updated new click IDs since the last event was sent.
|
|
284
288
|
mpInstance._IntegrationCapture.capture();
|
|
285
289
|
const transformedClickIDs = mpInstance._IntegrationCapture.getClickIdsAsCustomFlags();
|
|
286
|
-
customFlags = {...transformedClickIDs, ...customFlags};
|
|
287
|
-
|
|
290
|
+
customFlags = { ...transformedClickIDs, ...customFlags };
|
|
288
291
|
const transformedIntegrationAttributes = mpInstance._IntegrationCapture.getClickIdsAsIntegrationAttributes();
|
|
289
|
-
integrationAttributes = {...transformedIntegrationAttributes, ...integrationAttributes};
|
|
292
|
+
integrationAttributes = { ...transformedIntegrationAttributes, ...integrationAttributes };
|
|
290
293
|
}
|
|
294
|
+
|
|
291
295
|
|
|
292
296
|
if (event.hasOwnProperty('toEventAPIObject')) {
|
|
293
297
|
eventObject = event.toEventAPIObject();
|
package/src/store.ts
CHANGED
|
@@ -145,6 +145,7 @@ export interface IFeatureFlags {
|
|
|
145
145
|
directURLRouting?: boolean;
|
|
146
146
|
cacheIdentity?: boolean;
|
|
147
147
|
captureIntegrationSpecificIds?: boolean;
|
|
148
|
+
captureIntegrationSpecificIdsV2?: string;
|
|
148
149
|
astBackgroundEvents?: boolean;
|
|
149
150
|
}
|
|
150
151
|
|
|
@@ -771,6 +772,7 @@ export function processFlags(config: SDKInitConfig): IFeatureFlags {
|
|
|
771
772
|
CacheIdentity,
|
|
772
773
|
AudienceAPI,
|
|
773
774
|
CaptureIntegrationSpecificIds,
|
|
775
|
+
CaptureIntegrationSpecificIdsV2,
|
|
774
776
|
AstBackgroundEvents
|
|
775
777
|
} = Constants.FeatureFlags;
|
|
776
778
|
|
|
@@ -790,8 +792,8 @@ export function processFlags(config: SDKInitConfig): IFeatureFlags {
|
|
|
790
792
|
flags[CacheIdentity] = config.flags[CacheIdentity] === 'True';
|
|
791
793
|
flags[AudienceAPI] = config.flags[AudienceAPI] === 'True';
|
|
792
794
|
flags[CaptureIntegrationSpecificIds] = config.flags[CaptureIntegrationSpecificIds] === 'True';
|
|
795
|
+
flags[CaptureIntegrationSpecificIdsV2] = (config.flags[CaptureIntegrationSpecificIdsV2] || 'none');
|
|
793
796
|
flags[AstBackgroundEvents] = config.flags[AstBackgroundEvents] === 'True';
|
|
794
|
-
|
|
795
797
|
return flags;
|
|
796
798
|
}
|
|
797
799
|
|