@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
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
SDKGDPRConsentState,
|
|
12
12
|
SDKCCPAConsentState,
|
|
13
13
|
} from './consent';
|
|
14
|
-
import Types from './types';
|
|
14
|
+
import Types, { getEventCategoryFromCustomEventType } from './types';
|
|
15
15
|
import { Dictionary, isEmpty } from './utils';
|
|
16
16
|
import { ISDKUserIdentity } from './identity-user-interfaces';
|
|
17
17
|
import { SDKIdentityTypeEnum } from './identity.interfaces';
|
|
@@ -795,3 +795,57 @@ export function convertUserIdentityTypeToServerIdentityType(
|
|
|
795
795
|
return EventsApi.IdentityTypeEnum.phoneNumber3;
|
|
796
796
|
}
|
|
797
797
|
}
|
|
798
|
+
|
|
799
|
+
export function getEventNameFromBatchEvent(
|
|
800
|
+
batchEvent: EventsApi.BaseEvent
|
|
801
|
+
): string {
|
|
802
|
+
if (!batchEvent || !(batchEvent as any).data) {
|
|
803
|
+
return '';
|
|
804
|
+
}
|
|
805
|
+
if ((batchEvent as any).event_type === 'screen_view') {
|
|
806
|
+
return (batchEvent as any).data.screen_name || '';
|
|
807
|
+
}
|
|
808
|
+
return (batchEvent as any).data.event_name || '';
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
export function getEventCategoryFromBatchEvent(
|
|
812
|
+
batchEvent: EventsApi.BaseEvent
|
|
813
|
+
): number {
|
|
814
|
+
if (!batchEvent || !(batchEvent as any).data) {
|
|
815
|
+
return Types.EventType.Unknown;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
const data = (batchEvent as any).data;
|
|
819
|
+
|
|
820
|
+
if (data.custom_event_type) {
|
|
821
|
+
return getEventCategoryFromCustomEventType(data.custom_event_type);
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
if ((batchEvent as any).event_type === 'commerce_event') {
|
|
825
|
+
return getCommerceEventCategory(data);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
return Types.EventType.Unknown;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
function getCommerceEventCategory(data: any): number {
|
|
832
|
+
if (data.product_action && data.product_action.action) {
|
|
833
|
+
return getEventCategoryFromCustomEventType(
|
|
834
|
+
data.product_action.action
|
|
835
|
+
);
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
const promoAction = data.promotion_action && data.promotion_action.action;
|
|
839
|
+
if (promoAction === 'view') {
|
|
840
|
+
return Types.CommerceEventType.PromotionView;
|
|
841
|
+
}
|
|
842
|
+
if (promoAction === 'click') {
|
|
843
|
+
return Types.CommerceEventType.PromotionClick;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
if (data.product_impressions) {
|
|
847
|
+
return Types.CommerceEventType.ProductImpression;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
return Types.EventType.Unknown;
|
|
851
|
+
}
|
package/src/serverModel.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
parseStringOrNumber,
|
|
17
17
|
Dictionary,
|
|
18
18
|
isValidCustomFlagProperty,
|
|
19
|
+
extend,
|
|
19
20
|
} from './utils';
|
|
20
21
|
import { IntegrationAttributes, ServerSettings } from './store';
|
|
21
22
|
import { MPID } from '@mparticle/web-sdk';
|
|
@@ -379,7 +380,7 @@ export default function ServerModel(
|
|
|
379
380
|
|
|
380
381
|
uploadObject.Timestamp = mpInstance._Store.dateLastEventSent.getTime();
|
|
381
382
|
|
|
382
|
-
return
|
|
383
|
+
return extend({}, eventObject, uploadObject);
|
|
383
384
|
}
|
|
384
385
|
|
|
385
386
|
return null;
|
package/src/store.ts
CHANGED
|
@@ -28,9 +28,8 @@ import {
|
|
|
28
28
|
moveElementToEnd,
|
|
29
29
|
parseNumber,
|
|
30
30
|
returnConvertedBoolean,
|
|
31
|
-
isValidAttributeValue,
|
|
32
|
-
findKeyInObject,
|
|
33
31
|
AttributeValue,
|
|
32
|
+
extend,
|
|
34
33
|
} from './utils';
|
|
35
34
|
import { IMinifiedConsentJSONObject, SDKConsentState } from './consent';
|
|
36
35
|
import { ConfiguredKit, MPForwarder, UnregisteredKit } from './forwarders.interfaces';
|
|
@@ -650,7 +649,7 @@ export default function Store(
|
|
|
650
649
|
this.syncPersistenceData = () => {
|
|
651
650
|
const persistenceData = mpInstance._Persistence.getPersistence();
|
|
652
651
|
|
|
653
|
-
this.persistenceData =
|
|
652
|
+
this.persistenceData = extend(
|
|
654
653
|
{},
|
|
655
654
|
this.persistenceData,
|
|
656
655
|
persistenceData,
|
package/src/types.ts
CHANGED
|
@@ -397,6 +397,140 @@ export const PerformanceMarkType = {
|
|
|
397
397
|
JointSdkRoktKitInit: 'mp:jointSdkRoktKitInit' as const,
|
|
398
398
|
}
|
|
399
399
|
|
|
400
|
+
export function getMessageTypeFromEventType(
|
|
401
|
+
eventType: string
|
|
402
|
+
): number {
|
|
403
|
+
switch (eventType) {
|
|
404
|
+
case 'custom_event':
|
|
405
|
+
return MessageType.PageEvent;
|
|
406
|
+
case 'screen_view':
|
|
407
|
+
return MessageType.PageView;
|
|
408
|
+
case 'commerce_event':
|
|
409
|
+
return MessageType.Commerce;
|
|
410
|
+
case 'session_start':
|
|
411
|
+
return MessageType.SessionStart;
|
|
412
|
+
case 'session_end':
|
|
413
|
+
return MessageType.SessionEnd;
|
|
414
|
+
case 'crash_report':
|
|
415
|
+
return MessageType.CrashReport;
|
|
416
|
+
case 'opt_out':
|
|
417
|
+
return MessageType.OptOut;
|
|
418
|
+
case 'application_state_transition':
|
|
419
|
+
return MessageType.AppStateTransition;
|
|
420
|
+
case 'user_attribute_change':
|
|
421
|
+
return MessageType.UserAttributeChange;
|
|
422
|
+
case 'user_identity_change':
|
|
423
|
+
return MessageType.UserIdentityChange;
|
|
424
|
+
default:
|
|
425
|
+
return -1;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
export function getEventCategoryFromCustomEventType(
|
|
430
|
+
customEventType: string
|
|
431
|
+
): number {
|
|
432
|
+
switch (customEventType) {
|
|
433
|
+
case 'navigation':
|
|
434
|
+
return EventType.Navigation;
|
|
435
|
+
case 'location':
|
|
436
|
+
return EventType.Location;
|
|
437
|
+
case 'search':
|
|
438
|
+
return EventType.Search;
|
|
439
|
+
case 'transaction':
|
|
440
|
+
return EventType.Transaction;
|
|
441
|
+
case 'user_content':
|
|
442
|
+
return EventType.UserContent;
|
|
443
|
+
case 'user_preference':
|
|
444
|
+
return EventType.UserPreference;
|
|
445
|
+
case 'social':
|
|
446
|
+
return EventType.Social;
|
|
447
|
+
case 'other':
|
|
448
|
+
return EventType.Other;
|
|
449
|
+
case 'media':
|
|
450
|
+
return EventType.Media;
|
|
451
|
+
case 'add_to_cart':
|
|
452
|
+
return CommerceEventType.ProductAddToCart;
|
|
453
|
+
case 'remove_from_cart':
|
|
454
|
+
return CommerceEventType.ProductRemoveFromCart;
|
|
455
|
+
case 'checkout':
|
|
456
|
+
return CommerceEventType.ProductCheckout;
|
|
457
|
+
case 'checkout_option':
|
|
458
|
+
return CommerceEventType.ProductCheckoutOption;
|
|
459
|
+
case 'click':
|
|
460
|
+
return CommerceEventType.ProductClick;
|
|
461
|
+
case 'view_detail':
|
|
462
|
+
return CommerceEventType.ProductViewDetail;
|
|
463
|
+
case 'purchase':
|
|
464
|
+
return CommerceEventType.ProductPurchase;
|
|
465
|
+
case 'refund':
|
|
466
|
+
return CommerceEventType.ProductRefund;
|
|
467
|
+
case 'promotion_view':
|
|
468
|
+
return CommerceEventType.PromotionView;
|
|
469
|
+
case 'promotion_click':
|
|
470
|
+
return CommerceEventType.PromotionClick;
|
|
471
|
+
case 'add_to_wishlist':
|
|
472
|
+
return CommerceEventType.ProductAddToWishlist;
|
|
473
|
+
case 'remove_from_wishlist':
|
|
474
|
+
case 'remove_from_wish_list':
|
|
475
|
+
return CommerceEventType.ProductRemoveFromWishlist;
|
|
476
|
+
case 'impression':
|
|
477
|
+
return CommerceEventType.ProductImpression;
|
|
478
|
+
default:
|
|
479
|
+
return EventType.Unknown;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
export function getIdentityTypeFromBatchKey(
|
|
484
|
+
key: string
|
|
485
|
+
): number {
|
|
486
|
+
switch (key) {
|
|
487
|
+
case 'other':
|
|
488
|
+
return IdentityType.Other;
|
|
489
|
+
case 'customer_id':
|
|
490
|
+
return IdentityType.CustomerId;
|
|
491
|
+
case 'facebook':
|
|
492
|
+
return IdentityType.Facebook;
|
|
493
|
+
case 'twitter':
|
|
494
|
+
return IdentityType.Twitter;
|
|
495
|
+
case 'google':
|
|
496
|
+
return IdentityType.Google;
|
|
497
|
+
case 'microsoft':
|
|
498
|
+
return IdentityType.Microsoft;
|
|
499
|
+
case 'yahoo':
|
|
500
|
+
return IdentityType.Yahoo;
|
|
501
|
+
case 'email':
|
|
502
|
+
return IdentityType.Email;
|
|
503
|
+
case 'facebook_custom_audience_id':
|
|
504
|
+
return IdentityType.FacebookCustomAudienceId;
|
|
505
|
+
case 'other_id_2':
|
|
506
|
+
return IdentityType.Other2;
|
|
507
|
+
case 'other_id_3':
|
|
508
|
+
return IdentityType.Other3;
|
|
509
|
+
case 'other_id_4':
|
|
510
|
+
return IdentityType.Other4;
|
|
511
|
+
case 'other_id_5':
|
|
512
|
+
return IdentityType.Other5;
|
|
513
|
+
case 'other_id_6':
|
|
514
|
+
return IdentityType.Other6;
|
|
515
|
+
case 'other_id_7':
|
|
516
|
+
return IdentityType.Other7;
|
|
517
|
+
case 'other_id_8':
|
|
518
|
+
return IdentityType.Other8;
|
|
519
|
+
case 'other_id_9':
|
|
520
|
+
return IdentityType.Other9;
|
|
521
|
+
case 'other_id_10':
|
|
522
|
+
return IdentityType.Other10;
|
|
523
|
+
case 'mobile_number':
|
|
524
|
+
return IdentityType.MobileNumber;
|
|
525
|
+
case 'phone_number_2':
|
|
526
|
+
return IdentityType.PhoneNumber2;
|
|
527
|
+
case 'phone_number_3':
|
|
528
|
+
return IdentityType.PhoneNumber3;
|
|
529
|
+
default:
|
|
530
|
+
return -1;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
|
|
400
534
|
export default {
|
|
401
535
|
MessageType,
|
|
402
536
|
EventType,
|
package/src/utils.ts
CHANGED
|
@@ -491,6 +491,140 @@ const obfuscateData = (value: any): any => {
|
|
|
491
491
|
const obfuscateDevData = (data: any, isDevelopmentMode?: boolean): any =>
|
|
492
492
|
isDevelopmentMode ? data : obfuscateData(data);
|
|
493
493
|
|
|
494
|
+
// Standalone version of jQuery.extend, from https://github.com/dansdom/extend
|
|
495
|
+
// https://go.mparticle.com/work/SQDSDKS-6047
|
|
496
|
+
function extend(...args: any[]): any {
|
|
497
|
+
const objectHelper = {
|
|
498
|
+
hasOwn: Object.prototype.hasOwnProperty,
|
|
499
|
+
class2type: {} as Record<string, string>,
|
|
500
|
+
type(obj: any): string {
|
|
501
|
+
return obj == null
|
|
502
|
+
? String(obj)
|
|
503
|
+
: objectHelper.class2type[
|
|
504
|
+
Object.prototype.toString.call(obj)
|
|
505
|
+
] || 'object';
|
|
506
|
+
},
|
|
507
|
+
isPlainObject(obj: any): boolean {
|
|
508
|
+
if (
|
|
509
|
+
!obj ||
|
|
510
|
+
objectHelper.type(obj) !== 'object' ||
|
|
511
|
+
obj.nodeType ||
|
|
512
|
+
objectHelper.isWindow(obj)
|
|
513
|
+
) {
|
|
514
|
+
return false;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
try {
|
|
518
|
+
if (
|
|
519
|
+
obj.constructor &&
|
|
520
|
+
!objectHelper.hasOwn.call(obj, 'constructor') &&
|
|
521
|
+
!objectHelper.hasOwn.call(
|
|
522
|
+
obj.constructor.prototype,
|
|
523
|
+
'isPrototypeOf'
|
|
524
|
+
)
|
|
525
|
+
) {
|
|
526
|
+
return false;
|
|
527
|
+
}
|
|
528
|
+
} catch (e) {
|
|
529
|
+
return false;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
let key;
|
|
533
|
+
for (key in obj) {
|
|
534
|
+
} // eslint-disable-line no-empty
|
|
535
|
+
|
|
536
|
+
return (
|
|
537
|
+
key === undefined || objectHelper.hasOwn.call(obj, key)
|
|
538
|
+
);
|
|
539
|
+
},
|
|
540
|
+
isArray:
|
|
541
|
+
Array.isArray ||
|
|
542
|
+
function(obj: any): boolean {
|
|
543
|
+
return objectHelper.type(obj) === 'array';
|
|
544
|
+
},
|
|
545
|
+
isFunction(obj: any): boolean {
|
|
546
|
+
return objectHelper.type(obj) === 'function';
|
|
547
|
+
},
|
|
548
|
+
isWindow(obj: any): boolean {
|
|
549
|
+
return obj != null && obj == obj.window;
|
|
550
|
+
},
|
|
551
|
+
};
|
|
552
|
+
|
|
553
|
+
let options: any,
|
|
554
|
+
name: string,
|
|
555
|
+
src: any,
|
|
556
|
+
copy: any,
|
|
557
|
+
copyIsArray: boolean,
|
|
558
|
+
clone: any,
|
|
559
|
+
target = args[0] || {},
|
|
560
|
+
i = 1,
|
|
561
|
+
deep = false;
|
|
562
|
+
const length = args.length;
|
|
563
|
+
|
|
564
|
+
if (typeof target === 'boolean') {
|
|
565
|
+
deep = target;
|
|
566
|
+
target = args[1] || {};
|
|
567
|
+
i = 2;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
if (typeof target !== 'object' && !objectHelper.isFunction(target)) {
|
|
571
|
+
target = {};
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
if (length === i) {
|
|
575
|
+
target = {};
|
|
576
|
+
--i;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
for (; i < length; i++) {
|
|
580
|
+
if ((options = args[i]) != null) {
|
|
581
|
+
for (name in options) {
|
|
582
|
+
if (
|
|
583
|
+
name === '__proto__' ||
|
|
584
|
+
name === 'constructor' ||
|
|
585
|
+
name === 'prototype'
|
|
586
|
+
) {
|
|
587
|
+
continue;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
if (!Object.prototype.hasOwnProperty.call(options, name)) {
|
|
591
|
+
continue;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
src = target[name];
|
|
595
|
+
copy = options[name];
|
|
596
|
+
|
|
597
|
+
if (target === copy) {
|
|
598
|
+
continue;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
if (
|
|
602
|
+
deep &&
|
|
603
|
+
copy &&
|
|
604
|
+
(objectHelper.isPlainObject(copy) ||
|
|
605
|
+
(copyIsArray = objectHelper.isArray(copy)))
|
|
606
|
+
) {
|
|
607
|
+
if (copyIsArray) {
|
|
608
|
+
copyIsArray = false;
|
|
609
|
+
clone = src && objectHelper.isArray(src) ? src : [];
|
|
610
|
+
} else {
|
|
611
|
+
clone =
|
|
612
|
+
src && objectHelper.isPlainObject(src)
|
|
613
|
+
? src
|
|
614
|
+
: {};
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
target[name] = extend(deep, clone, copy);
|
|
618
|
+
} else if (copy !== undefined) {
|
|
619
|
+
target[name] = copy;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
return target;
|
|
626
|
+
}
|
|
627
|
+
|
|
494
628
|
export {
|
|
495
629
|
createCookieString,
|
|
496
630
|
revertCookieString,
|
|
@@ -534,4 +668,5 @@ export {
|
|
|
534
668
|
getHref,
|
|
535
669
|
replaceMPID,
|
|
536
670
|
replaceAmpWithAmpersand,
|
|
671
|
+
extend,
|
|
537
672
|
};
|