@mparticle/web-sdk 2.62.0 → 2.64.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 +63 -44
- package/dist/mparticle.esm.js +63 -44
- package/dist/mparticle.js +545 -318
- package/dist/types/src/forwarder-utils.d.ts +15 -0
- package/dist/types/src/forwarders.d.ts +1 -0
- package/dist/types/src/helpers.d.ts +1 -1
- package/dist/types/src/sdkToEventsApiConverter.d.ts +2 -0
- package/dist/types/src/types.d.ts +3 -0
- package/dist/types/src/utils.d.ts +2 -1
- package/package.json +1 -1
- package/src/apiClient.ts +2 -2
- package/src/batchUploader.ts +13 -0
- package/src/ecommerce.js +6 -13
- package/src/forwarder-utils.ts +260 -0
- package/src/forwarders.js +99 -184
- package/src/helpers.js +1 -148
- package/src/mockBatchCreator.ts +2 -1
- package/src/mp-instance.ts +2 -2
- package/src/persistence.js +4 -4
- package/src/roktManager.ts +25 -13
- package/src/sdkToEventsApiConverter.ts +55 -1
- package/src/serverModel.ts +2 -1
- package/src/store.ts +2 -3
- package/src/types.ts +134 -0
- package/src/utils.ts +135 -0
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.64.0";
|
|
207
207
|
|
|
208
208
|
var Constants = {
|
|
209
209
|
sdkVersion: version,
|
|
@@ -918,6 +918,96 @@ var mParticle = (function () {
|
|
|
918
918
|
var obfuscateDevData = function obfuscateDevData(data, isDevelopmentMode) {
|
|
919
919
|
return isDevelopmentMode ? data : obfuscateData(data);
|
|
920
920
|
};
|
|
921
|
+
// Standalone version of jQuery.extend, from https://github.com/dansdom/extend
|
|
922
|
+
// https://go.mparticle.com/work/SQDSDKS-6047
|
|
923
|
+
function extend() {
|
|
924
|
+
var args = [];
|
|
925
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
926
|
+
args[_i] = arguments[_i];
|
|
927
|
+
}
|
|
928
|
+
var objectHelper = {
|
|
929
|
+
hasOwn: Object.prototype.hasOwnProperty,
|
|
930
|
+
class2type: {},
|
|
931
|
+
type: function type(obj) {
|
|
932
|
+
return obj == null ? String(obj) : objectHelper.class2type[Object.prototype.toString.call(obj)] || 'object';
|
|
933
|
+
},
|
|
934
|
+
isPlainObject: function isPlainObject(obj) {
|
|
935
|
+
if (!obj || objectHelper.type(obj) !== 'object' || obj.nodeType || objectHelper.isWindow(obj)) {
|
|
936
|
+
return false;
|
|
937
|
+
}
|
|
938
|
+
try {
|
|
939
|
+
if (obj.constructor && !objectHelper.hasOwn.call(obj, 'constructor') && !objectHelper.hasOwn.call(obj.constructor.prototype, 'isPrototypeOf')) {
|
|
940
|
+
return false;
|
|
941
|
+
}
|
|
942
|
+
} catch (e) {
|
|
943
|
+
return false;
|
|
944
|
+
}
|
|
945
|
+
var key;
|
|
946
|
+
for (key in obj) {} // eslint-disable-line no-empty
|
|
947
|
+
return key === undefined || objectHelper.hasOwn.call(obj, key);
|
|
948
|
+
},
|
|
949
|
+
isArray: Array.isArray || function (obj) {
|
|
950
|
+
return objectHelper.type(obj) === 'array';
|
|
951
|
+
},
|
|
952
|
+
isFunction: function isFunction(obj) {
|
|
953
|
+
return objectHelper.type(obj) === 'function';
|
|
954
|
+
},
|
|
955
|
+
isWindow: function isWindow(obj) {
|
|
956
|
+
return obj != null && obj == obj.window;
|
|
957
|
+
}
|
|
958
|
+
};
|
|
959
|
+
var options,
|
|
960
|
+
name,
|
|
961
|
+
src,
|
|
962
|
+
copy,
|
|
963
|
+
copyIsArray,
|
|
964
|
+
clone,
|
|
965
|
+
target = args[0] || {},
|
|
966
|
+
i = 1,
|
|
967
|
+
deep = false;
|
|
968
|
+
var length = args.length;
|
|
969
|
+
if (typeof target === 'boolean') {
|
|
970
|
+
deep = target;
|
|
971
|
+
target = args[1] || {};
|
|
972
|
+
i = 2;
|
|
973
|
+
}
|
|
974
|
+
if (_typeof$1(target) !== 'object' && !objectHelper.isFunction(target)) {
|
|
975
|
+
target = {};
|
|
976
|
+
}
|
|
977
|
+
if (length === i) {
|
|
978
|
+
target = {};
|
|
979
|
+
--i;
|
|
980
|
+
}
|
|
981
|
+
for (; i < length; i++) {
|
|
982
|
+
if ((options = args[i]) != null) {
|
|
983
|
+
for (name in options) {
|
|
984
|
+
if (name === '__proto__' || name === 'constructor' || name === 'prototype') {
|
|
985
|
+
continue;
|
|
986
|
+
}
|
|
987
|
+
if (!Object.prototype.hasOwnProperty.call(options, name)) {
|
|
988
|
+
continue;
|
|
989
|
+
}
|
|
990
|
+
src = target[name];
|
|
991
|
+
copy = options[name];
|
|
992
|
+
if (target === copy) {
|
|
993
|
+
continue;
|
|
994
|
+
}
|
|
995
|
+
if (deep && copy && (objectHelper.isPlainObject(copy) || (copyIsArray = objectHelper.isArray(copy)))) {
|
|
996
|
+
if (copyIsArray) {
|
|
997
|
+
copyIsArray = false;
|
|
998
|
+
clone = src && objectHelper.isArray(src) ? src : [];
|
|
999
|
+
} else {
|
|
1000
|
+
clone = src && objectHelper.isPlainObject(src) ? src : {};
|
|
1001
|
+
}
|
|
1002
|
+
target[name] = extend(deep, clone, copy);
|
|
1003
|
+
} else if (copy !== undefined) {
|
|
1004
|
+
target[name] = copy;
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
return target;
|
|
1010
|
+
}
|
|
921
1011
|
|
|
922
1012
|
var MessageType$1 = {
|
|
923
1013
|
SessionStart: 1,
|
|
@@ -1285,6 +1375,131 @@ var mParticle = (function () {
|
|
|
1285
1375
|
JointSdkSelectPlacements: 'mp:jointSdkSelectPlacements',
|
|
1286
1376
|
JointSdkRoktKitInit: 'mp:jointSdkRoktKitInit'
|
|
1287
1377
|
};
|
|
1378
|
+
function getMessageTypeFromEventType(eventType) {
|
|
1379
|
+
switch (eventType) {
|
|
1380
|
+
case 'custom_event':
|
|
1381
|
+
return MessageType$1.PageEvent;
|
|
1382
|
+
case 'screen_view':
|
|
1383
|
+
return MessageType$1.PageView;
|
|
1384
|
+
case 'commerce_event':
|
|
1385
|
+
return MessageType$1.Commerce;
|
|
1386
|
+
case 'session_start':
|
|
1387
|
+
return MessageType$1.SessionStart;
|
|
1388
|
+
case 'session_end':
|
|
1389
|
+
return MessageType$1.SessionEnd;
|
|
1390
|
+
case 'crash_report':
|
|
1391
|
+
return MessageType$1.CrashReport;
|
|
1392
|
+
case 'opt_out':
|
|
1393
|
+
return MessageType$1.OptOut;
|
|
1394
|
+
case 'application_state_transition':
|
|
1395
|
+
return MessageType$1.AppStateTransition;
|
|
1396
|
+
case 'user_attribute_change':
|
|
1397
|
+
return MessageType$1.UserAttributeChange;
|
|
1398
|
+
case 'user_identity_change':
|
|
1399
|
+
return MessageType$1.UserIdentityChange;
|
|
1400
|
+
default:
|
|
1401
|
+
return -1;
|
|
1402
|
+
}
|
|
1403
|
+
}
|
|
1404
|
+
function getEventCategoryFromCustomEventType(customEventType) {
|
|
1405
|
+
switch (customEventType) {
|
|
1406
|
+
case 'navigation':
|
|
1407
|
+
return EventType.Navigation;
|
|
1408
|
+
case 'location':
|
|
1409
|
+
return EventType.Location;
|
|
1410
|
+
case 'search':
|
|
1411
|
+
return EventType.Search;
|
|
1412
|
+
case 'transaction':
|
|
1413
|
+
return EventType.Transaction;
|
|
1414
|
+
case 'user_content':
|
|
1415
|
+
return EventType.UserContent;
|
|
1416
|
+
case 'user_preference':
|
|
1417
|
+
return EventType.UserPreference;
|
|
1418
|
+
case 'social':
|
|
1419
|
+
return EventType.Social;
|
|
1420
|
+
case 'other':
|
|
1421
|
+
return EventType.Other;
|
|
1422
|
+
case 'media':
|
|
1423
|
+
return EventType.Media;
|
|
1424
|
+
case 'add_to_cart':
|
|
1425
|
+
return CommerceEventType.ProductAddToCart;
|
|
1426
|
+
case 'remove_from_cart':
|
|
1427
|
+
return CommerceEventType.ProductRemoveFromCart;
|
|
1428
|
+
case 'checkout':
|
|
1429
|
+
return CommerceEventType.ProductCheckout;
|
|
1430
|
+
case 'checkout_option':
|
|
1431
|
+
return CommerceEventType.ProductCheckoutOption;
|
|
1432
|
+
case 'click':
|
|
1433
|
+
return CommerceEventType.ProductClick;
|
|
1434
|
+
case 'view_detail':
|
|
1435
|
+
return CommerceEventType.ProductViewDetail;
|
|
1436
|
+
case 'purchase':
|
|
1437
|
+
return CommerceEventType.ProductPurchase;
|
|
1438
|
+
case 'refund':
|
|
1439
|
+
return CommerceEventType.ProductRefund;
|
|
1440
|
+
case 'promotion_view':
|
|
1441
|
+
return CommerceEventType.PromotionView;
|
|
1442
|
+
case 'promotion_click':
|
|
1443
|
+
return CommerceEventType.PromotionClick;
|
|
1444
|
+
case 'add_to_wishlist':
|
|
1445
|
+
return CommerceEventType.ProductAddToWishlist;
|
|
1446
|
+
case 'remove_from_wishlist':
|
|
1447
|
+
case 'remove_from_wish_list':
|
|
1448
|
+
return CommerceEventType.ProductRemoveFromWishlist;
|
|
1449
|
+
case 'impression':
|
|
1450
|
+
return CommerceEventType.ProductImpression;
|
|
1451
|
+
default:
|
|
1452
|
+
return EventType.Unknown;
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
function getIdentityTypeFromBatchKey(key) {
|
|
1456
|
+
switch (key) {
|
|
1457
|
+
case 'other':
|
|
1458
|
+
return IdentityType.Other;
|
|
1459
|
+
case 'customer_id':
|
|
1460
|
+
return IdentityType.CustomerId;
|
|
1461
|
+
case 'facebook':
|
|
1462
|
+
return IdentityType.Facebook;
|
|
1463
|
+
case 'twitter':
|
|
1464
|
+
return IdentityType.Twitter;
|
|
1465
|
+
case 'google':
|
|
1466
|
+
return IdentityType.Google;
|
|
1467
|
+
case 'microsoft':
|
|
1468
|
+
return IdentityType.Microsoft;
|
|
1469
|
+
case 'yahoo':
|
|
1470
|
+
return IdentityType.Yahoo;
|
|
1471
|
+
case 'email':
|
|
1472
|
+
return IdentityType.Email;
|
|
1473
|
+
case 'facebook_custom_audience_id':
|
|
1474
|
+
return IdentityType.FacebookCustomAudienceId;
|
|
1475
|
+
case 'other_id_2':
|
|
1476
|
+
return IdentityType.Other2;
|
|
1477
|
+
case 'other_id_3':
|
|
1478
|
+
return IdentityType.Other3;
|
|
1479
|
+
case 'other_id_4':
|
|
1480
|
+
return IdentityType.Other4;
|
|
1481
|
+
case 'other_id_5':
|
|
1482
|
+
return IdentityType.Other5;
|
|
1483
|
+
case 'other_id_6':
|
|
1484
|
+
return IdentityType.Other6;
|
|
1485
|
+
case 'other_id_7':
|
|
1486
|
+
return IdentityType.Other7;
|
|
1487
|
+
case 'other_id_8':
|
|
1488
|
+
return IdentityType.Other8;
|
|
1489
|
+
case 'other_id_9':
|
|
1490
|
+
return IdentityType.Other9;
|
|
1491
|
+
case 'other_id_10':
|
|
1492
|
+
return IdentityType.Other10;
|
|
1493
|
+
case 'mobile_number':
|
|
1494
|
+
return IdentityType.MobileNumber;
|
|
1495
|
+
case 'phone_number_2':
|
|
1496
|
+
return IdentityType.PhoneNumber2;
|
|
1497
|
+
case 'phone_number_3':
|
|
1498
|
+
return IdentityType.PhoneNumber3;
|
|
1499
|
+
default:
|
|
1500
|
+
return -1;
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1288
1503
|
var Types = {
|
|
1289
1504
|
MessageType: MessageType$1,
|
|
1290
1505
|
EventType: EventType,
|
|
@@ -2186,6 +2401,44 @@ var mParticle = (function () {
|
|
|
2186
2401
|
return dist.IdentityTypeEnum.phoneNumber3;
|
|
2187
2402
|
}
|
|
2188
2403
|
}
|
|
2404
|
+
function getEventNameFromBatchEvent(batchEvent) {
|
|
2405
|
+
if (!batchEvent || !batchEvent.data) {
|
|
2406
|
+
return '';
|
|
2407
|
+
}
|
|
2408
|
+
if (batchEvent.event_type === 'screen_view') {
|
|
2409
|
+
return batchEvent.data.screen_name || '';
|
|
2410
|
+
}
|
|
2411
|
+
return batchEvent.data.event_name || '';
|
|
2412
|
+
}
|
|
2413
|
+
function getEventCategoryFromBatchEvent(batchEvent) {
|
|
2414
|
+
if (!batchEvent || !batchEvent.data) {
|
|
2415
|
+
return Types.EventType.Unknown;
|
|
2416
|
+
}
|
|
2417
|
+
var data = batchEvent.data;
|
|
2418
|
+
if (data.custom_event_type) {
|
|
2419
|
+
return getEventCategoryFromCustomEventType(data.custom_event_type);
|
|
2420
|
+
}
|
|
2421
|
+
if (batchEvent.event_type === 'commerce_event') {
|
|
2422
|
+
return getCommerceEventCategory(data);
|
|
2423
|
+
}
|
|
2424
|
+
return Types.EventType.Unknown;
|
|
2425
|
+
}
|
|
2426
|
+
function getCommerceEventCategory(data) {
|
|
2427
|
+
if (data.product_action && data.product_action.action) {
|
|
2428
|
+
return getEventCategoryFromCustomEventType(data.product_action.action);
|
|
2429
|
+
}
|
|
2430
|
+
var promoAction = data.promotion_action && data.promotion_action.action;
|
|
2431
|
+
if (promoAction === 'view') {
|
|
2432
|
+
return Types.CommerceEventType.PromotionView;
|
|
2433
|
+
}
|
|
2434
|
+
if (promoAction === 'click') {
|
|
2435
|
+
return Types.CommerceEventType.PromotionClick;
|
|
2436
|
+
}
|
|
2437
|
+
if (data.product_impressions) {
|
|
2438
|
+
return Types.CommerceEventType.ProductImpression;
|
|
2439
|
+
}
|
|
2440
|
+
return Types.EventType.Unknown;
|
|
2441
|
+
}
|
|
2189
2442
|
|
|
2190
2443
|
var BaseVault = /** @class */function () {
|
|
2191
2444
|
/**
|
|
@@ -2664,6 +2917,13 @@ var mParticle = (function () {
|
|
|
2664
2917
|
for (var _d = 0, _e = Array.from(eventsBySession.entries()); _d < _e.length; _d++) {
|
|
2665
2918
|
var entry_1 = _e[_d];
|
|
2666
2919
|
var uploadBatchObject = convertEvents(mpid, entry_1[1], mpInstance);
|
|
2920
|
+
if (uploadBatchObject) {
|
|
2921
|
+
try {
|
|
2922
|
+
mpInstance._Forwarders.sendBatchToForwarders(uploadBatchObject);
|
|
2923
|
+
} catch (e) {
|
|
2924
|
+
mpInstance.Logger.error("Error forwarding batch to kits. ".concat(e));
|
|
2925
|
+
}
|
|
2926
|
+
}
|
|
2667
2927
|
var onCreateBatchCallback = mpInstance._Store.SDKConfig.onCreateBatch;
|
|
2668
2928
|
if (onCreateBatchCallback) {
|
|
2669
2929
|
uploadBatchObject = onCreateBatchCallback(uploadBatchObject);
|
|
@@ -3064,7 +3324,7 @@ var mParticle = (function () {
|
|
|
3064
3324
|
var defaultOptions = {
|
|
3065
3325
|
shouldUploadEvent: true
|
|
3066
3326
|
};
|
|
3067
|
-
var options =
|
|
3327
|
+
var options = extend(defaultOptions, _options);
|
|
3068
3328
|
if (mpInstance._Store.webviewBridgeEnabled) {
|
|
3069
3329
|
mpInstance._NativeSdkHelpers.sendToNative(Constants.NativeSdkPaths.LogEvent, JSON.stringify(event));
|
|
3070
3330
|
return;
|
|
@@ -3393,118 +3653,7 @@ var mParticle = (function () {
|
|
|
3393
3653
|
mpInstance.Logger.error('There was an error with your callback: ' + e);
|
|
3394
3654
|
}
|
|
3395
3655
|
};
|
|
3396
|
-
|
|
3397
|
-
// https://go.mparticle.com/work/SQDSDKS-6047
|
|
3398
|
-
// Standalone version of jQuery.extend, from https://github.com/dansdom/extend
|
|
3399
|
-
this.extend = function () {
|
|
3400
|
-
var options,
|
|
3401
|
-
name,
|
|
3402
|
-
src,
|
|
3403
|
-
copy,
|
|
3404
|
-
copyIsArray,
|
|
3405
|
-
clone,
|
|
3406
|
-
target = arguments[0] || {},
|
|
3407
|
-
i = 1,
|
|
3408
|
-
length = arguments.length,
|
|
3409
|
-
deep = false,
|
|
3410
|
-
// helper which replicates the jquery internal functions
|
|
3411
|
-
objectHelper = {
|
|
3412
|
-
hasOwn: Object.prototype.hasOwnProperty,
|
|
3413
|
-
class2type: {},
|
|
3414
|
-
type: function type(obj) {
|
|
3415
|
-
return obj == null ? String(obj) : objectHelper.class2type[Object.prototype.toString.call(obj)] || 'object';
|
|
3416
|
-
},
|
|
3417
|
-
isPlainObject: function isPlainObject(obj) {
|
|
3418
|
-
if (!obj || objectHelper.type(obj) !== 'object' || obj.nodeType || objectHelper.isWindow(obj)) {
|
|
3419
|
-
return false;
|
|
3420
|
-
}
|
|
3421
|
-
try {
|
|
3422
|
-
if (obj.constructor && !objectHelper.hasOwn.call(obj, 'constructor') && !objectHelper.hasOwn.call(obj.constructor.prototype, 'isPrototypeOf')) {
|
|
3423
|
-
return false;
|
|
3424
|
-
}
|
|
3425
|
-
} catch (e) {
|
|
3426
|
-
return false;
|
|
3427
|
-
}
|
|
3428
|
-
var key;
|
|
3429
|
-
for (key in obj) {} // eslint-disable-line no-empty
|
|
3430
|
-
|
|
3431
|
-
return key === undefined || objectHelper.hasOwn.call(obj, key);
|
|
3432
|
-
},
|
|
3433
|
-
isArray: Array.isArray || function (obj) {
|
|
3434
|
-
return objectHelper.type(obj) === 'array';
|
|
3435
|
-
},
|
|
3436
|
-
isFunction: function isFunction(obj) {
|
|
3437
|
-
return objectHelper.type(obj) === 'function';
|
|
3438
|
-
},
|
|
3439
|
-
isWindow: function isWindow(obj) {
|
|
3440
|
-
return obj != null && obj == obj.window;
|
|
3441
|
-
}
|
|
3442
|
-
}; // end of objectHelper
|
|
3443
|
-
|
|
3444
|
-
// Handle a deep copy situation
|
|
3445
|
-
if (typeof target === 'boolean') {
|
|
3446
|
-
deep = target;
|
|
3447
|
-
target = arguments[1] || {};
|
|
3448
|
-
// skip the boolean and the target
|
|
3449
|
-
i = 2;
|
|
3450
|
-
}
|
|
3451
|
-
|
|
3452
|
-
// Handle case when target is a string or something (possible in deep copy)
|
|
3453
|
-
if (_typeof$1(target) !== 'object' && !objectHelper.isFunction(target)) {
|
|
3454
|
-
target = {};
|
|
3455
|
-
}
|
|
3456
|
-
|
|
3457
|
-
// If no second argument is used then this can extend an object that is using this method
|
|
3458
|
-
if (length === i) {
|
|
3459
|
-
target = this;
|
|
3460
|
-
--i;
|
|
3461
|
-
}
|
|
3462
|
-
for (; i < length; i++) {
|
|
3463
|
-
// Only deal with non-null/undefined values
|
|
3464
|
-
if ((options = arguments[i]) != null) {
|
|
3465
|
-
// Extend the base object
|
|
3466
|
-
for (name in options) {
|
|
3467
|
-
// Prevent prototype pollution
|
|
3468
|
-
// https://github.com/advisories/GHSA-jf85-cpcp-j695
|
|
3469
|
-
if (name === '__proto__' || name === 'constructor' || name === 'prototype') {
|
|
3470
|
-
continue;
|
|
3471
|
-
}
|
|
3472
|
-
|
|
3473
|
-
// Only copy own properties
|
|
3474
|
-
if (!Object.prototype.hasOwnProperty.call(options, name)) {
|
|
3475
|
-
continue;
|
|
3476
|
-
}
|
|
3477
|
-
src = target[name];
|
|
3478
|
-
copy = options[name];
|
|
3479
|
-
|
|
3480
|
-
// Prevent never-ending loop
|
|
3481
|
-
if (target === copy) {
|
|
3482
|
-
continue;
|
|
3483
|
-
}
|
|
3484
|
-
|
|
3485
|
-
// Recurse if we're merging plain objects or arrays
|
|
3486
|
-
if (deep && copy && (objectHelper.isPlainObject(copy) || (copyIsArray = objectHelper.isArray(copy)))) {
|
|
3487
|
-
if (copyIsArray) {
|
|
3488
|
-
copyIsArray = false;
|
|
3489
|
-
clone = src && objectHelper.isArray(src) ? src : [];
|
|
3490
|
-
} else {
|
|
3491
|
-
clone = src && objectHelper.isPlainObject(src) ? src : {};
|
|
3492
|
-
}
|
|
3493
|
-
|
|
3494
|
-
// Never move original objects, clone them
|
|
3495
|
-
target[name] = self.extend(deep, clone, copy);
|
|
3496
|
-
|
|
3497
|
-
// Don't bring in undefined values
|
|
3498
|
-
} else if (copy !== undefined) {
|
|
3499
|
-
target[name] = copy;
|
|
3500
|
-
}
|
|
3501
|
-
}
|
|
3502
|
-
}
|
|
3503
|
-
}
|
|
3504
|
-
|
|
3505
|
-
// Return the modified object
|
|
3506
|
-
return target;
|
|
3507
|
-
};
|
|
3656
|
+
this.extend = extend;
|
|
3508
3657
|
this.createServiceUrl = function (secureServiceUrl, devToken) {
|
|
3509
3658
|
var serviceScheme = window.mParticle && mpInstance._Store.SDKConfig.forceHttps ? 'https://' : window.location.protocol + '//';
|
|
3510
3659
|
var baseUrl;
|
|
@@ -4305,7 +4454,7 @@ var mParticle = (function () {
|
|
|
4305
4454
|
commerceEvent.ProductImpressions.forEach(function (productImpression) {
|
|
4306
4455
|
if (productImpression.ProductList) {
|
|
4307
4456
|
productImpression.ProductList.forEach(function (product) {
|
|
4308
|
-
var attributes =
|
|
4457
|
+
var attributes = extend(false, {}, commerceEvent.EventAttributes);
|
|
4309
4458
|
if (product.Attributes) {
|
|
4310
4459
|
for (var attribute in product.Attributes) {
|
|
4311
4460
|
attributes[attribute] = product.Attributes[attribute];
|
|
@@ -4340,7 +4489,7 @@ var mParticle = (function () {
|
|
|
4340
4489
|
}
|
|
4341
4490
|
var promotions = commerceEvent.PromotionAction.PromotionList;
|
|
4342
4491
|
promotions.forEach(function (promotion) {
|
|
4343
|
-
var attributes =
|
|
4492
|
+
var attributes = extend(false, {}, commerceEvent.EventAttributes);
|
|
4344
4493
|
self.extractPromotionAttributes(attributes, promotion);
|
|
4345
4494
|
var appEvent = mpInstance._ServerModel.createEventObject({
|
|
4346
4495
|
messageType: Types.MessageType.PageEvent,
|
|
@@ -4359,7 +4508,7 @@ var mParticle = (function () {
|
|
|
4359
4508
|
}
|
|
4360
4509
|
var shouldExtractActionAttributes = false;
|
|
4361
4510
|
if (commerceEvent.ProductAction.ProductActionType === Types.ProductActionType.Purchase || commerceEvent.ProductAction.ProductActionType === Types.ProductActionType.Refund) {
|
|
4362
|
-
var attributes =
|
|
4511
|
+
var attributes = extend(false, {}, commerceEvent.EventAttributes);
|
|
4363
4512
|
attributes['Product Count'] = commerceEvent.ProductAction.ProductList ? commerceEvent.ProductAction.ProductList.length : 0;
|
|
4364
4513
|
self.extractActionAttributes(attributes, commerceEvent.ProductAction);
|
|
4365
4514
|
if (commerceEvent.CurrencyCode) {
|
|
@@ -4380,7 +4529,7 @@ var mParticle = (function () {
|
|
|
4380
4529
|
return appEvents;
|
|
4381
4530
|
}
|
|
4382
4531
|
products.forEach(function (product) {
|
|
4383
|
-
var attributes =
|
|
4532
|
+
var attributes = extend(false, commerceEvent.EventAttributes, product.Attributes);
|
|
4384
4533
|
if (shouldExtractActionAttributes) {
|
|
4385
4534
|
self.extractActionAttributes(attributes, commerceEvent.ProductAction);
|
|
4386
4535
|
} else {
|
|
@@ -4851,7 +5000,7 @@ var mParticle = (function () {
|
|
|
4851
5000
|
};
|
|
4852
5001
|
this.syncPersistenceData = function () {
|
|
4853
5002
|
var persistenceData = mpInstance._Persistence.getPersistence();
|
|
4854
|
-
_this.persistenceData =
|
|
5003
|
+
_this.persistenceData = extend({}, _this.persistenceData, persistenceData);
|
|
4855
5004
|
};
|
|
4856
5005
|
this.getUserAttributes = function (mpid) {
|
|
4857
5006
|
return _this._getFromPersistence(mpid, 'ua') || {};
|
|
@@ -5114,7 +5263,7 @@ var mParticle = (function () {
|
|
|
5114
5263
|
if (localStorageData) {
|
|
5115
5264
|
if (cookies) {
|
|
5116
5265
|
// https://go.mparticle.com/work/SQDSDKS-6047
|
|
5117
|
-
allData =
|
|
5266
|
+
allData = extend(false, localStorageData, cookies);
|
|
5118
5267
|
} else {
|
|
5119
5268
|
allData = localStorageData;
|
|
5120
5269
|
}
|
|
@@ -5129,7 +5278,7 @@ var mParticle = (function () {
|
|
|
5129
5278
|
if (cookies) {
|
|
5130
5279
|
if (localStorageData) {
|
|
5131
5280
|
// https://go.mparticle.com/work/SQDSDKS-6047
|
|
5132
|
-
allData =
|
|
5281
|
+
allData = extend(false, localStorageData, cookies);
|
|
5133
5282
|
} else {
|
|
5134
5283
|
allData = cookies;
|
|
5135
5284
|
}
|
|
@@ -5269,7 +5418,7 @@ var mParticle = (function () {
|
|
|
5269
5418
|
localStorageData.cu = mpid;
|
|
5270
5419
|
}
|
|
5271
5420
|
if (Object.keys(mpInstance._Store.nonCurrentUserMPIDs).length) {
|
|
5272
|
-
localStorageData =
|
|
5421
|
+
localStorageData = extend({}, localStorageData, mpInstance._Store.nonCurrentUserMPIDs);
|
|
5273
5422
|
mpInstance._Store.nonCurrentUserMPIDs = {};
|
|
5274
5423
|
}
|
|
5275
5424
|
localStorageData = setGlobalStorageAttributes(localStorageData);
|
|
@@ -5412,7 +5561,7 @@ var mParticle = (function () {
|
|
|
5412
5561
|
cookies.l = mpInstance._Store.isLoggedIn ? 1 : 0;
|
|
5413
5562
|
cookies = setGlobalStorageAttributes(cookies);
|
|
5414
5563
|
if (Object.keys(mpInstance._Store.nonCurrentUserMPIDs).length) {
|
|
5415
|
-
cookies =
|
|
5564
|
+
cookies = extend({}, cookies, mpInstance._Store.nonCurrentUserMPIDs);
|
|
5416
5565
|
mpInstance._Store.nonCurrentUserMPIDs = {};
|
|
5417
5566
|
}
|
|
5418
5567
|
encodedCookiesWithExpirationAndPath = self.reduceAndEncodePersistence(cookies, expires, domain, mpInstance._Store.SDKConfig.maxCookieSize);
|
|
@@ -6498,6 +6647,120 @@ var mParticle = (function () {
|
|
|
6498
6647
|
};
|
|
6499
6648
|
}
|
|
6500
6649
|
|
|
6650
|
+
var FORWARDING_RULE_MESSAGE_TYPES = [Types.MessageType.PageEvent, Types.MessageType.PageView, Types.MessageType.Commerce];
|
|
6651
|
+
function inFilteredList(filterList, hash) {
|
|
6652
|
+
if (filterList && filterList.length) {
|
|
6653
|
+
return inArray(filterList, hash);
|
|
6654
|
+
}
|
|
6655
|
+
return false;
|
|
6656
|
+
}
|
|
6657
|
+
function isBlockedByForwardingRule(messageType, attributes, forwarder) {
|
|
6658
|
+
if (!FORWARDING_RULE_MESSAGE_TYPES.includes(messageType) || !forwarder.filteringEventAttributeValue || !forwarder.filteringEventAttributeValue.eventAttributeName || !forwarder.filteringEventAttributeValue.eventAttributeValue) {
|
|
6659
|
+
return false;
|
|
6660
|
+
}
|
|
6661
|
+
var foundProp = null;
|
|
6662
|
+
if (attributes) {
|
|
6663
|
+
for (var prop in attributes) {
|
|
6664
|
+
if (attributes.hasOwnProperty(prop)) {
|
|
6665
|
+
var hashedName = KitFilterHelper.hashAttributeConditionalForwarding(prop);
|
|
6666
|
+
if (hashedName === forwarder.filteringEventAttributeValue.eventAttributeName) {
|
|
6667
|
+
foundProp = {
|
|
6668
|
+
name: hashedName,
|
|
6669
|
+
value: KitFilterHelper.hashAttributeConditionalForwarding(attributes[prop])
|
|
6670
|
+
};
|
|
6671
|
+
break;
|
|
6672
|
+
}
|
|
6673
|
+
}
|
|
6674
|
+
}
|
|
6675
|
+
}
|
|
6676
|
+
var isMatch = foundProp !== null && foundProp.value === forwarder.filteringEventAttributeValue.eventAttributeValue;
|
|
6677
|
+
var shouldInclude = forwarder.filteringEventAttributeValue.includeOnMatch === true ? isMatch : !isMatch;
|
|
6678
|
+
return !shouldInclude;
|
|
6679
|
+
}
|
|
6680
|
+
function isBlockedByEventFilter(messageType, hashedEventName, hashedEventType, forwarder) {
|
|
6681
|
+
if (messageType === Types.MessageType.PageEvent && (inFilteredList(forwarder.eventNameFilters, hashedEventName) || inFilteredList(forwarder.eventTypeFilters, hashedEventType))) {
|
|
6682
|
+
return true;
|
|
6683
|
+
} else if (messageType === Types.MessageType.Commerce && inFilteredList(forwarder.eventTypeFilters, hashedEventType)) {
|
|
6684
|
+
return true;
|
|
6685
|
+
} else if (messageType === Types.MessageType.PageView && inFilteredList(forwarder.screenNameFilters, hashedEventName)) {
|
|
6686
|
+
return true;
|
|
6687
|
+
}
|
|
6688
|
+
return false;
|
|
6689
|
+
}
|
|
6690
|
+
function filterEventAttributes(messageType, eventCategory, eventName, attributes, forwarder) {
|
|
6691
|
+
if (!attributes) {
|
|
6692
|
+
return attributes;
|
|
6693
|
+
}
|
|
6694
|
+
var filterList;
|
|
6695
|
+
if (messageType === Types.MessageType.PageEvent) {
|
|
6696
|
+
filterList = forwarder.attributeFilters;
|
|
6697
|
+
} else if (messageType === Types.MessageType.PageView) {
|
|
6698
|
+
filterList = forwarder.screenAttributeFilters;
|
|
6699
|
+
}
|
|
6700
|
+
if (!filterList) {
|
|
6701
|
+
return attributes;
|
|
6702
|
+
}
|
|
6703
|
+
var filtered = {};
|
|
6704
|
+
for (var attrName in attributes) {
|
|
6705
|
+
if (attributes.hasOwnProperty(attrName)) {
|
|
6706
|
+
var hash = KitFilterHelper.hashEventAttributeKey(eventCategory, eventName, attrName);
|
|
6707
|
+
if (!inArray(filterList, hash)) {
|
|
6708
|
+
filtered[attrName] = attributes[attrName];
|
|
6709
|
+
}
|
|
6710
|
+
}
|
|
6711
|
+
}
|
|
6712
|
+
return filtered;
|
|
6713
|
+
}
|
|
6714
|
+
function filterUserIdentities(userIdentities, filterList) {
|
|
6715
|
+
if (!userIdentities || !userIdentities.length) {
|
|
6716
|
+
return userIdentities || [];
|
|
6717
|
+
}
|
|
6718
|
+
return userIdentities.filter(function (userIdentity) {
|
|
6719
|
+
return !inArray(filterList, KitFilterHelper.hashUserIdentity(userIdentity.Type));
|
|
6720
|
+
});
|
|
6721
|
+
}
|
|
6722
|
+
function isBatchEventAllowed(batchEvent, forwarder) {
|
|
6723
|
+
if (!batchEvent || !batchEvent.data) {
|
|
6724
|
+
return true;
|
|
6725
|
+
}
|
|
6726
|
+
var messageType = getMessageTypeFromEventType(batchEvent.event_type);
|
|
6727
|
+
var eventName = getEventNameFromBatchEvent(batchEvent);
|
|
6728
|
+
var eventCategory = getEventCategoryFromBatchEvent(batchEvent);
|
|
6729
|
+
if (isBlockedByForwardingRule(messageType, batchEvent.data.custom_attributes, forwarder)) {
|
|
6730
|
+
return false;
|
|
6731
|
+
}
|
|
6732
|
+
var hashedEventName = KitFilterHelper.hashEventName(eventName, eventCategory);
|
|
6733
|
+
var hashedEventType = KitFilterHelper.hashEventType(eventCategory);
|
|
6734
|
+
return !isBlockedByEventFilter(messageType, hashedEventName, hashedEventType, forwarder);
|
|
6735
|
+
}
|
|
6736
|
+
function filterBatchEventAttributes(batchEvent, forwarder) {
|
|
6737
|
+
if (!batchEvent || !batchEvent.data) {
|
|
6738
|
+
return;
|
|
6739
|
+
}
|
|
6740
|
+
var messageType = getMessageTypeFromEventType(batchEvent.event_type);
|
|
6741
|
+
var eventName = getEventNameFromBatchEvent(batchEvent);
|
|
6742
|
+
var eventCategory = getEventCategoryFromBatchEvent(batchEvent);
|
|
6743
|
+
batchEvent.data.custom_attributes = filterEventAttributes(messageType, eventCategory, eventName, batchEvent.data.custom_attributes, forwarder);
|
|
6744
|
+
}
|
|
6745
|
+
function filterBatchIdentities(userIdentities, filterList) {
|
|
6746
|
+
if (!userIdentities || !filterList) {
|
|
6747
|
+
return userIdentities;
|
|
6748
|
+
}
|
|
6749
|
+
var filtered = {};
|
|
6750
|
+
for (var key in userIdentities) {
|
|
6751
|
+
if (userIdentities.hasOwnProperty(key)) {
|
|
6752
|
+
var identityType = getIdentityTypeFromBatchKey(key);
|
|
6753
|
+
if (identityType === -1 || !inArray(filterList, identityType)) {
|
|
6754
|
+
filtered[key] = userIdentities[key];
|
|
6755
|
+
}
|
|
6756
|
+
}
|
|
6757
|
+
}
|
|
6758
|
+
return filtered;
|
|
6759
|
+
}
|
|
6760
|
+
|
|
6761
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
6762
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6763
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
6501
6764
|
var _Constants$IdentityMe = Constants.IdentityMethods,
|
|
6502
6765
|
Modify$2 = _Constants$IdentityMe.Modify,
|
|
6503
6766
|
Identify$1 = _Constants$IdentityMe.Identify,
|
|
@@ -6531,7 +6794,7 @@ var mParticle = (function () {
|
|
|
6531
6794
|
return false;
|
|
6532
6795
|
}
|
|
6533
6796
|
var filteredUserIdentities = mpInstance._Helpers.filterUserIdentities(userIdentities, forwarder.userIdentityFilters);
|
|
6534
|
-
var filteredUserAttributes =
|
|
6797
|
+
var filteredUserAttributes = KitFilterHelper.filterUserAttributes(user ? user.getAllUserAttributes() : {}, forwarder.userAttributeFilters);
|
|
6535
6798
|
if (!forwarder.initialized) {
|
|
6536
6799
|
forwarder.logger = mpInstance.Logger;
|
|
6537
6800
|
forwarder.init(forwarder.settings, forwardingStatsCallback, false, null, filteredUserAttributes, filteredUserIdentities, mpInstance._Store.SDKConfig.appVersion, mpInstance._Store.SDKConfig.appName, mpInstance._Store.SDKConfig.customFlags, mpInstance._Store.clientId);
|
|
@@ -6601,109 +6864,33 @@ var mParticle = (function () {
|
|
|
6601
6864
|
}
|
|
6602
6865
|
};
|
|
6603
6866
|
this.sendEventToForwarders = function (event) {
|
|
6604
|
-
var clonedEvent
|
|
6605
|
-
|
|
6606
|
-
|
|
6607
|
-
filterUserIdentities = function filterUserIdentities(event, filterList) {
|
|
6608
|
-
if (event.UserIdentities && event.UserIdentities.length) {
|
|
6609
|
-
event.UserIdentities.forEach(function (userIdentity, i) {
|
|
6610
|
-
if (mpInstance._Helpers.inArray(filterList, KitFilterHelper.hashUserIdentity(userIdentity.Type))) {
|
|
6611
|
-
event.UserIdentities.splice(i, 1);
|
|
6612
|
-
if (i > 0) {
|
|
6613
|
-
i--;
|
|
6614
|
-
}
|
|
6615
|
-
}
|
|
6616
|
-
});
|
|
6617
|
-
}
|
|
6618
|
-
},
|
|
6619
|
-
filterAttributes = function filterAttributes(event, filterList) {
|
|
6620
|
-
var hash;
|
|
6621
|
-
if (!filterList) {
|
|
6622
|
-
return;
|
|
6623
|
-
}
|
|
6624
|
-
for (var attrName in event.EventAttributes) {
|
|
6625
|
-
if (event.EventAttributes.hasOwnProperty(attrName)) {
|
|
6626
|
-
hash = KitFilterHelper.hashEventAttributeKey(event.EventCategory, event.EventName, attrName);
|
|
6627
|
-
if (mpInstance._Helpers.inArray(filterList, hash)) {
|
|
6628
|
-
delete event.EventAttributes[attrName];
|
|
6629
|
-
}
|
|
6630
|
-
}
|
|
6631
|
-
}
|
|
6632
|
-
},
|
|
6633
|
-
inFilteredList = function inFilteredList(filterList, hash) {
|
|
6634
|
-
if (filterList && filterList.length) {
|
|
6635
|
-
if (mpInstance._Helpers.inArray(filterList, hash)) {
|
|
6636
|
-
return true;
|
|
6637
|
-
}
|
|
6638
|
-
}
|
|
6639
|
-
return false;
|
|
6640
|
-
},
|
|
6641
|
-
forwardingRuleMessageTypes = [Types.MessageType.PageEvent, Types.MessageType.PageView, Types.MessageType.Commerce];
|
|
6867
|
+
var clonedEvent;
|
|
6868
|
+
var hashedEventName;
|
|
6869
|
+
var hashedEventType;
|
|
6642
6870
|
if (!mpInstance._Store.webviewBridgeEnabled && mpInstance._Store.activeForwarders) {
|
|
6643
6871
|
hashedEventName = KitFilterHelper.hashEventName(event.EventName, event.EventCategory);
|
|
6644
6872
|
hashedEventType = KitFilterHelper.hashEventType(event.EventCategory);
|
|
6645
6873
|
for (var i = 0; i < mpInstance._Store.activeForwarders.length; i++) {
|
|
6646
|
-
|
|
6647
|
-
|
|
6648
|
-
|
|
6649
|
-
// The two cases are controlled by the "includeOnMatch" boolean value.
|
|
6650
|
-
// Supported message types for attribute forwarding rules are defined in the forwardingRuleMessageTypes array
|
|
6651
|
-
|
|
6652
|
-
if (forwardingRuleMessageTypes.indexOf(event.EventDataType) > -1 && mpInstance._Store.activeForwarders[i].filteringEventAttributeValue && mpInstance._Store.activeForwarders[i].filteringEventAttributeValue.eventAttributeName && mpInstance._Store.activeForwarders[i].filteringEventAttributeValue.eventAttributeValue) {
|
|
6653
|
-
var foundProp = null;
|
|
6654
|
-
|
|
6655
|
-
// Attempt to find the attribute in the collection of event attributes
|
|
6656
|
-
if (event.EventAttributes) {
|
|
6657
|
-
for (var prop in event.EventAttributes) {
|
|
6658
|
-
var hashedEventAttributeName;
|
|
6659
|
-
hashedEventAttributeName = KitFilterHelper.hashAttributeConditionalForwarding(prop);
|
|
6660
|
-
if (hashedEventAttributeName === mpInstance._Store.activeForwarders[i].filteringEventAttributeValue.eventAttributeName) {
|
|
6661
|
-
foundProp = {
|
|
6662
|
-
name: hashedEventAttributeName,
|
|
6663
|
-
value: KitFilterHelper.hashAttributeConditionalForwarding(event.EventAttributes[prop])
|
|
6664
|
-
};
|
|
6665
|
-
}
|
|
6666
|
-
if (foundProp) {
|
|
6667
|
-
break;
|
|
6668
|
-
}
|
|
6669
|
-
}
|
|
6670
|
-
}
|
|
6671
|
-
var isMatch = foundProp !== null && foundProp.value === mpInstance._Store.activeForwarders[i].filteringEventAttributeValue.eventAttributeValue;
|
|
6672
|
-
var shouldInclude = mpInstance._Store.activeForwarders[i].filteringEventAttributeValue.includeOnMatch === true ? isMatch : !isMatch;
|
|
6673
|
-
if (!shouldInclude) {
|
|
6674
|
-
continue;
|
|
6675
|
-
}
|
|
6874
|
+
var forwarder = mpInstance._Store.activeForwarders[i];
|
|
6875
|
+
if (isBlockedByForwardingRule(event.EventDataType, event.EventAttributes, forwarder)) {
|
|
6876
|
+
continue;
|
|
6676
6877
|
}
|
|
6677
6878
|
|
|
6678
6879
|
// Clone the event object, as we could be sending different attributes to each forwarder
|
|
6679
|
-
clonedEvent = {};
|
|
6680
|
-
|
|
6681
|
-
// Check event filtering rules
|
|
6682
|
-
if (event.EventDataType === Types.MessageType.PageEvent && (inFilteredList(mpInstance._Store.activeForwarders[i].eventNameFilters, hashedEventName) || inFilteredList(mpInstance._Store.activeForwarders[i].eventTypeFilters, hashedEventType))) {
|
|
6880
|
+
clonedEvent = extend(true, {}, event);
|
|
6881
|
+
if (isBlockedByEventFilter(event.EventDataType, hashedEventName, hashedEventType, forwarder)) {
|
|
6683
6882
|
continue;
|
|
6684
|
-
} else if (event.EventDataType === Types.MessageType.Commerce && inFilteredList(mpInstance._Store.activeForwarders[i].eventTypeFilters, hashedEventType)) {
|
|
6685
|
-
continue;
|
|
6686
|
-
} else if (event.EventDataType === Types.MessageType.PageView && inFilteredList(mpInstance._Store.activeForwarders[i].screenNameFilters, hashedEventName)) {
|
|
6687
|
-
continue;
|
|
6688
|
-
}
|
|
6689
|
-
|
|
6690
|
-
// Check attribute filtering rules
|
|
6691
|
-
if (clonedEvent.EventAttributes) {
|
|
6692
|
-
if (event.EventDataType === Types.MessageType.PageEvent) {
|
|
6693
|
-
filterAttributes(clonedEvent, mpInstance._Store.activeForwarders[i].attributeFilters);
|
|
6694
|
-
} else if (event.EventDataType === Types.MessageType.PageView) {
|
|
6695
|
-
filterAttributes(clonedEvent, mpInstance._Store.activeForwarders[i].screenAttributeFilters);
|
|
6696
|
-
}
|
|
6697
6883
|
}
|
|
6884
|
+
clonedEvent.EventAttributes = filterEventAttributes(event.EventDataType, event.EventCategory, event.EventName, clonedEvent.EventAttributes, forwarder);
|
|
6698
6885
|
|
|
6699
6886
|
// Check user identity filtering rules
|
|
6700
|
-
filterUserIdentities(clonedEvent,
|
|
6887
|
+
clonedEvent.UserIdentities = filterUserIdentities(clonedEvent.UserIdentities, forwarder.userIdentityFilters);
|
|
6701
6888
|
|
|
6702
6889
|
// Check user attribute filtering rules
|
|
6703
|
-
clonedEvent.UserAttributes =
|
|
6704
|
-
if (
|
|
6705
|
-
mpInstance.Logger.verbose('Sending message to forwarder: ' +
|
|
6706
|
-
var result =
|
|
6890
|
+
clonedEvent.UserAttributes = KitFilterHelper.filterUserAttributes(clonedEvent.UserAttributes, forwarder.userAttributeFilters);
|
|
6891
|
+
if (forwarder.process) {
|
|
6892
|
+
mpInstance.Logger.verbose('Sending message to forwarder: ' + forwarder.name);
|
|
6893
|
+
var result = forwarder.process(clonedEvent);
|
|
6707
6894
|
if (result) {
|
|
6708
6895
|
mpInstance.Logger.verbose(result);
|
|
6709
6896
|
}
|
|
@@ -6711,6 +6898,54 @@ var mParticle = (function () {
|
|
|
6711
6898
|
}
|
|
6712
6899
|
}
|
|
6713
6900
|
};
|
|
6901
|
+
this.sendBatchToForwarders = function (batch) {
|
|
6902
|
+
if (mpInstance._Store.webviewBridgeEnabled || !mpInstance._Store.activeForwarders) {
|
|
6903
|
+
return;
|
|
6904
|
+
}
|
|
6905
|
+
var _iterator = _createForOfIteratorHelper(mpInstance._Store.activeForwarders),
|
|
6906
|
+
_step;
|
|
6907
|
+
try {
|
|
6908
|
+
var _loop = function _loop() {
|
|
6909
|
+
var forwarder = _step.value;
|
|
6910
|
+
if (!forwarder.processBatch) {
|
|
6911
|
+
return 0; // continue
|
|
6912
|
+
}
|
|
6913
|
+
try {
|
|
6914
|
+
var batchCopy = extend(true, {}, batch);
|
|
6915
|
+
if (batchCopy.events) {
|
|
6916
|
+
batchCopy.events = batchCopy.events.filter(function (batchEvent) {
|
|
6917
|
+
return isBatchEventAllowed(batchEvent, forwarder);
|
|
6918
|
+
});
|
|
6919
|
+
batchCopy.events.forEach(function (batchEvent) {
|
|
6920
|
+
filterBatchEventAttributes(batchEvent, forwarder);
|
|
6921
|
+
});
|
|
6922
|
+
}
|
|
6923
|
+
batchCopy.user_identities = filterBatchIdentities(batchCopy.user_identities, forwarder.userIdentityFilters);
|
|
6924
|
+
if (batchCopy.user_attributes) {
|
|
6925
|
+
batchCopy.user_attributes = KitFilterHelper.filterUserAttributes(batchCopy.user_attributes, forwarder.userAttributeFilters);
|
|
6926
|
+
}
|
|
6927
|
+
if (!batchCopy.events || batchCopy.events.length === 0) {
|
|
6928
|
+
return 0; // continue
|
|
6929
|
+
}
|
|
6930
|
+
var result = forwarder.processBatch(batchCopy);
|
|
6931
|
+
if (result) {
|
|
6932
|
+
mpInstance.Logger.verbose(result);
|
|
6933
|
+
}
|
|
6934
|
+
} catch (e) {
|
|
6935
|
+
mpInstance.Logger.verbose(e);
|
|
6936
|
+
}
|
|
6937
|
+
},
|
|
6938
|
+
_ret;
|
|
6939
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
6940
|
+
_ret = _loop();
|
|
6941
|
+
if (_ret === 0) continue;
|
|
6942
|
+
}
|
|
6943
|
+
} catch (err) {
|
|
6944
|
+
_iterator.e(err);
|
|
6945
|
+
} finally {
|
|
6946
|
+
_iterator.f();
|
|
6947
|
+
}
|
|
6948
|
+
};
|
|
6714
6949
|
this.handleForwarderUserAttributes = function (functionNameKey, key, value) {
|
|
6715
6950
|
if (kitBlocker && kitBlocker.isAttributeKeyBlocked(key) || !mpInstance._Store.activeForwarders.length) {
|
|
6716
6951
|
return;
|
|
@@ -7200,7 +7435,7 @@ var mParticle = (function () {
|
|
|
7200
7435
|
mpInstance._Store.sessionStartDate = null;
|
|
7201
7436
|
}
|
|
7202
7437
|
uploadObject.Timestamp = mpInstance._Store.dateLastEventSent.getTime();
|
|
7203
|
-
return
|
|
7438
|
+
return extend({}, eventObject, uploadObject);
|
|
7204
7439
|
}
|
|
7205
7440
|
return null;
|
|
7206
7441
|
};
|
|
@@ -10019,113 +10254,105 @@ var mParticle = (function () {
|
|
|
10019
10254
|
* });
|
|
10020
10255
|
*/
|
|
10021
10256
|
RoktManager.prototype.selectPlacements = function (options) {
|
|
10022
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j
|
|
10257
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
10023
10258
|
return __awaiter(this, void 0, void 0, function () {
|
|
10024
|
-
var attributes, sandboxValue, mappedAttributes, attributesToLog,
|
|
10259
|
+
var attributes, sandboxValue, mappedAttributes, attributesToLog, currentUserIdentities, currentEmail, newEmail, currentHashedEmail, newHashedEmail, isValidHashedEmailIdentityType, emailChanged, hashedEmailChanged, newIdentities, msg, msg, errorMessage, finalUserIdentities, enrichedAttributes, hashedEmail, enrichedOptions;
|
|
10025
10260
|
var _this = this;
|
|
10026
|
-
return __generator(this, function (
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
|
|
10030
|
-
|
|
10031
|
-
|
|
10032
|
-
|
|
10033
|
-
|
|
10034
|
-
|
|
10035
|
-
|
|
10036
|
-
|
|
10037
|
-
attributes =
|
|
10038
|
-
|
|
10039
|
-
|
|
10040
|
-
|
|
10041
|
-
|
|
10042
|
-
|
|
10043
|
-
|
|
10044
|
-
|
|
10045
|
-
|
|
10046
|
-
|
|
10047
|
-
|
|
10048
|
-
currentHashedEmail =
|
|
10049
|
-
newHashedEmail =
|
|
10050
|
-
|
|
10051
|
-
|
|
10052
|
-
|
|
10053
|
-
|
|
10054
|
-
|
|
10055
|
-
|
|
10056
|
-
|
|
10057
|
-
|
|
10058
|
-
if (emailChanged) {
|
|
10059
|
-
newIdentities_1.email = newEmail;
|
|
10060
|
-
if (newEmail) {
|
|
10061
|
-
msg = 'Email mismatch detected. Current email differs from email passed to selectPlacements call. Proceeding to call identify with email from selectPlacements call. Please verify your implementation.';
|
|
10062
|
-
this.logger.warning(msg);
|
|
10063
|
-
(_h = this.errorReporter) === null || _h === void 0 ? void 0 : _h.report({
|
|
10064
|
-
message: msg,
|
|
10065
|
-
code: ErrorCodes.IDENTITY_MISMATCH,
|
|
10066
|
-
severity: WSDKErrorSeverity.WARNING
|
|
10067
|
-
});
|
|
10068
|
-
}
|
|
10069
|
-
}
|
|
10070
|
-
if (hashedEmailChanged) {
|
|
10071
|
-
newIdentities_1[this.mappedEmailShaIdentityType] = newHashedEmail;
|
|
10072
|
-
msg = 'emailsha256 mismatch detected. Current mParticle hashedEmail differs from hashedEmail passed to selectPlacements call. Proceeding to call identify with hashedEmail from selectPlacements call. Please verify your implementation.';
|
|
10261
|
+
return __generator(this, function (_k) {
|
|
10262
|
+
(_a = this.captureTiming) === null || _a === void 0 ? void 0 : _a.call(this, PerformanceMarkType.JointSdkSelectPlacements);
|
|
10263
|
+
// Queue if kit isn't ready OR if identity is in flight
|
|
10264
|
+
if (!this.isReady() || ((_b = this.store) === null || _b === void 0 ? void 0 : _b.identityCallInFlight)) {
|
|
10265
|
+
return [2 /*return*/, this.deferredCall('selectPlacements', options)];
|
|
10266
|
+
}
|
|
10267
|
+
try {
|
|
10268
|
+
attributes = options.attributes;
|
|
10269
|
+
sandboxValue = (attributes === null || attributes === void 0 ? void 0 : attributes.sandbox) || null;
|
|
10270
|
+
mappedAttributes = this.mapPlacementAttributes(attributes, this.placementAttributesMapping);
|
|
10271
|
+
if ((_c = this.logger) === null || _c === void 0 ? void 0 : _c.isVerbose()) {
|
|
10272
|
+
attributesToLog = obfuscateDevData(attributes, (_e = (_d = this.store) === null || _d === void 0 ? void 0 : _d.SDKConfig) === null || _e === void 0 ? void 0 : _e.isDevelopmentMode);
|
|
10273
|
+
this.logger.verbose("mParticle.Rokt selectPlacements called with attributes:\n".concat(JSON.stringify(attributesToLog, null, 2)));
|
|
10274
|
+
}
|
|
10275
|
+
this.currentUser = this.identityService.getCurrentUser();
|
|
10276
|
+
currentUserIdentities = ((_g = (_f = this.currentUser) === null || _f === void 0 ? void 0 : _f.getUserIdentities()) === null || _g === void 0 ? void 0 : _g.userIdentities) || {};
|
|
10277
|
+
currentEmail = currentUserIdentities.email;
|
|
10278
|
+
newEmail = mappedAttributes.email;
|
|
10279
|
+
currentHashedEmail = void 0;
|
|
10280
|
+
newHashedEmail = void 0;
|
|
10281
|
+
isValidHashedEmailIdentityType = this.mappedEmailShaIdentityType && IdentityType.getIdentityType(this.mappedEmailShaIdentityType) !== false;
|
|
10282
|
+
if (isValidHashedEmailIdentityType) {
|
|
10283
|
+
currentHashedEmail = currentUserIdentities[this.mappedEmailShaIdentityType];
|
|
10284
|
+
newHashedEmail = mappedAttributes['emailsha256'] || mappedAttributes[this.mappedEmailShaIdentityType] || undefined;
|
|
10285
|
+
}
|
|
10286
|
+
emailChanged = this.hasIdentityChanged(currentEmail, newEmail);
|
|
10287
|
+
hashedEmailChanged = this.hasIdentityChanged(currentHashedEmail, newHashedEmail);
|
|
10288
|
+
newIdentities = {};
|
|
10289
|
+
if (emailChanged) {
|
|
10290
|
+
newIdentities.email = newEmail;
|
|
10291
|
+
if (newEmail) {
|
|
10292
|
+
msg = 'Email mismatch detected. Current email differs from email passed to selectPlacements call. Proceeding to call identify with email from selectPlacements call. Please verify your implementation.';
|
|
10073
10293
|
this.logger.warning(msg);
|
|
10074
|
-
(
|
|
10294
|
+
(_h = this.errorReporter) === null || _h === void 0 ? void 0 : _h.report({
|
|
10075
10295
|
message: msg,
|
|
10076
10296
|
code: ErrorCodes.IDENTITY_MISMATCH,
|
|
10077
10297
|
severity: WSDKErrorSeverity.WARNING
|
|
10078
10298
|
});
|
|
10079
10299
|
}
|
|
10080
|
-
|
|
10081
|
-
|
|
10082
|
-
|
|
10083
|
-
|
|
10084
|
-
|
|
10085
|
-
|
|
10086
|
-
|
|
10087
|
-
|
|
10088
|
-
|
|
10300
|
+
}
|
|
10301
|
+
if (hashedEmailChanged) {
|
|
10302
|
+
newIdentities[this.mappedEmailShaIdentityType] = newHashedEmail;
|
|
10303
|
+
msg = 'emailsha256 mismatch detected. Current mParticle hashedEmail differs from hashedEmail passed to selectPlacements call. Proceeding to call identify with hashedEmail from selectPlacements call. Please verify your implementation.';
|
|
10304
|
+
this.logger.warning(msg);
|
|
10305
|
+
(_j = this.errorReporter) === null || _j === void 0 ? void 0 : _j.report({
|
|
10306
|
+
message: msg,
|
|
10307
|
+
code: ErrorCodes.IDENTITY_MISMATCH,
|
|
10308
|
+
severity: WSDKErrorSeverity.WARNING
|
|
10309
|
+
});
|
|
10310
|
+
}
|
|
10311
|
+
if (!isEmpty(newIdentities)) {
|
|
10312
|
+
// Fire-and-forget identify — best-effort, does not block selectPlacements
|
|
10313
|
+
try {
|
|
10314
|
+
this.identityService.identify({
|
|
10315
|
+
userIdentities: __assign(__assign({}, currentUserIdentities), newIdentities)
|
|
10316
|
+
}, function (result) {
|
|
10317
|
+
var httpCode = Number(result === null || result === void 0 ? void 0 : result.httpCode);
|
|
10318
|
+
if (httpCode && (httpCode >= 400 || httpCode < 0)) {
|
|
10319
|
+
_this.logger.error('Background identify failed with HTTP ' + httpCode);
|
|
10320
|
+
}
|
|
10321
|
+
// Drain any selectPlacements calls that were deferred while
|
|
10322
|
+
// identify was in-flight. By the time this callback fires,
|
|
10323
|
+
// identityCallInFlight has already been reset to false.
|
|
10324
|
+
_this.processMessageQueue();
|
|
10089
10325
|
});
|
|
10090
|
-
})
|
|
10091
|
-
|
|
10092
|
-
|
|
10093
|
-
return [3 /*break*/, 5];
|
|
10094
|
-
case 4:
|
|
10095
|
-
error_1 = _m.sent();
|
|
10096
|
-
errorMessage = error_1 instanceof Error ? error_1.message : JSON.stringify(error_1);
|
|
10097
|
-
this.logger.error('Failed to identify user with updated identities: ' + errorMessage);
|
|
10098
|
-
return [3 /*break*/, 5];
|
|
10099
|
-
case 5:
|
|
10100
|
-
// Refresh current user identities to ensure we have the latest values before building enrichedAttributes
|
|
10101
|
-
this.currentUser = this.identityService.getCurrentUser();
|
|
10102
|
-
finalUserIdentities = ((_l = (_k = this.currentUser) === null || _k === void 0 ? void 0 : _k.getUserIdentities()) === null || _l === void 0 ? void 0 : _l.userIdentities) || {};
|
|
10103
|
-
this.setUserAttributes(mappedAttributes);
|
|
10104
|
-
enrichedAttributes = __assign(__assign({}, mappedAttributes), sandboxValue !== null ? {
|
|
10105
|
-
sandbox: sandboxValue
|
|
10106
|
-
} : {});
|
|
10107
|
-
// Propagate email from current user identities if not already in attributes
|
|
10108
|
-
if (finalUserIdentities.email && !enrichedAttributes.email) {
|
|
10109
|
-
enrichedAttributes.email = finalUserIdentities.email;
|
|
10326
|
+
} catch (error) {
|
|
10327
|
+
errorMessage = error instanceof Error ? error.message : JSON.stringify(error);
|
|
10328
|
+
this.logger.error('Background identify threw an error: ' + errorMessage);
|
|
10110
10329
|
}
|
|
10111
|
-
|
|
10112
|
-
|
|
10113
|
-
|
|
10114
|
-
|
|
10115
|
-
|
|
10116
|
-
|
|
10330
|
+
}
|
|
10331
|
+
finalUserIdentities = __assign(__assign({}, currentUserIdentities), newIdentities);
|
|
10332
|
+
this.setUserAttributes(mappedAttributes);
|
|
10333
|
+
enrichedAttributes = __assign(__assign({}, mappedAttributes), sandboxValue !== null ? {
|
|
10334
|
+
sandbox: sandboxValue
|
|
10335
|
+
} : {});
|
|
10336
|
+
// Propagate email from current user identities if not already in attributes
|
|
10337
|
+
if (finalUserIdentities.email && !enrichedAttributes.email) {
|
|
10338
|
+
enrichedAttributes.email = finalUserIdentities.email;
|
|
10339
|
+
}
|
|
10340
|
+
// Propagate emailsha256 from current user identities if not already in attributes
|
|
10341
|
+
if (isValidHashedEmailIdentityType) {
|
|
10342
|
+
hashedEmail = finalUserIdentities[this.mappedEmailShaIdentityType];
|
|
10343
|
+
if (hashedEmail && !enrichedAttributes.emailsha256 && !enrichedAttributes[this.mappedEmailShaIdentityType]) {
|
|
10344
|
+
enrichedAttributes.emailsha256 = hashedEmail;
|
|
10117
10345
|
}
|
|
10118
|
-
|
|
10119
|
-
|
|
10120
|
-
|
|
10121
|
-
|
|
10122
|
-
|
|
10123
|
-
|
|
10124
|
-
|
|
10125
|
-
|
|
10126
|
-
case 7:
|
|
10127
|
-
return [2 /*return*/];
|
|
10346
|
+
}
|
|
10347
|
+
this.filters.filteredUser = this.currentUser || this.filters.filteredUser || null;
|
|
10348
|
+
enrichedOptions = __assign(__assign({}, options), {
|
|
10349
|
+
attributes: enrichedAttributes
|
|
10350
|
+
});
|
|
10351
|
+
return [2 /*return*/, this.kit.selectPlacements(enrichedOptions)];
|
|
10352
|
+
} catch (error) {
|
|
10353
|
+
return [2 /*return*/, Promise.reject(error instanceof Error ? error : new Error('Unknown error occurred'))];
|
|
10128
10354
|
}
|
|
10355
|
+
return [2 /*return*/];
|
|
10129
10356
|
});
|
|
10130
10357
|
});
|
|
10131
10358
|
};
|
|
@@ -10140,7 +10367,7 @@ var mParticle = (function () {
|
|
|
10140
10367
|
*/
|
|
10141
10368
|
RoktManager.prototype.hashAttributes = function (attributes) {
|
|
10142
10369
|
return __awaiter(this, void 0, void 0, function () {
|
|
10143
|
-
var keys, hashPromises, results, hashedAttributes, _i, results_1, _a, key, attributeValue, hashedValue,
|
|
10370
|
+
var keys, hashPromises, results, hashedAttributes, _i, results_1, _a, key, attributeValue, hashedValue, error_1, errorMessage;
|
|
10144
10371
|
var _this = this;
|
|
10145
10372
|
return __generator(this, function (_b) {
|
|
10146
10373
|
switch (_b.label) {
|
|
@@ -10185,8 +10412,8 @@ var mParticle = (function () {
|
|
|
10185
10412
|
}
|
|
10186
10413
|
return [2 /*return*/, hashedAttributes];
|
|
10187
10414
|
case 2:
|
|
10188
|
-
|
|
10189
|
-
errorMessage =
|
|
10415
|
+
error_1 = _b.sent();
|
|
10416
|
+
errorMessage = error_1 instanceof Error ? error_1.message : String(error_1);
|
|
10190
10417
|
this.logger.error("Failed to hashAttributes, returning an empty object: ".concat(errorMessage));
|
|
10191
10418
|
return [2 /*return*/, {}];
|
|
10192
10419
|
case 3:
|
|
@@ -10227,7 +10454,7 @@ var mParticle = (function () {
|
|
|
10227
10454
|
*/
|
|
10228
10455
|
RoktManager.prototype.hashSha256 = function (attribute) {
|
|
10229
10456
|
return __awaiter(this, void 0, void 0, function () {
|
|
10230
|
-
var normalizedValue,
|
|
10457
|
+
var normalizedValue, error_2, errorMessage;
|
|
10231
10458
|
return __generator(this, function (_a) {
|
|
10232
10459
|
switch (_a.label) {
|
|
10233
10460
|
case 0:
|
|
@@ -10243,8 +10470,8 @@ var mParticle = (function () {
|
|
|
10243
10470
|
case 2:
|
|
10244
10471
|
return [2 /*return*/, _a.sent()];
|
|
10245
10472
|
case 3:
|
|
10246
|
-
|
|
10247
|
-
errorMessage =
|
|
10473
|
+
error_2 = _a.sent();
|
|
10474
|
+
errorMessage = error_2 instanceof Error ? error_2.message : String(error_2);
|
|
10248
10475
|
this.logger.error("Failed to hashSha256, returning undefined: ".concat(errorMessage));
|
|
10249
10476
|
return [2 /*return*/, undefined];
|
|
10250
10477
|
case 4:
|
|
@@ -10605,7 +10832,7 @@ var mParticle = (function () {
|
|
|
10605
10832
|
if (!config.hasOwnProperty('requestConfig') || config.requestConfig) {
|
|
10606
10833
|
var configApiClient = new ConfigAPIClient(apiKey, config, this);
|
|
10607
10834
|
configApiClient.getSDKConfiguration().then(function (result) {
|
|
10608
|
-
var mergedConfig =
|
|
10835
|
+
var mergedConfig = extend({}, config, result);
|
|
10609
10836
|
completeSDKInitialization(apiKey, mergedConfig, _this);
|
|
10610
10837
|
});
|
|
10611
10838
|
} else {
|
|
@@ -11731,7 +11958,7 @@ var mParticle = (function () {
|
|
|
11731
11958
|
generateUniqueId: function generateUniqueId() {
|
|
11732
11959
|
return 'mockId';
|
|
11733
11960
|
},
|
|
11734
|
-
extend:
|
|
11961
|
+
extend: extend,
|
|
11735
11962
|
createServiceUrl: mockFunction,
|
|
11736
11963
|
parseNumber: mockFunction,
|
|
11737
11964
|
isObject: mockFunction,
|