@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.
@@ -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
+ }
@@ -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 mpInstance._Helpers.extend({}, eventObject, uploadObject);
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 = mpInstance._Helpers.extend(
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
  };