@mparticle/web-sdk 2.26.2 → 2.26.3

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.js CHANGED
@@ -244,574 +244,8 @@ var mParticle = (function () {
244
244
  return obj;
245
245
  }
246
246
 
247
- var EventTypeEnum;
248
- (function (EventTypeEnum) {
249
- EventTypeEnum[EventTypeEnum["Unknown"] = 0] = "Unknown";
250
- EventTypeEnum[EventTypeEnum["Navigation"] = 1] = "Navigation";
251
- EventTypeEnum[EventTypeEnum["Location"] = 2] = "Location";
252
- EventTypeEnum[EventTypeEnum["Search"] = 3] = "Search";
253
- EventTypeEnum[EventTypeEnum["Transaction"] = 4] = "Transaction";
254
- EventTypeEnum[EventTypeEnum["UserContent"] = 5] = "UserContent";
255
- EventTypeEnum[EventTypeEnum["UserPreference"] = 6] = "UserPreference";
256
- EventTypeEnum[EventTypeEnum["Social"] = 7] = "Social";
257
- EventTypeEnum[EventTypeEnum["Other"] = 8] = "Other";
258
- EventTypeEnum[EventTypeEnum["Media"] = 9] = "Media";
259
- })(EventTypeEnum || (EventTypeEnum = {}));
260
- // TODO: https://mparticle-eng.atlassian.net/browse/SQDSDKS-5403
261
- var MessageType$2;
262
- (function (MessageType) {
263
- MessageType[MessageType["SessionStart"] = 1] = "SessionStart";
264
- MessageType[MessageType["SessionEnd"] = 2] = "SessionEnd";
265
- MessageType[MessageType["PageView"] = 3] = "PageView";
266
- MessageType[MessageType["PageEvent"] = 4] = "PageEvent";
267
- MessageType[MessageType["CrashReport"] = 5] = "CrashReport";
268
- MessageType[MessageType["OptOut"] = 6] = "OptOut";
269
- MessageType[MessageType["AppStateTransition"] = 10] = "AppStateTransition";
270
- MessageType[MessageType["Profile"] = 14] = "Profile";
271
- MessageType[MessageType["Commerce"] = 16] = "Commerce";
272
- MessageType[MessageType["UserAttributeChange"] = 17] = "UserAttributeChange";
273
- MessageType[MessageType["UserIdentityChange"] = 18] = "UserIdentityChange";
274
- MessageType[MessageType["Media"] = 20] = "Media";
275
- })(MessageType$2 || (MessageType$2 = {}));
276
- var IdentityType$1;
277
- (function (IdentityType) {
278
- IdentityType[IdentityType["Other"] = 0] = "Other";
279
- IdentityType[IdentityType["CustomerId"] = 1] = "CustomerId";
280
- IdentityType[IdentityType["Facebook"] = 2] = "Facebook";
281
- IdentityType[IdentityType["Twitter"] = 3] = "Twitter";
282
- IdentityType[IdentityType["Google"] = 4] = "Google";
283
- IdentityType[IdentityType["Microsoft"] = 5] = "Microsoft";
284
- IdentityType[IdentityType["Yahoo"] = 6] = "Yahoo";
285
- IdentityType[IdentityType["Email"] = 7] = "Email";
286
- IdentityType[IdentityType["FacebookCustomAudienceId"] = 9] = "FacebookCustomAudienceId";
287
- IdentityType[IdentityType["Other2"] = 10] = "Other2";
288
- IdentityType[IdentityType["Other3"] = 11] = "Other3";
289
- IdentityType[IdentityType["Other4"] = 12] = "Other4";
290
- IdentityType[IdentityType["Other5"] = 13] = "Other5";
291
- IdentityType[IdentityType["Other6"] = 14] = "Other6";
292
- IdentityType[IdentityType["Other7"] = 15] = "Other7";
293
- IdentityType[IdentityType["Other8"] = 16] = "Other8";
294
- IdentityType[IdentityType["Other9"] = 17] = "Other9";
295
- IdentityType[IdentityType["Other10"] = 18] = "Other10";
296
- IdentityType[IdentityType["MobileNumber"] = 19] = "MobileNumber";
297
- IdentityType[IdentityType["PhoneNumber2"] = 20] = "PhoneNumber2";
298
- IdentityType[IdentityType["PhoneNumber3"] = 21] = "PhoneNumber3";
299
- })(IdentityType$1 || (IdentityType$1 = {}));
300
-
301
- /******************************************************************************
302
- Copyright (c) Microsoft Corporation.
303
-
304
- Permission to use, copy, modify, and/or distribute this software for any
305
- purpose with or without fee is hereby granted.
306
-
307
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
308
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
309
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
310
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
311
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
312
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
313
- PERFORMANCE OF THIS SOFTWARE.
314
- ***************************************************************************** */
315
- /* global Reflect, Promise, SuppressedError, Symbol */
316
-
317
- var extendStatics = function(d, b) {
318
- extendStatics = Object.setPrototypeOf ||
319
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
320
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
321
- return extendStatics(d, b);
322
- };
323
-
324
- function __extends(d, b) {
325
- if (typeof b !== "function" && b !== null)
326
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
327
- extendStatics(d, b);
328
- function __() { this.constructor = d; }
329
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
330
- }
331
-
332
- var __assign = function() {
333
- __assign = Object.assign || function __assign(t) {
334
- for (var s, i = 1, n = arguments.length; i < n; i++) {
335
- s = arguments[i];
336
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
337
- }
338
- return t;
339
- };
340
- return __assign.apply(this, arguments);
341
- };
342
-
343
- function __awaiter(thisArg, _arguments, P, generator) {
344
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
345
- return new (P || (P = Promise))(function (resolve, reject) {
346
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
347
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
348
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
349
- step((generator = generator.apply(thisArg, _arguments || [])).next());
350
- });
351
- }
352
-
353
- function __generator(thisArg, body) {
354
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
355
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
356
- function verb(n) { return function (v) { return step([n, v]); }; }
357
- function step(op) {
358
- if (f) throw new TypeError("Generator is already executing.");
359
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
360
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
361
- if (y = 0, t) op = [op[0] & 2, t.value];
362
- switch (op[0]) {
363
- case 0: case 1: t = op; break;
364
- case 4: _.label++; return { value: op[1], done: false };
365
- case 5: _.label++; y = op[1]; op = [0]; continue;
366
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
367
- default:
368
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
369
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
370
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
371
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
372
- if (t[2]) _.ops.pop();
373
- _.trys.pop(); continue;
374
- }
375
- op = body.call(thisArg, _);
376
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
377
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
378
- }
379
- }
380
-
381
- function __spreadArray(to, from, pack) {
382
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
383
- if (ar || !(i in from)) {
384
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
385
- ar[i] = from[i];
386
- }
387
- }
388
- return to.concat(ar || Array.prototype.slice.call(from));
389
- }
390
-
391
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
392
- var e = new Error(message);
393
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
394
- };
395
-
396
- var version = "2.26.2";
397
-
398
- var Constants = {
399
- sdkVersion: version,
400
- sdkVendor: 'mparticle',
401
- platform: 'web',
402
- Messages: {
403
- DeprecationMessages: {
404
- MethodIsDeprecatedPostfix: 'is a deprecated method and will be removed in future releases',
405
- AlternativeMethodPrefix: 'Please use the alternate method:'
406
- },
407
- ErrorMessages: {
408
- NoToken: 'A token must be specified.',
409
- EventNameInvalidType: 'Event name must be a valid string value.',
410
- EventDataInvalidType: 'Event data must be a valid object hash.',
411
- LoggingDisabled: 'Event logging is currently disabled.',
412
- CookieParseError: 'Could not parse cookie',
413
- EventEmpty: 'Event object is null or undefined, cancelling send',
414
- APIRequestEmpty: 'APIRequest is null or undefined, cancelling send',
415
- NoEventType: 'Event type must be specified.',
416
- TransactionIdRequired: 'Transaction ID is required',
417
- TransactionRequired: 'A transaction attributes object is required',
418
- PromotionIdRequired: 'Promotion ID is required',
419
- BadAttribute: 'Attribute value cannot be object or array',
420
- BadKey: 'Key value cannot be object or array',
421
- BadLogPurchase: 'Transaction attributes and a product are both required to log a purchase, https://docs.mparticle.com/?javascript#measuring-transactions',
422
- AudienceAPINotEnabled: 'Your workspace is not enabled to retrieve user audiences.'
423
- },
424
- InformationMessages: {
425
- CookieSearch: 'Searching for cookie',
426
- CookieFound: 'Cookie found, parsing values',
427
- CookieNotFound: 'Cookies not found',
428
- CookieSet: 'Setting cookie',
429
- CookieSync: 'Performing cookie sync',
430
- SendBegin: 'Starting to send event',
431
- SendIdentityBegin: 'Starting to send event to identity server',
432
- SendWindowsPhone: 'Sending event to Windows Phone container',
433
- SendIOS: 'Calling iOS path: ',
434
- SendAndroid: 'Calling Android JS interface method: ',
435
- SendHttp: 'Sending event to mParticle HTTP service',
436
- SendAliasHttp: 'Sending alias request to mParticle HTTP service',
437
- SendIdentityHttp: 'Sending event to mParticle HTTP service',
438
- StartingNewSession: 'Starting new Session',
439
- StartingLogEvent: 'Starting to log event',
440
- StartingLogOptOut: 'Starting to log user opt in/out',
441
- StartingEndSession: 'Starting to end session',
442
- StartingInitialization: 'Starting to initialize',
443
- StartingLogCommerceEvent: 'Starting to log commerce event',
444
- StartingAliasRequest: 'Starting to Alias MPIDs',
445
- LoadingConfig: 'Loading configuration options',
446
- AbandonLogEvent: 'Cannot log event, logging disabled or developer token not set',
447
- AbandonAliasUsers: 'Cannot Alias Users, logging disabled or developer token not set',
448
- AbandonStartSession: 'Cannot start session, logging disabled or developer token not set',
449
- AbandonEndSession: 'Cannot end session, logging disabled or developer token not set',
450
- NoSessionToEnd: 'Cannot end session, no active session found'
451
- },
452
- ValidationMessages: {
453
- ModifyIdentityRequestUserIdentitiesPresent: 'identityRequests to modify require userIdentities to be present. Request not sent to server. Please fix and try again',
454
- 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.',
455
- OnUserAliasType: 'The onUserAlias value must be a function.',
456
- 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.',
457
- UserIdentitiesInvalidKey: 'There is an invalid identity key on your `userIdentities` object within the identityRequest. Request not sent to server. Please fix and try again.',
458
- UserIdentitiesInvalidValues: 'All user identity values must be strings or null. Request not sent to server. Please fix and try again.',
459
- AliasMissingMpid: 'Alias Request must contain both a destinationMpid and a sourceMpid',
460
- AliasNonUniqueMpid: "Alias Request's destinationMpid and sourceMpid must be unique",
461
- AliasMissingTime: 'Alias Request must have both a startTime and an endTime',
462
- AliasStartBeforeEndTime: "Alias Request's endTime must be later than its startTime"
463
- }
464
- },
465
- NativeSdkPaths: {
466
- LogEvent: 'logEvent',
467
- SetUserTag: 'setUserTag',
468
- RemoveUserTag: 'removeUserTag',
469
- SetUserAttribute: 'setUserAttribute',
470
- RemoveUserAttribute: 'removeUserAttribute',
471
- SetSessionAttribute: 'setSessionAttribute',
472
- AddToCart: 'addToCart',
473
- RemoveFromCart: 'removeFromCart',
474
- ClearCart: 'clearCart',
475
- LogOut: 'logOut',
476
- SetUserAttributeList: 'setUserAttributeList',
477
- RemoveAllUserAttributes: 'removeAllUserAttributes',
478
- GetUserAttributesLists: 'getUserAttributesLists',
479
- GetAllUserAttributes: 'getAllUserAttributes',
480
- Identify: 'identify',
481
- Logout: 'logout',
482
- Login: 'login',
483
- Modify: 'modify',
484
- Alias: 'aliasUsers',
485
- Upload: 'upload'
486
- },
487
- StorageNames: {
488
- localStorageName: 'mprtcl-api',
489
- localStorageNameV3: 'mprtcl-v3',
490
- cookieName: 'mprtcl-api',
491
- cookieNameV2: 'mprtcl-v2',
492
- cookieNameV3: 'mprtcl-v3',
493
- localStorageNameV4: 'mprtcl-v4',
494
- localStorageProductsV4: 'mprtcl-prodv4',
495
- cookieNameV4: 'mprtcl-v4',
496
- currentStorageName: 'mprtcl-v4',
497
- currentStorageProductsName: 'mprtcl-prodv4'
498
- },
499
- DefaultConfig: {
500
- cookieDomain: null,
501
- cookieExpiration: 365,
502
- logLevel: null,
503
- timeout: 300,
504
- sessionTimeout: 30,
505
- maxProducts: 20,
506
- forwarderStatsTimeout: 5000,
507
- integrationDelayTimeout: 5000,
508
- maxCookieSize: 3000,
509
- aliasMaxWindow: 90,
510
- 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
511
- },
512
-
513
- DefaultBaseUrls: {
514
- v1SecureServiceUrl: 'jssdks.mparticle.com/v1/JS/',
515
- v2SecureServiceUrl: 'jssdks.mparticle.com/v2/JS/',
516
- v3SecureServiceUrl: 'jssdks.mparticle.com/v3/JS/',
517
- configUrl: 'jssdkcdns.mparticle.com/JS/v2/',
518
- identityUrl: 'identity.mparticle.com/v1/',
519
- aliasUrl: 'jssdks.mparticle.com/v1/identity/',
520
- userAudienceUrl: 'nativesdks.mparticle.com/v1/'
521
- },
522
- Base64CookieKeys: {
523
- csm: 1,
524
- sa: 1,
525
- ss: 1,
526
- ua: 1,
527
- ui: 1,
528
- csd: 1,
529
- ia: 1,
530
- con: 1
531
- },
532
- // https://go.mparticle.com/work/SQDSDKS-6039
533
- SDKv2NonMPIDCookieKeys: {
534
- gs: 1,
535
- cu: 1,
536
- l: 1,
537
- globalSettings: 1,
538
- currentUserMPID: 1
539
- },
540
- HTTPCodes: {
541
- noHttpCoverage: -1,
542
- activeIdentityRequest: -2,
543
- activeSession: -3,
544
- validationIssue: -4,
545
- nativeIdentityRequest: -5,
546
- loggingDisabledOrMissingAPIKey: -6,
547
- tooManyRequests: 429
548
- },
549
- FeatureFlags: {
550
- ReportBatching: 'reportBatching',
551
- EventBatchingIntervalMillis: 'eventBatchingIntervalMillis',
552
- OfflineStorage: 'offlineStorage',
553
- DirectUrlRouting: 'directURLRouting',
554
- CacheIdentity: 'cacheIdentity',
555
- AudienceAPI: 'audienceAPI'
556
- },
557
- DefaultInstance: 'default_instance',
558
- CCPAPurpose: 'data_sale_opt_out',
559
- IdentityMethods: {
560
- Modify: 'modify',
561
- Logout: 'logout',
562
- Login: 'login',
563
- Identify: 'identify'
564
- }
565
- };
566
- // https://go.mparticle.com/work/SQDSDKS-6080
567
- var ONE_DAY_IN_SECONDS = 60 * 60 * 24;
568
- var MILLIS_IN_ONE_SEC = 1000;
569
-
570
- var Messages$9 = Constants.Messages;
571
- var createCookieString = function createCookieString(value) {
572
- return replaceCommasWithPipes(replaceQuotesWithApostrophes(value));
573
- };
574
- var revertCookieString = function revertCookieString(value) {
575
- return replacePipesWithCommas(replaceApostrophesWithQuotes(value));
576
- };
577
- var inArray = function inArray(items, name) {
578
- var i = 0;
579
- if (Array.prototype.indexOf) {
580
- return items.indexOf(name, 0) >= 0;
581
- } else {
582
- for (var n = items.length; i < n; i++) {
583
- if (i in items && items[i] === name) {
584
- return true;
585
- }
586
- }
587
- }
588
- return false;
589
- };
590
- var findKeyInObject = function findKeyInObject(obj, key) {
591
- if (key && obj) {
592
- for (var prop in obj) {
593
- if (obj.hasOwnProperty(prop) && prop.toLowerCase() === key.toLowerCase()) {
594
- return prop;
595
- }
596
- }
597
- }
598
- return null;
599
- };
600
- var generateDeprecationMessage = function generateDeprecationMessage(methodName, alternateMethod) {
601
- var messageArray = [methodName, Messages$9.DeprecationMessages.MethodIsDeprecatedPostfix];
602
- if (alternateMethod) {
603
- messageArray.push(alternateMethod);
604
- messageArray.push(Messages$9.DeprecationMessages.MethodIsDeprecatedPostfix);
605
- }
606
- return messageArray.join(' ');
607
- };
608
- function generateHash(name) {
609
- var hash = 0;
610
- var character;
611
- if (name === undefined || name === null) {
612
- return 0;
613
- }
614
- name = name.toString().toLowerCase();
615
- if (Array.prototype.reduce) {
616
- return name.split('').reduce(function (a, b) {
617
- a = (a << 5) - a + b.charCodeAt(0);
618
- return a & a;
619
- }, 0);
620
- }
621
- if (name.length === 0) {
622
- return hash;
623
- }
624
- for (var i = 0; i < name.length; i++) {
625
- character = name.charCodeAt(i);
626
- hash = (hash << 5) - hash + character;
627
- hash = hash & hash;
628
- }
629
- return hash;
630
- }
631
- var generateRandomValue = function generateRandomValue(value) {
632
- var randomValue;
633
- var a;
634
- if (window.crypto && window.crypto.getRandomValues) {
635
- // @ts-ignore
636
- randomValue = window.crypto.getRandomValues(new Uint8Array(1)); // eslint-disable-line no-undef
637
- }
638
-
639
- if (randomValue) {
640
- // @ts-ignore
641
- return (a ^ randomValue[0] % 16 >> a / 4).toString(16);
642
- }
643
- return (a ^ Math.random() * 16 >> a / 4).toString(16);
644
- };
645
- var generateUniqueId = function generateUniqueId(a) {
646
- // https://gist.github.com/jed/982883
647
- // Added support for crypto for better random
648
- if (a === void 0) {
649
- a = '';
650
- }
651
- return a // if the placeholder was passed, return
652
- ? generateRandomValue() // if the placeholder was passed, return
653
- :
654
- // [1e7] -> // 10000000 +
655
- // -1e3 -> // -1000 +
656
- // -4e3 -> // -4000 +
657
- // -8e3 -> // -80000000 +
658
- // -1e11 -> //-100000000000,
659
- "".concat(1e7, "-").concat(1e3, "-").concat(4e3, "-").concat(8e3, "-").concat(1e11).replace(/[018]/g,
660
- // zeroes, ones, and eights with
661
- generateUniqueId // random hex digits
662
- );
663
- };
664
- /**
665
- * Returns a value between 1-100 inclusive.
666
- */
667
- var getRampNumber = function getRampNumber(value) {
668
- if (!value) {
669
- return 100;
670
- }
671
- var hash = generateHash(value);
672
- return Math.abs(hash % 100) + 1;
673
- };
674
- var isObject = function isObject(value) {
675
- var objType = Object.prototype.toString.call(value);
676
- return objType === '[object Object]' || objType === '[object Error]';
677
- };
678
- var parseNumber = function parseNumber(value) {
679
- if (isNaN(value) || !isFinite(value)) {
680
- return 0;
681
- }
682
- var floatValue = parseFloat(value);
683
- return isNaN(floatValue) ? 0 : floatValue;
684
- };
685
- var parseStringOrNumber = function parseStringOrNumber(value) {
686
- if (isStringOrNumber(value)) {
687
- return value;
688
- } else {
689
- return null;
690
- }
691
- };
692
- var replaceCommasWithPipes = function replaceCommasWithPipes(value) {
693
- return value.replace(/,/g, '|');
694
- };
695
- var replacePipesWithCommas = function replacePipesWithCommas(value) {
696
- return value.replace(/\|/g, ',');
697
- };
698
- var replaceApostrophesWithQuotes = function replaceApostrophesWithQuotes(value) {
699
- return value.replace(/\'/g, '"');
700
- };
701
- var replaceQuotesWithApostrophes = function replaceQuotesWithApostrophes(value) {
702
- return value.replace(/\"/g, "'");
703
- };
704
- // FIXME: REFACTOR for V3
705
- // only used in store.js to sanitize server-side formatting of
706
- // booleans when checking for `isDevelopmentMode`
707
- // Should be removed in v3
708
- var returnConvertedBoolean = function returnConvertedBoolean(data) {
709
- if (data === 'false' || data === '0') {
710
- return false;
711
- } else {
712
- return Boolean(data);
713
- }
714
- };
715
- var decoded = function decoded(s) {
716
- return decodeURIComponent(s.replace(/\+/g, ' '));
717
- };
718
- var converted = function converted(s) {
719
- if (s.indexOf('"') === 0) {
720
- s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
721
- }
722
- return s;
723
- };
724
- var isString = function isString(value) {
725
- return typeof value === 'string';
726
- };
727
- var isNumber = function isNumber(value) {
728
- return typeof value === 'number';
729
- };
730
- var isBoolean = function isBoolean(value) {
731
- return typeof value === 'boolean';
732
- };
733
- var isFunction = function isFunction(fn) {
734
- return typeof fn === 'function';
735
- };
736
- var isValidCustomFlagProperty = function isValidCustomFlagProperty(value) {
737
- return isNumber(value) || isString(value) || isBoolean(value);
738
- };
739
- var toDataPlanSlug = function toDataPlanSlug(value) {
740
- // Make sure we are only acting on strings or numbers
741
- return isStringOrNumber(value) ? value.toString().toLowerCase().replace(/[^0-9a-zA-Z]+/g, '_') : '';
742
- };
743
- var isDataPlanSlug = function isDataPlanSlug(str) {
744
- return str === toDataPlanSlug(str);
745
- };
746
- var isStringOrNumber = function isStringOrNumber(value) {
747
- return isString(value) || isNumber(value);
748
- };
749
- var isEmpty = function isEmpty(value) {
750
- return value == null || !(Object.keys(value) || value).length;
751
- };
752
- var moveElementToEnd = function moveElementToEnd(array, index) {
753
- return array.slice(0, index).concat(array.slice(index + 1), array[index]);
754
- };
755
-
756
- function getNewIdentitiesByName(newIdentitiesByType) {
757
- var newIdentitiesByName = {};
758
- for (var key in newIdentitiesByType) {
759
- var identityNameKey = getIdentityName(parseNumber(key));
760
- newIdentitiesByName[identityNameKey] = newIdentitiesByType[key];
761
- }
762
- return newIdentitiesByName;
763
- }
764
- function getIdentityName(identityType) {
765
- switch (identityType) {
766
- case IdentityType$1.Other:
767
- return 'other';
768
- case IdentityType$1.CustomerId:
769
- return 'customerid';
770
- case IdentityType$1.Facebook:
771
- return 'facebook';
772
- case IdentityType$1.Twitter:
773
- return 'twitter';
774
- case IdentityType$1.Google:
775
- return 'google';
776
- case IdentityType$1.Microsoft:
777
- return 'microsoft';
778
- case IdentityType$1.Yahoo:
779
- return 'yahoo';
780
- case IdentityType$1.Email:
781
- return 'email';
782
- case IdentityType$1.FacebookCustomAudienceId:
783
- return 'facebookcustomaudienceid';
784
- case IdentityType$1.Other2:
785
- return 'other2';
786
- case IdentityType$1.Other3:
787
- return 'other3';
788
- case IdentityType$1.Other4:
789
- return 'other4';
790
- case IdentityType$1.Other5:
791
- return 'other5';
792
- case IdentityType$1.Other6:
793
- return 'other6';
794
- case IdentityType$1.Other7:
795
- return 'other7';
796
- case IdentityType$1.Other8:
797
- return 'other8';
798
- case IdentityType$1.Other9:
799
- return 'other9';
800
- case IdentityType$1.Other10:
801
- return 'other10';
802
- case IdentityType$1.MobileNumber:
803
- return 'mobile_number';
804
- case IdentityType$1.PhoneNumber2:
805
- return 'phone_number_2';
806
- case IdentityType$1.PhoneNumber3:
807
- return 'phone_number_3';
808
- default:
809
- return null;
810
- }
811
- }
812
-
813
247
  var _TriggerUploadType;
814
- var MessageType$1 = {
248
+ var MessageType$2 = {
815
249
  SessionStart: 1,
816
250
  SessionEnd: 2,
817
251
  PageView: 3,
@@ -828,7 +262,7 @@ var mParticle = (function () {
828
262
 
829
263
  // Dictionary that contains MessageTypes that will
830
264
  // trigger an immediate upload.
831
- var TriggerUploadType = (_TriggerUploadType = {}, _defineProperty(_TriggerUploadType, MessageType$1.Commerce, 1), _defineProperty(_TriggerUploadType, MessageType$1.UserIdentityChange, 1), _TriggerUploadType);
265
+ var TriggerUploadType = (_TriggerUploadType = {}, _defineProperty(_TriggerUploadType, MessageType$2.Commerce, 1), _defineProperty(_TriggerUploadType, MessageType$2.UserIdentityChange, 1), _TriggerUploadType);
832
266
  var EventType = {
833
267
  Unknown: 0,
834
268
  Navigation: 1,
@@ -906,7 +340,7 @@ var mParticle = (function () {
906
340
  ProductRemoveFromWishlist: 21,
907
341
  ProductImpression: 22
908
342
  };
909
- var IdentityType = {
343
+ var IdentityType$1 = {
910
344
  Other: 0,
911
345
  CustomerId: 1,
912
346
  Facebook: 2,
@@ -929,11 +363,11 @@ var mParticle = (function () {
929
363
  PhoneNumber2: 20,
930
364
  PhoneNumber3: 21
931
365
  };
932
- IdentityType.isValid = function (identityType) {
366
+ IdentityType$1.isValid = function (identityType) {
933
367
  if (typeof identityType === 'number') {
934
- for (var prop in IdentityType) {
935
- if (IdentityType.hasOwnProperty(prop)) {
936
- if (IdentityType[prop] === identityType) {
368
+ for (var prop in IdentityType$1) {
369
+ if (IdentityType$1.hasOwnProperty(prop)) {
370
+ if (IdentityType$1[prop] === identityType) {
937
371
  return true;
938
372
  }
939
373
  }
@@ -941,7 +375,7 @@ var mParticle = (function () {
941
375
  }
942
376
  return false;
943
377
  };
944
- IdentityType.getName = function (identityType) {
378
+ IdentityType$1.getName = function (identityType) {
945
379
  switch (identityType) {
946
380
  case window.mParticle.IdentityType.CustomerId:
947
381
  return 'Customer ID';
@@ -963,56 +397,99 @@ var mParticle = (function () {
963
397
  return 'Other ID';
964
398
  }
965
399
  };
966
- IdentityType.getIdentityType = function (identityName) {
400
+ IdentityType$1.getIdentityType = function (identityName) {
967
401
  switch (identityName) {
968
402
  case 'other':
969
- return IdentityType.Other;
403
+ return IdentityType$1.Other;
970
404
  case 'customerid':
971
- return IdentityType.CustomerId;
405
+ return IdentityType$1.CustomerId;
972
406
  case 'facebook':
973
- return IdentityType.Facebook;
407
+ return IdentityType$1.Facebook;
974
408
  case 'twitter':
975
- return IdentityType.Twitter;
409
+ return IdentityType$1.Twitter;
976
410
  case 'google':
977
- return IdentityType.Google;
411
+ return IdentityType$1.Google;
978
412
  case 'microsoft':
979
- return IdentityType.Microsoft;
413
+ return IdentityType$1.Microsoft;
980
414
  case 'yahoo':
981
- return IdentityType.Yahoo;
415
+ return IdentityType$1.Yahoo;
982
416
  case 'email':
983
- return IdentityType.Email;
417
+ return IdentityType$1.Email;
984
418
  case 'facebookcustomaudienceid':
985
- return IdentityType.FacebookCustomAudienceId;
419
+ return IdentityType$1.FacebookCustomAudienceId;
986
420
  case 'other2':
987
- return IdentityType.Other2;
421
+ return IdentityType$1.Other2;
988
422
  case 'other3':
989
- return IdentityType.Other3;
423
+ return IdentityType$1.Other3;
990
424
  case 'other4':
991
- return IdentityType.Other4;
425
+ return IdentityType$1.Other4;
992
426
  case 'other5':
993
- return IdentityType.Other5;
427
+ return IdentityType$1.Other5;
994
428
  case 'other6':
995
- return IdentityType.Other6;
429
+ return IdentityType$1.Other6;
996
430
  case 'other7':
997
- return IdentityType.Other7;
431
+ return IdentityType$1.Other7;
998
432
  case 'other8':
999
- return IdentityType.Other8;
433
+ return IdentityType$1.Other8;
1000
434
  case 'other9':
1001
- return IdentityType.Other9;
435
+ return IdentityType$1.Other9;
1002
436
  case 'other10':
1003
- return IdentityType.Other10;
437
+ return IdentityType$1.Other10;
1004
438
  case 'mobile_number':
1005
- return IdentityType.MobileNumber;
439
+ return IdentityType$1.MobileNumber;
1006
440
  case 'phone_number_2':
1007
- return IdentityType.PhoneNumber2;
441
+ return IdentityType$1.PhoneNumber2;
1008
442
  case 'phone_number_3':
1009
- return IdentityType.PhoneNumber3;
443
+ return IdentityType$1.PhoneNumber3;
1010
444
  default:
1011
445
  return false;
1012
446
  }
1013
447
  };
1014
- IdentityType.getIdentityName = function (identityType) {
1015
- return getIdentityName(identityType);
448
+ IdentityType$1.getIdentityName = function (identityType) {
449
+ switch (identityType) {
450
+ case IdentityType$1.Other:
451
+ return 'other';
452
+ case IdentityType$1.CustomerId:
453
+ return 'customerid';
454
+ case IdentityType$1.Facebook:
455
+ return 'facebook';
456
+ case IdentityType$1.Twitter:
457
+ return 'twitter';
458
+ case IdentityType$1.Google:
459
+ return 'google';
460
+ case IdentityType$1.Microsoft:
461
+ return 'microsoft';
462
+ case IdentityType$1.Yahoo:
463
+ return 'yahoo';
464
+ case IdentityType$1.Email:
465
+ return 'email';
466
+ case IdentityType$1.FacebookCustomAudienceId:
467
+ return 'facebookcustomaudienceid';
468
+ case IdentityType$1.Other2:
469
+ return 'other2';
470
+ case IdentityType$1.Other3:
471
+ return 'other3';
472
+ case IdentityType$1.Other4:
473
+ return 'other4';
474
+ case IdentityType$1.Other5:
475
+ return 'other5';
476
+ case IdentityType$1.Other6:
477
+ return 'other6';
478
+ case IdentityType$1.Other7:
479
+ return 'other7';
480
+ case IdentityType$1.Other8:
481
+ return 'other8';
482
+ case IdentityType$1.Other9:
483
+ return 'other9';
484
+ case IdentityType$1.Other10:
485
+ return 'other10';
486
+ case IdentityType$1.MobileNumber:
487
+ return 'mobile_number';
488
+ case IdentityType$1.PhoneNumber2:
489
+ return 'phone_number_2';
490
+ case IdentityType$1.PhoneNumber3:
491
+ return 'phone_number_3';
492
+ }
1016
493
  };
1017
494
  var ProductActionType = {
1018
495
  Unknown: 0,
@@ -1054,81 +531,350 @@ var mParticle = (function () {
1054
531
  }
1055
532
  };
1056
533
 
1057
- // these are the action names used by server and mobile SDKs when expanding a CommerceEvent
1058
- ProductActionType.getExpansionName = function (id) {
1059
- switch (id) {
1060
- case ProductActionType.AddToCart:
1061
- return 'add_to_cart';
1062
- case ProductActionType.RemoveFromCart:
1063
- return 'remove_from_cart';
1064
- case ProductActionType.Checkout:
1065
- return 'checkout';
1066
- case ProductActionType.CheckoutOption:
1067
- return 'checkout_option';
1068
- case ProductActionType.Click:
1069
- return 'click';
1070
- case ProductActionType.ViewDetail:
1071
- return 'view_detail';
1072
- case ProductActionType.Purchase:
1073
- return 'purchase';
1074
- case ProductActionType.Refund:
1075
- return 'refund';
1076
- case ProductActionType.AddToWishlist:
1077
- return 'add_to_wishlist';
1078
- case ProductActionType.RemoveFromWishlist:
1079
- return 'remove_from_wishlist';
1080
- default:
1081
- return 'unknown';
1082
- }
1083
- };
1084
- var PromotionActionType = {
1085
- Unknown: 0,
1086
- PromotionView: 1,
1087
- PromotionClick: 2
1088
- };
1089
- PromotionActionType.getName = function (id) {
1090
- switch (id) {
1091
- case PromotionActionType.PromotionView:
1092
- return 'view';
1093
- case PromotionActionType.PromotionClick:
1094
- return 'click';
1095
- default:
1096
- return 'unknown';
534
+ // these are the action names used by server and mobile SDKs when expanding a CommerceEvent
535
+ ProductActionType.getExpansionName = function (id) {
536
+ switch (id) {
537
+ case ProductActionType.AddToCart:
538
+ return 'add_to_cart';
539
+ case ProductActionType.RemoveFromCart:
540
+ return 'remove_from_cart';
541
+ case ProductActionType.Checkout:
542
+ return 'checkout';
543
+ case ProductActionType.CheckoutOption:
544
+ return 'checkout_option';
545
+ case ProductActionType.Click:
546
+ return 'click';
547
+ case ProductActionType.ViewDetail:
548
+ return 'view_detail';
549
+ case ProductActionType.Purchase:
550
+ return 'purchase';
551
+ case ProductActionType.Refund:
552
+ return 'refund';
553
+ case ProductActionType.AddToWishlist:
554
+ return 'add_to_wishlist';
555
+ case ProductActionType.RemoveFromWishlist:
556
+ return 'remove_from_wishlist';
557
+ default:
558
+ return 'unknown';
559
+ }
560
+ };
561
+ var PromotionActionType = {
562
+ Unknown: 0,
563
+ PromotionView: 1,
564
+ PromotionClick: 2
565
+ };
566
+ PromotionActionType.getName = function (id) {
567
+ switch (id) {
568
+ case PromotionActionType.PromotionView:
569
+ return 'view';
570
+ case PromotionActionType.PromotionClick:
571
+ return 'click';
572
+ default:
573
+ return 'unknown';
574
+ }
575
+ };
576
+
577
+ // these are the names that the server and mobile SDKs use while expanding CommerceEvent
578
+ PromotionActionType.getExpansionName = function (id) {
579
+ switch (id) {
580
+ case PromotionActionType.PromotionView:
581
+ return 'view';
582
+ case PromotionActionType.PromotionClick:
583
+ return 'click';
584
+ default:
585
+ return 'unknown';
586
+ }
587
+ };
588
+ var ProfileMessageType = {
589
+ Logout: 3
590
+ };
591
+ var ApplicationTransitionType$1 = {
592
+ AppInit: 1
593
+ };
594
+ var Environment = {
595
+ Production: 'production',
596
+ Development: 'development'
597
+ };
598
+ var Types = {
599
+ MessageType: MessageType$2,
600
+ EventType: EventType,
601
+ CommerceEventType: CommerceEventType,
602
+ IdentityType: IdentityType$1,
603
+ ProfileMessageType: ProfileMessageType,
604
+ ApplicationTransitionType: ApplicationTransitionType$1,
605
+ ProductActionType: ProductActionType,
606
+ PromotionActionType: PromotionActionType,
607
+ TriggerUploadType: TriggerUploadType,
608
+ Environment: Environment
609
+ };
610
+
611
+ var version = "2.26.3";
612
+
613
+ var Constants = {
614
+ sdkVersion: version,
615
+ sdkVendor: 'mparticle',
616
+ platform: 'web',
617
+ Messages: {
618
+ DeprecationMessages: {
619
+ MethodIsDeprecatedPostfix: 'is a deprecated method and will be removed in future releases',
620
+ AlternativeMethodPrefix: 'Please use the alternate method:'
621
+ },
622
+ ErrorMessages: {
623
+ NoToken: 'A token must be specified.',
624
+ EventNameInvalidType: 'Event name must be a valid string value.',
625
+ EventDataInvalidType: 'Event data must be a valid object hash.',
626
+ LoggingDisabled: 'Event logging is currently disabled.',
627
+ CookieParseError: 'Could not parse cookie',
628
+ EventEmpty: 'Event object is null or undefined, cancelling send',
629
+ APIRequestEmpty: 'APIRequest is null or undefined, cancelling send',
630
+ NoEventType: 'Event type must be specified.',
631
+ TransactionIdRequired: 'Transaction ID is required',
632
+ TransactionRequired: 'A transaction attributes object is required',
633
+ PromotionIdRequired: 'Promotion ID is required',
634
+ BadAttribute: 'Attribute value cannot be object or array',
635
+ BadKey: 'Key value cannot be object or array',
636
+ BadLogPurchase: 'Transaction attributes and a product are both required to log a purchase, https://docs.mparticle.com/?javascript#measuring-transactions',
637
+ AudienceAPINotEnabled: 'Your workspace is not enabled to retrieve user audiences.'
638
+ },
639
+ InformationMessages: {
640
+ CookieSearch: 'Searching for cookie',
641
+ CookieFound: 'Cookie found, parsing values',
642
+ CookieNotFound: 'Cookies not found',
643
+ CookieSet: 'Setting cookie',
644
+ CookieSync: 'Performing cookie sync',
645
+ SendBegin: 'Starting to send event',
646
+ SendIdentityBegin: 'Starting to send event to identity server',
647
+ SendWindowsPhone: 'Sending event to Windows Phone container',
648
+ SendIOS: 'Calling iOS path: ',
649
+ SendAndroid: 'Calling Android JS interface method: ',
650
+ SendHttp: 'Sending event to mParticle HTTP service',
651
+ SendAliasHttp: 'Sending alias request to mParticle HTTP service',
652
+ SendIdentityHttp: 'Sending event to mParticle HTTP service',
653
+ StartingNewSession: 'Starting new Session',
654
+ StartingLogEvent: 'Starting to log event',
655
+ StartingLogOptOut: 'Starting to log user opt in/out',
656
+ StartingEndSession: 'Starting to end session',
657
+ StartingInitialization: 'Starting to initialize',
658
+ StartingLogCommerceEvent: 'Starting to log commerce event',
659
+ StartingAliasRequest: 'Starting to Alias MPIDs',
660
+ LoadingConfig: 'Loading configuration options',
661
+ AbandonLogEvent: 'Cannot log event, logging disabled or developer token not set',
662
+ AbandonAliasUsers: 'Cannot Alias Users, logging disabled or developer token not set',
663
+ AbandonStartSession: 'Cannot start session, logging disabled or developer token not set',
664
+ AbandonEndSession: 'Cannot end session, logging disabled or developer token not set',
665
+ NoSessionToEnd: 'Cannot end session, no active session found'
666
+ },
667
+ ValidationMessages: {
668
+ ModifyIdentityRequestUserIdentitiesPresent: 'identityRequests to modify require userIdentities to be present. Request not sent to server. Please fix and try again',
669
+ 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.',
670
+ OnUserAliasType: 'The onUserAlias value must be a function.',
671
+ 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.',
672
+ UserIdentitiesInvalidKey: 'There is an invalid identity key on your `userIdentities` object within the identityRequest. Request not sent to server. Please fix and try again.',
673
+ UserIdentitiesInvalidValues: 'All user identity values must be strings or null. Request not sent to server. Please fix and try again.',
674
+ AliasMissingMpid: 'Alias Request must contain both a destinationMpid and a sourceMpid',
675
+ AliasNonUniqueMpid: "Alias Request's destinationMpid and sourceMpid must be unique",
676
+ AliasMissingTime: 'Alias Request must have both a startTime and an endTime',
677
+ AliasStartBeforeEndTime: "Alias Request's endTime must be later than its startTime"
678
+ }
679
+ },
680
+ NativeSdkPaths: {
681
+ LogEvent: 'logEvent',
682
+ SetUserTag: 'setUserTag',
683
+ RemoveUserTag: 'removeUserTag',
684
+ SetUserAttribute: 'setUserAttribute',
685
+ RemoveUserAttribute: 'removeUserAttribute',
686
+ SetSessionAttribute: 'setSessionAttribute',
687
+ AddToCart: 'addToCart',
688
+ RemoveFromCart: 'removeFromCart',
689
+ ClearCart: 'clearCart',
690
+ LogOut: 'logOut',
691
+ SetUserAttributeList: 'setUserAttributeList',
692
+ RemoveAllUserAttributes: 'removeAllUserAttributes',
693
+ GetUserAttributesLists: 'getUserAttributesLists',
694
+ GetAllUserAttributes: 'getAllUserAttributes',
695
+ Identify: 'identify',
696
+ Logout: 'logout',
697
+ Login: 'login',
698
+ Modify: 'modify',
699
+ Alias: 'aliasUsers',
700
+ Upload: 'upload'
701
+ },
702
+ StorageNames: {
703
+ localStorageName: 'mprtcl-api',
704
+ localStorageNameV3: 'mprtcl-v3',
705
+ cookieName: 'mprtcl-api',
706
+ cookieNameV2: 'mprtcl-v2',
707
+ cookieNameV3: 'mprtcl-v3',
708
+ localStorageNameV4: 'mprtcl-v4',
709
+ localStorageProductsV4: 'mprtcl-prodv4',
710
+ cookieNameV4: 'mprtcl-v4',
711
+ currentStorageName: 'mprtcl-v4',
712
+ currentStorageProductsName: 'mprtcl-prodv4'
713
+ },
714
+ DefaultConfig: {
715
+ cookieDomain: null,
716
+ cookieExpiration: 365,
717
+ logLevel: null,
718
+ timeout: 300,
719
+ sessionTimeout: 30,
720
+ maxProducts: 20,
721
+ forwarderStatsTimeout: 5000,
722
+ integrationDelayTimeout: 5000,
723
+ maxCookieSize: 3000,
724
+ aliasMaxWindow: 90,
725
+ 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
726
+ },
727
+
728
+ DefaultBaseUrls: {
729
+ v1SecureServiceUrl: 'jssdks.mparticle.com/v1/JS/',
730
+ v2SecureServiceUrl: 'jssdks.mparticle.com/v2/JS/',
731
+ v3SecureServiceUrl: 'jssdks.mparticle.com/v3/JS/',
732
+ configUrl: 'jssdkcdns.mparticle.com/JS/v2/',
733
+ identityUrl: 'identity.mparticle.com/v1/',
734
+ aliasUrl: 'jssdks.mparticle.com/v1/identity/',
735
+ userAudienceUrl: 'nativesdks.mparticle.com/v1/'
736
+ },
737
+ Base64CookieKeys: {
738
+ csm: 1,
739
+ sa: 1,
740
+ ss: 1,
741
+ ua: 1,
742
+ ui: 1,
743
+ csd: 1,
744
+ ia: 1,
745
+ con: 1
746
+ },
747
+ // https://go.mparticle.com/work/SQDSDKS-6039
748
+ SDKv2NonMPIDCookieKeys: {
749
+ gs: 1,
750
+ cu: 1,
751
+ l: 1,
752
+ globalSettings: 1,
753
+ currentUserMPID: 1
754
+ },
755
+ HTTPCodes: {
756
+ noHttpCoverage: -1,
757
+ activeIdentityRequest: -2,
758
+ activeSession: -3,
759
+ validationIssue: -4,
760
+ nativeIdentityRequest: -5,
761
+ loggingDisabledOrMissingAPIKey: -6,
762
+ tooManyRequests: 429
763
+ },
764
+ FeatureFlags: {
765
+ ReportBatching: 'reportBatching',
766
+ EventBatchingIntervalMillis: 'eventBatchingIntervalMillis',
767
+ OfflineStorage: 'offlineStorage',
768
+ DirectUrlRouting: 'directURLRouting',
769
+ CacheIdentity: 'cacheIdentity',
770
+ AudienceAPI: 'audienceAPI'
771
+ },
772
+ DefaultInstance: 'default_instance',
773
+ CCPAPurpose: 'data_sale_opt_out',
774
+ IdentityMethods: {
775
+ Modify: 'modify',
776
+ Logout: 'logout',
777
+ Login: 'login',
778
+ Identify: 'identify'
1097
779
  }
1098
780
  };
781
+ // https://go.mparticle.com/work/SQDSDKS-6080
782
+ var ONE_DAY_IN_SECONDS = 60 * 60 * 24;
783
+ var MILLIS_IN_ONE_SEC = 1000;
1099
784
 
1100
- // these are the names that the server and mobile SDKs use while expanding CommerceEvent
1101
- PromotionActionType.getExpansionName = function (id) {
1102
- switch (id) {
1103
- case PromotionActionType.PromotionView:
1104
- return 'view';
1105
- case PromotionActionType.PromotionClick:
1106
- return 'click';
1107
- default:
1108
- return 'unknown';
1109
- }
1110
- };
1111
- var ProfileMessageType = {
1112
- Logout: 3
1113
- };
1114
- var ApplicationTransitionType$1 = {
1115
- AppInit: 1
1116
- };
1117
- var Environment = {
1118
- Production: 'production',
1119
- Development: 'development'
1120
- };
1121
- var Types = {
1122
- MessageType: MessageType$1,
1123
- EventType: EventType,
1124
- CommerceEventType: CommerceEventType,
1125
- IdentityType: IdentityType,
1126
- ProfileMessageType: ProfileMessageType,
1127
- ApplicationTransitionType: ApplicationTransitionType$1,
1128
- ProductActionType: ProductActionType,
1129
- PromotionActionType: PromotionActionType,
1130
- TriggerUploadType: TriggerUploadType,
1131
- Environment: Environment
785
+ /******************************************************************************
786
+ Copyright (c) Microsoft Corporation.
787
+
788
+ Permission to use, copy, modify, and/or distribute this software for any
789
+ purpose with or without fee is hereby granted.
790
+
791
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
792
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
793
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
794
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
795
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
796
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
797
+ PERFORMANCE OF THIS SOFTWARE.
798
+ ***************************************************************************** */
799
+ /* global Reflect, Promise, SuppressedError, Symbol */
800
+
801
+ var extendStatics = function(d, b) {
802
+ extendStatics = Object.setPrototypeOf ||
803
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
804
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
805
+ return extendStatics(d, b);
806
+ };
807
+
808
+ function __extends(d, b) {
809
+ if (typeof b !== "function" && b !== null)
810
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
811
+ extendStatics(d, b);
812
+ function __() { this.constructor = d; }
813
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
814
+ }
815
+
816
+ var __assign = function() {
817
+ __assign = Object.assign || function __assign(t) {
818
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
819
+ s = arguments[i];
820
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
821
+ }
822
+ return t;
823
+ };
824
+ return __assign.apply(this, arguments);
825
+ };
826
+
827
+ function __awaiter(thisArg, _arguments, P, generator) {
828
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
829
+ return new (P || (P = Promise))(function (resolve, reject) {
830
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
831
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
832
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
833
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
834
+ });
835
+ }
836
+
837
+ function __generator(thisArg, body) {
838
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
839
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
840
+ function verb(n) { return function (v) { return step([n, v]); }; }
841
+ function step(op) {
842
+ if (f) throw new TypeError("Generator is already executing.");
843
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
844
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
845
+ if (y = 0, t) op = [op[0] & 2, t.value];
846
+ switch (op[0]) {
847
+ case 0: case 1: t = op; break;
848
+ case 4: _.label++; return { value: op[1], done: false };
849
+ case 5: _.label++; y = op[1]; op = [0]; continue;
850
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
851
+ default:
852
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
853
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
854
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
855
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
856
+ if (t[2]) _.ops.pop();
857
+ _.trys.pop(); continue;
858
+ }
859
+ op = body.call(thisArg, _);
860
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
861
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
862
+ }
863
+ }
864
+
865
+ function __spreadArray(to, from, pack) {
866
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
867
+ if (ar || !(i in from)) {
868
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
869
+ ar[i] = from[i];
870
+ }
871
+ }
872
+ return to.concat(ar || Array.prototype.slice.call(from));
873
+ }
874
+
875
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
876
+ var e = new Error(message);
877
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1132
878
  };
1133
879
 
1134
880
  var SDKProductActionType;
@@ -1401,6 +1147,189 @@ var mParticle = (function () {
1401
1147
  })(exports.UserIdentityChangeEventEventTypeEnum || (exports.UserIdentityChangeEventEventTypeEnum = {}));
1402
1148
  } (dist));
1403
1149
 
1150
+ var Messages$9 = Constants.Messages;
1151
+ var createCookieString = function createCookieString(value) {
1152
+ return replaceCommasWithPipes(replaceQuotesWithApostrophes(value));
1153
+ };
1154
+ var revertCookieString = function revertCookieString(value) {
1155
+ return replacePipesWithCommas(replaceApostrophesWithQuotes(value));
1156
+ };
1157
+ var inArray = function inArray(items, name) {
1158
+ var i = 0;
1159
+ if (Array.prototype.indexOf) {
1160
+ return items.indexOf(name, 0) >= 0;
1161
+ } else {
1162
+ for (var n = items.length; i < n; i++) {
1163
+ if (i in items && items[i] === name) {
1164
+ return true;
1165
+ }
1166
+ }
1167
+ }
1168
+ return false;
1169
+ };
1170
+ var findKeyInObject = function findKeyInObject(obj, key) {
1171
+ if (key && obj) {
1172
+ for (var prop in obj) {
1173
+ if (obj.hasOwnProperty(prop) && prop.toLowerCase() === key.toLowerCase()) {
1174
+ return prop;
1175
+ }
1176
+ }
1177
+ }
1178
+ return null;
1179
+ };
1180
+ var generateDeprecationMessage = function generateDeprecationMessage(methodName, alternateMethod) {
1181
+ var messageArray = [methodName, Messages$9.DeprecationMessages.MethodIsDeprecatedPostfix];
1182
+ if (alternateMethod) {
1183
+ messageArray.push(alternateMethod);
1184
+ messageArray.push(Messages$9.DeprecationMessages.MethodIsDeprecatedPostfix);
1185
+ }
1186
+ return messageArray.join(' ');
1187
+ };
1188
+ function generateHash(name) {
1189
+ var hash = 0;
1190
+ var character;
1191
+ if (name === undefined || name === null) {
1192
+ return 0;
1193
+ }
1194
+ name = name.toString().toLowerCase();
1195
+ if (Array.prototype.reduce) {
1196
+ return name.split('').reduce(function (a, b) {
1197
+ a = (a << 5) - a + b.charCodeAt(0);
1198
+ return a & a;
1199
+ }, 0);
1200
+ }
1201
+ if (name.length === 0) {
1202
+ return hash;
1203
+ }
1204
+ for (var i = 0; i < name.length; i++) {
1205
+ character = name.charCodeAt(i);
1206
+ hash = (hash << 5) - hash + character;
1207
+ hash = hash & hash;
1208
+ }
1209
+ return hash;
1210
+ }
1211
+ var generateRandomValue = function generateRandomValue(value) {
1212
+ var randomValue;
1213
+ var a;
1214
+ if (window.crypto && window.crypto.getRandomValues) {
1215
+ // @ts-ignore
1216
+ randomValue = window.crypto.getRandomValues(new Uint8Array(1)); // eslint-disable-line no-undef
1217
+ }
1218
+
1219
+ if (randomValue) {
1220
+ // @ts-ignore
1221
+ return (a ^ randomValue[0] % 16 >> a / 4).toString(16);
1222
+ }
1223
+ return (a ^ Math.random() * 16 >> a / 4).toString(16);
1224
+ };
1225
+ var generateUniqueId = function generateUniqueId(a) {
1226
+ // https://gist.github.com/jed/982883
1227
+ // Added support for crypto for better random
1228
+ if (a === void 0) {
1229
+ a = '';
1230
+ }
1231
+ return a // if the placeholder was passed, return
1232
+ ? generateRandomValue() // if the placeholder was passed, return
1233
+ :
1234
+ // [1e7] -> // 10000000 +
1235
+ // -1e3 -> // -1000 +
1236
+ // -4e3 -> // -4000 +
1237
+ // -8e3 -> // -80000000 +
1238
+ // -1e11 -> //-100000000000,
1239
+ "".concat(1e7, "-").concat(1e3, "-").concat(4e3, "-").concat(8e3, "-").concat(1e11).replace(/[018]/g,
1240
+ // zeroes, ones, and eights with
1241
+ generateUniqueId // random hex digits
1242
+ );
1243
+ };
1244
+ /**
1245
+ * Returns a value between 1-100 inclusive.
1246
+ */
1247
+ var getRampNumber = function getRampNumber(value) {
1248
+ if (!value) {
1249
+ return 100;
1250
+ }
1251
+ var hash = generateHash(value);
1252
+ return Math.abs(hash % 100) + 1;
1253
+ };
1254
+ var isObject = function isObject(value) {
1255
+ var objType = Object.prototype.toString.call(value);
1256
+ return objType === '[object Object]' || objType === '[object Error]';
1257
+ };
1258
+ var parseNumber = function parseNumber(value) {
1259
+ if (isNaN(value) || !isFinite(value)) {
1260
+ return 0;
1261
+ }
1262
+ var floatValue = parseFloat(value);
1263
+ return isNaN(floatValue) ? 0 : floatValue;
1264
+ };
1265
+ var parseStringOrNumber = function parseStringOrNumber(value) {
1266
+ if (isStringOrNumber(value)) {
1267
+ return value;
1268
+ } else {
1269
+ return null;
1270
+ }
1271
+ };
1272
+ var replaceCommasWithPipes = function replaceCommasWithPipes(value) {
1273
+ return value.replace(/,/g, '|');
1274
+ };
1275
+ var replacePipesWithCommas = function replacePipesWithCommas(value) {
1276
+ return value.replace(/\|/g, ',');
1277
+ };
1278
+ var replaceApostrophesWithQuotes = function replaceApostrophesWithQuotes(value) {
1279
+ return value.replace(/\'/g, '"');
1280
+ };
1281
+ var replaceQuotesWithApostrophes = function replaceQuotesWithApostrophes(value) {
1282
+ return value.replace(/\"/g, "'");
1283
+ };
1284
+ // FIXME: REFACTOR for V3
1285
+ // only used in store.js to sanitize server-side formatting of
1286
+ // booleans when checking for `isDevelopmentMode`
1287
+ // Should be removed in v3
1288
+ var returnConvertedBoolean = function returnConvertedBoolean(data) {
1289
+ if (data === 'false' || data === '0') {
1290
+ return false;
1291
+ } else {
1292
+ return Boolean(data);
1293
+ }
1294
+ };
1295
+ var decoded = function decoded(s) {
1296
+ return decodeURIComponent(s.replace(/\+/g, ' '));
1297
+ };
1298
+ var converted = function converted(s) {
1299
+ if (s.indexOf('"') === 0) {
1300
+ s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
1301
+ }
1302
+ return s;
1303
+ };
1304
+ var isString = function isString(value) {
1305
+ return typeof value === 'string';
1306
+ };
1307
+ var isNumber = function isNumber(value) {
1308
+ return typeof value === 'number';
1309
+ };
1310
+ var isBoolean = function isBoolean(value) {
1311
+ return typeof value === 'boolean';
1312
+ };
1313
+ var isFunction = function isFunction(fn) {
1314
+ return typeof fn === 'function';
1315
+ };
1316
+ var isValidCustomFlagProperty = function isValidCustomFlagProperty(value) {
1317
+ return isNumber(value) || isString(value) || isBoolean(value);
1318
+ };
1319
+ var toDataPlanSlug = function toDataPlanSlug(value) {
1320
+ // Make sure we are only acting on strings or numbers
1321
+ return isStringOrNumber(value) ? value.toString().toLowerCase().replace(/[^0-9a-zA-Z]+/g, '_') : '';
1322
+ };
1323
+ var isDataPlanSlug = function isDataPlanSlug(str) {
1324
+ return str === toDataPlanSlug(str);
1325
+ };
1326
+ var isStringOrNumber = function isStringOrNumber(value) {
1327
+ return isString(value) || isNumber(value);
1328
+ };
1329
+ var isEmpty = function isEmpty(value) {
1330
+ return value == null || !(Object.keys(value) || value).length;
1331
+ };
1332
+
1404
1333
  function convertEvents(mpid, sdkEvents, mpInstance) {
1405
1334
  if (!mpid) {
1406
1335
  return null;
@@ -4083,16 +4012,6 @@ var mParticle = (function () {
4083
4012
  _this.persistenceData.gs.das = deviceId;
4084
4013
  mpInstance._Persistence.update();
4085
4014
  };
4086
- this.addMpidToSessionHistory = function (mpid, previousMPID) {
4087
- var indexOfMPID = _this.currentSessionMPIDs.indexOf(mpid);
4088
- if (mpid && previousMPID !== mpid && indexOfMPID < 0) {
4089
- _this.currentSessionMPIDs.push(mpid);
4090
- return;
4091
- }
4092
- if (indexOfMPID >= 0) {
4093
- _this.currentSessionMPIDs = moveElementToEnd(_this.currentSessionMPIDs, indexOfMPID);
4094
- }
4095
- };
4096
4015
  this.getFirstSeenTime = function (mpid) {
4097
4016
  if (!mpid) {
4098
4017
  return null;
@@ -5030,16 +4949,6 @@ var mParticle = (function () {
5030
4949
  }
5031
4950
  }
5032
4951
  };
5033
- this.swapCurrentUser = function (previousMPID, currentMPID, currentSessionMPIDs) {
5034
- if (previousMPID && currentMPID && previousMPID !== currentMPID) {
5035
- var persistence = self.getPersistence();
5036
- if (persistence) {
5037
- persistence.cu = currentMPID;
5038
- persistence.gs.csm = currentSessionMPIDs;
5039
- self.savePersistence(persistence);
5040
- }
5041
- }
5042
- };
5043
4952
 
5044
4953
  // https://go.mparticle.com/work/SQDSDKS-6021
5045
4954
  this.savePersistence = function (persistence) {
@@ -5095,7 +5004,6 @@ var mParticle = (function () {
5095
5004
  if (!mpid) {
5096
5005
  return;
5097
5006
  }
5098
- // https://go.mparticle.com/work/SQDSDKS-6329
5099
5007
  if (!time) {
5100
5008
  time = new Date().getTime();
5101
5009
  }
@@ -5135,7 +5043,6 @@ var mParticle = (function () {
5135
5043
  if (!mpid) {
5136
5044
  return;
5137
5045
  }
5138
- // https://go.mparticle.com/work/SQDSDKS-6329
5139
5046
  if (!time) {
5140
5047
  time = new Date().getTime();
5141
5048
  }
@@ -5509,11 +5416,11 @@ var mParticle = (function () {
5509
5416
  };
5510
5417
  }
5511
5418
 
5512
- var _Constants$IdentityMe = Constants.IdentityMethods,
5513
- Modify$3 = _Constants$IdentityMe.Modify,
5514
- Identify$2 = _Constants$IdentityMe.Identify,
5515
- Login$2 = _Constants$IdentityMe.Login,
5516
- Logout$2 = _Constants$IdentityMe.Logout;
5419
+ var _Constants$IdentityMe$1 = Constants.IdentityMethods,
5420
+ Modify$3 = _Constants$IdentityMe$1.Modify,
5421
+ Identify$2 = _Constants$IdentityMe$1.Identify,
5422
+ Login$2 = _Constants$IdentityMe$1.Login,
5423
+ Logout$2 = _Constants$IdentityMe$1.Logout;
5517
5424
  function Forwarders(mpInstance, kitBlocker) {
5518
5425
  var self = this;
5519
5426
  var UserAttributeActionTypes = {
@@ -5987,7 +5894,7 @@ var mParticle = (function () {
5987
5894
  }
5988
5895
 
5989
5896
  // TODO: This file is no longer the server model because the web SDK payload
5990
- var MessageType = Types.MessageType;
5897
+ var MessageType$1 = Types.MessageType;
5991
5898
  var ApplicationTransitionType = Types.ApplicationTransitionType;
5992
5899
  // TODO: Make this a pure function that returns a new object
5993
5900
  function convertCustomFlags(event, dto) {
@@ -6170,7 +6077,7 @@ var mParticle = (function () {
6170
6077
  CurrencyCode: mpInstance._Store.currencyCode,
6171
6078
  DataPlan: mpInstance._Store.SDKConfig.dataPlan ? mpInstance._Store.SDKConfig.dataPlan : {}
6172
6079
  };
6173
- if (eventObject.EventDataType === MessageType.AppStateTransition) {
6080
+ if (eventObject.EventDataType === MessageType$1.AppStateTransition) {
6174
6081
  eventObject.IsFirstRun = mpInstance._Store.isFirstRun;
6175
6082
  eventObject.LaunchReferral = window.location.href || null;
6176
6083
  }
@@ -6230,7 +6137,7 @@ var mParticle = (function () {
6230
6137
  if (consent) {
6231
6138
  dto.con = consent;
6232
6139
  }
6233
- if (event.EventDataType === MessageType.AppStateTransition) {
6140
+ if (event.EventDataType === MessageType$1.AppStateTransition) {
6234
6141
  dto.fr = event.IsFirstRun;
6235
6142
  dto.iu = false;
6236
6143
  dto.at = ApplicationTransitionType.AppInit;
@@ -6242,7 +6149,7 @@ var mParticle = (function () {
6242
6149
  if (event.CustomFlags) {
6243
6150
  convertCustomFlags(event, dto);
6244
6151
  }
6245
- if (event.EventDataType === MessageType.Commerce) {
6152
+ if (event.EventDataType === MessageType$1.Commerce) {
6246
6153
  dto.cu = event.CurrencyCode;
6247
6154
  // TODO: If Cart is deprecated, we should deprecate this too
6248
6155
  if (event.ShoppingCart) {
@@ -6283,7 +6190,7 @@ var mParticle = (function () {
6283
6190
  };
6284
6191
  });
6285
6192
  }
6286
- } else if (event.EventDataType === MessageType.Profile) {
6193
+ } else if (event.EventDataType === MessageType$1.Profile) {
6287
6194
  dto.pet = event.ProfileMessageType;
6288
6195
  }
6289
6196
  return dto;
@@ -6542,29 +6449,29 @@ var mParticle = (function () {
6542
6449
  return AudienceManager;
6543
6450
  }();
6544
6451
 
6545
- function didUserChange(previousUser, newUser) {
6546
- return !previousUser || newUser.getMPID() !== previousUser.getMPID() || previousUser.isLoggedIn() !== newUser.isLoggedIn();
6547
- }
6548
-
6549
6452
  var Messages$2 = Constants.Messages,
6550
6453
  HTTPCodes$2 = Constants.HTTPCodes,
6551
- FeatureFlags$1 = Constants.FeatureFlags,
6552
- IdentityMethods = Constants.IdentityMethods;
6454
+ FeatureFlags$1 = Constants.FeatureFlags;
6553
6455
  var ErrorMessages = Messages$2.ErrorMessages;
6554
- var CacheIdentity = FeatureFlags$1.CacheIdentity;
6555
- var Identify = IdentityMethods.Identify,
6556
- Modify$1 = IdentityMethods.Modify,
6557
- Login = IdentityMethods.Login,
6558
- Logout = IdentityMethods.Logout;
6456
+ var _Constants$IdentityMe = Constants.IdentityMethods,
6457
+ Identify = _Constants$IdentityMe.Identify,
6458
+ Modify$1 = _Constants$IdentityMe.Modify,
6459
+ Login = _Constants$IdentityMe.Login,
6460
+ Logout = _Constants$IdentityMe.Logout;
6559
6461
  function Identity(mpInstance) {
6560
- var _mpInstance$_Helpers = mpInstance._Helpers,
6561
- getFeatureFlag = _mpInstance$_Helpers.getFeatureFlag,
6562
- extend = _mpInstance$_Helpers.extend;
6563
6462
  var self = this;
6564
6463
  this.idCache = null;
6565
6464
  this.audienceManager = null;
6566
-
6567
- // https://go.mparticle.com/work/SQDSDKS-6353
6465
+ this.checkIdentitySwap = function (previousMPID, currentMPID, currentSessionMPIDs) {
6466
+ if (previousMPID && currentMPID && previousMPID !== currentMPID) {
6467
+ var persistence = mpInstance._Persistence.getPersistence();
6468
+ if (persistence) {
6469
+ persistence.cu = currentMPID;
6470
+ persistence.gs.csm = currentSessionMPIDs;
6471
+ mpInstance._Persistence.savePersistence(persistence);
6472
+ }
6473
+ }
6474
+ };
6568
6475
  this.IdentityRequest = {
6569
6476
  preProcessIdentityRequest: function preProcessIdentityRequest(identityApiData, callback, method) {
6570
6477
  mpInstance.Logger.verbose(Messages$2.InformationMessages.StartingLogEvent + ': ' + method);
@@ -6621,7 +6528,7 @@ var mParticle = (function () {
6621
6528
  createIdentityChanges: function createIdentityChanges(previousIdentities, newIdentities) {
6622
6529
  var identityChanges = [];
6623
6530
  var key;
6624
- if (newIdentities && isObject(newIdentities) && previousIdentities && isObject(previousIdentities)) {
6531
+ if (newIdentities && mpInstance._Helpers.isObject(newIdentities) && previousIdentities && mpInstance._Helpers.isObject(previousIdentities)) {
6625
6532
  for (key in newIdentities) {
6626
6533
  identityChanges.push({
6627
6534
  old_value: previousIdentities[key] || null,
@@ -6635,7 +6542,7 @@ var mParticle = (function () {
6635
6542
  // takes 2 UI objects keyed by name, combines them, returns them keyed by type
6636
6543
  combineUserIdentities: function combineUserIdentities(previousUIByName, newUIByName) {
6637
6544
  var combinedUIByType = {};
6638
- var combinedUIByName = extend({}, previousUIByName, newUIByName);
6545
+ var combinedUIByName = mpInstance._Helpers.extend(previousUIByName, newUIByName);
6639
6546
  for (var key in combinedUIByName) {
6640
6547
  var type = Types.IdentityType.getIdentityType(key);
6641
6548
  // this check removes anything that is not whitelisted as an identity type
@@ -6700,7 +6607,6 @@ var mParticle = (function () {
6700
6607
  * @param {Function} [callback] A callback function that is called when the identify request completes
6701
6608
  */
6702
6609
  identify: function identify(identityApiData, callback) {
6703
- // https://go.mparticle.com/work/SQDSDKS-6337
6704
6610
  var mpid,
6705
6611
  currentUser = mpInstance.Identity.getCurrentUser(),
6706
6612
  preProcessResult = mpInstance._Identity.IdentityRequest.preProcessIdentityRequest(identityApiData, callback, Identify);
@@ -6738,7 +6644,6 @@ var mParticle = (function () {
6738
6644
  * @param {Function} [callback] A callback function that is called when the logout request completes
6739
6645
  */
6740
6646
  logout: function logout(identityApiData, callback) {
6741
- // https://go.mparticle.com/work/SQDSDKS-6337
6742
6647
  var mpid,
6743
6648
  currentUser = mpInstance.Identity.getCurrentUser(),
6744
6649
  preProcessResult = mpInstance._Identity.IdentityRequest.preProcessIdentityRequest(identityApiData, callback, Logout);
@@ -6782,7 +6687,6 @@ var mParticle = (function () {
6782
6687
  * @param {Function} [callback] A callback function that is called when the login request completes
6783
6688
  */
6784
6689
  login: function login(identityApiData, callback) {
6785
- // https://go.mparticle.com/work/SQDSDKS-6337
6786
6690
  var mpid,
6787
6691
  currentUser = mpInstance.Identity.getCurrentUser(),
6788
6692
  preProcessResult = mpInstance._Identity.IdentityRequest.preProcessIdentityRequest(identityApiData, callback, Login);
@@ -6820,7 +6724,6 @@ var mParticle = (function () {
6820
6724
  * @param {Function} [callback] A callback function that is called when the modify request completes
6821
6725
  */
6822
6726
  modify: function modify(identityApiData, callback) {
6823
- // https://go.mparticle.com/work/SQDSDKS-6337
6824
6727
  var mpid,
6825
6728
  currentUser = mpInstance.Identity.getCurrentUser(),
6826
6729
  preProcessResult = mpInstance._Identity.IdentityRequest.preProcessIdentityRequest(identityApiData, callback, Modify$1);
@@ -7002,7 +6905,6 @@ var mParticle = (function () {
7002
6905
  }
7003
6906
  };
7004
6907
 
7005
- // https://go.mparticle.com/work/SQDSDKS-6354
7006
6908
  /**
7007
6909
  * Invoke these methods on the mParticle.Identity.getCurrentUser() object.
7008
6910
  * Example: mParticle.Identity.getCurrentUser().getAllUserAttributes()
@@ -7112,7 +7014,7 @@ var mParticle = (function () {
7112
7014
  */
7113
7015
  setUserAttributes: function setUserAttributes(userAttributes) {
7114
7016
  mpInstance._SessionManager.resetSessionTimer();
7115
- if (isObject(userAttributes)) {
7017
+ if (mpInstance._Helpers.isObject(userAttributes)) {
7116
7018
  if (mpInstance._Helpers.canLog()) {
7117
7019
  for (var key in userAttributes) {
7118
7020
  if (userAttributes.hasOwnProperty(key)) {
@@ -7452,51 +7354,64 @@ var mParticle = (function () {
7452
7354
  }
7453
7355
  };
7454
7356
  };
7455
-
7456
- // https://go.mparticle.com/work/SQDSDKS-6355
7457
7357
  this.parseIdentityResponse = function (xhr, previousMPID, callback, identityApiData, method, knownIdentities, parsingCachedResponse) {
7458
- var prevUser = mpInstance.Identity.getUser(previousMPID);
7459
- var prevUserMPID = prevUser ? prevUser.getMPID() : null;
7460
- var previousUIByName = prevUser ? prevUser.getUserIdentities().userIdentities : {};
7461
- var identityApiResult;
7462
- var newUser;
7463
- var newIdentitiesByType = {};
7358
+ var prevUser = mpInstance.Identity.getUser(previousMPID),
7359
+ newUser,
7360
+ mpidIsNotInCookies,
7361
+ identityApiResult,
7362
+ indexOfMPID,
7363
+ newIdentitiesByType = {},
7364
+ previousUIByName = prevUser ? prevUser.getUserIdentities().userIdentities : {},
7365
+ previousUIByNameCopy = mpInstance._Helpers.extend({}, previousUIByName);
7464
7366
  mpInstance._Store.identityCallInFlight = false;
7465
7367
  try {
7466
- var _identityApiResult;
7467
7368
  mpInstance.Logger.verbose('Parsing "' + method + '" identity response from server');
7468
- identityApiResult = xhr.responseText ? JSON.parse(xhr.responseText) : null;
7469
- mpInstance._Store.isLoggedIn = ((_identityApiResult = identityApiResult) === null || _identityApiResult === void 0 ? void 0 : _identityApiResult.is_logged_in) || false;
7470
- mpInstance._Store.mpid = identityApiResult.mpid;
7471
- if (prevUser) {
7472
- // https://go.mparticle.com/work/SQDSDKS-6329
7473
- mpInstance._Persistence.setLastSeenTime(previousMPID);
7369
+ if (xhr.responseText) {
7370
+ identityApiResult = JSON.parse(xhr.responseText);
7371
+ if (identityApiResult.hasOwnProperty('is_logged_in')) {
7372
+ mpInstance._Store.isLoggedIn = identityApiResult.is_logged_in;
7373
+ }
7474
7374
  }
7475
- var mpidIsNotInCookies = !mpInstance._Persistence.getFirstSeenTime(identityApiResult.mpid);
7476
7375
 
7477
- // https://go.mparticle.com/work/SQDSDKS-6329
7478
- mpInstance._Persistence.setFirstSeenTime(identityApiResult.mpid);
7376
+ // set currentUser
7377
+ if (!prevUser || prevUser.getMPID() && identityApiResult.mpid && identityApiResult.mpid !== prevUser.getMPID()) {
7378
+ mpInstance._Store.mpid = identityApiResult.mpid;
7379
+ if (prevUser) {
7380
+ mpInstance._Persistence.setLastSeenTime(previousMPID);
7381
+ }
7382
+ if (!mpInstance._Persistence.getFirstSeenTime(identityApiResult.mpid)) mpidIsNotInCookies = true;
7383
+ mpInstance._Persistence.setFirstSeenTime(identityApiResult.mpid);
7384
+ }
7479
7385
  if (xhr.status === 200) {
7480
- if (getFeatureFlag(CacheIdentity)) {
7386
+ if (mpInstance._Helpers.getFeatureFlag(Constants.FeatureFlags.CacheIdentity)) {
7481
7387
  cacheOrClearIdCache(method, knownIdentities, self.idCache, xhr, parsingCachedResponse);
7482
7388
  }
7483
- var incomingUser = self.IdentityAPI.getUser(identityApiResult.mpid);
7484
- var incomingMpidUIByName = incomingUser ? incomingUser.getUserIdentities().userIdentities : {};
7485
7389
  if (method === Modify$1) {
7486
7390
  newIdentitiesByType = mpInstance._Identity.IdentityRequest.combineUserIdentities(previousUIByName, identityApiData.userIdentities);
7487
7391
  mpInstance._Persistence.saveUserIdentitiesToPersistence(previousMPID, newIdentitiesByType);
7488
7392
  } else {
7489
- // https://go.mparticle.com/work/SQDSDKS-6356
7393
+ var incomingUser = self.IdentityAPI.getUser(identityApiResult.mpid);
7394
+ var incomingMpidUIByName = incomingUser ? incomingUser.getUserIdentities().userIdentities : {};
7395
+ var incomingMpidUIByNameCopy = mpInstance._Helpers.extend({}, incomingMpidUIByName);
7396
+ mpInstance.Logger.verbose('Successfully parsed Identity Response');
7397
+
7490
7398
  //this covers an edge case where, users stored before "firstSeenTime" was introduced
7491
7399
  //will not have a value for "fst" until the current MPID changes, and in some cases,
7492
7400
  //the current MPID will never change
7493
- if (method === Identify && prevUser && identityApiResult.mpid === prevUserMPID) {
7401
+ if (method === Identify && prevUser && identityApiResult.mpid === prevUser.getMPID()) {
7494
7402
  mpInstance._Persistence.setFirstSeenTime(identityApiResult.mpid);
7495
7403
  }
7496
- mpInstance._Store.addMpidToSessionHistory(identityApiResult.mpid, previousMPID);
7404
+ indexOfMPID = mpInstance._Store.currentSessionMPIDs.indexOf(identityApiResult.mpid);
7405
+ if (mpInstance._Store.sessionId && identityApiResult.mpid && previousMPID !== identityApiResult.mpid && indexOfMPID < 0) {
7406
+ mpInstance._Store.currentSessionMPIDs.push(identityApiResult.mpid);
7407
+ }
7408
+ if (indexOfMPID > -1) {
7409
+ mpInstance._Store.currentSessionMPIDs = mpInstance._Store.currentSessionMPIDs.slice(0, indexOfMPID).concat(mpInstance._Store.currentSessionMPIDs.slice(indexOfMPID + 1, mpInstance._Store.currentSessionMPIDs.length));
7410
+ mpInstance._Store.currentSessionMPIDs.push(identityApiResult.mpid);
7411
+ }
7497
7412
  mpInstance._CookieSyncManager.attemptCookieSync(previousMPID, identityApiResult.mpid, mpidIsNotInCookies);
7498
- mpInstance._Persistence.swapCurrentUser(previousMPID, identityApiResult.mpid, mpInstance._Store.currentSessionMPIDs);
7499
- if (identityApiData && !isEmpty(identityApiData.userIdentities)) {
7413
+ self.checkIdentitySwap(previousMPID, identityApiResult.mpid, mpInstance._Store.currentSessionMPIDs);
7414
+ if (identityApiData && identityApiData.userIdentities && Object.keys(identityApiData.userIdentities).length) {
7500
7415
  newIdentitiesByType = self.IdentityRequest.combineUserIdentities(incomingMpidUIByName, identityApiData.userIdentities);
7501
7416
  }
7502
7417
 
@@ -7504,31 +7419,46 @@ var mParticle = (function () {
7504
7419
  mpInstance._Persistence.saveUserIdentitiesToPersistence(identityApiResult.mpid, newIdentitiesByType);
7505
7420
  mpInstance._Persistence.update();
7506
7421
  mpInstance._Persistence.findPrevCookiesBasedOnUI(identityApiData);
7507
-
7508
- // https://go.mparticle.com/work/SQDSDKS-6357
7509
7422
  mpInstance._Store.context = identityApiResult.context || mpInstance._Store.context;
7510
7423
  }
7511
7424
  newUser = mpInstance.Identity.getCurrentUser();
7512
-
7513
- // https://go.mparticle.com/work/SQDSDKS-6359
7514
- tryOnUserAlias(prevUser, newUser, identityApiData, mpInstance.Logger);
7425
+ if (identityApiData && identityApiData.onUserAlias && mpInstance._Helpers.Validators.isFunction(identityApiData.onUserAlias)) {
7426
+ try {
7427
+ mpInstance.Logger.warning('Deprecated function onUserAlias will be removed in future releases');
7428
+ identityApiData.onUserAlias(prevUser, newUser);
7429
+ } catch (e) {
7430
+ mpInstance.Logger.error('There was an error with your onUserAlias function - ' + e);
7431
+ }
7432
+ }
7515
7433
  var persistence = mpInstance._Persistence.getPersistence();
7516
7434
  if (newUser) {
7517
7435
  mpInstance._Persistence.storeDataInMemory(persistence, newUser.getMPID());
7518
- self.reinitForwardersOnUserChange(prevUser, newUser);
7519
- self.setForwarderCallbacks(newUser, method);
7436
+ if (!prevUser || newUser.getMPID() !== prevUser.getMPID() || prevUser.isLoggedIn() !== newUser.isLoggedIn()) {
7437
+ mpInstance._Forwarders.initForwarders(newUser.getUserIdentities().userIdentities, mpInstance._APIClient.prepareForwardingStats);
7438
+ }
7439
+
7440
+ // TODO: https://go.mparticle.com/work/SQDSDKS-6036
7441
+ mpInstance._Forwarders.setForwarderUserIdentities(newUser.getUserIdentities().userIdentities);
7442
+ mpInstance._Forwarders.setForwarderOnIdentityComplete(newUser, method);
7443
+ mpInstance._Forwarders.setForwarderOnUserIdentified(newUser);
7520
7444
  }
7521
- var newIdentitiesByName = getNewIdentitiesByName(newIdentitiesByType);
7522
- var uiByName = method === Modify$1 ? previousUIByName : incomingMpidUIByName;
7523
- self.sendUserIdentityChangeEvent(newIdentitiesByName, identityApiResult.mpid, uiByName);
7445
+ var newIdentitiesByName = {};
7446
+ for (var key in newIdentitiesByType) {
7447
+ newIdentitiesByName[Types.IdentityType.getIdentityName(mpInstance._Helpers.parseNumber(key))] = newIdentitiesByType[key];
7448
+ }
7449
+ self.sendUserIdentityChangeEvent(newIdentitiesByName, method, identityApiResult.mpid, method === Modify$1 ? previousUIByNameCopy : incomingMpidUIByNameCopy);
7524
7450
  }
7525
7451
  if (callback) {
7526
- var callbackCode = xhr.status === 0 ? HTTPCodes$2.noHttpCoverage : xhr.status;
7527
- mpInstance._Helpers.invokeCallback(callback, callbackCode, identityApiResult || null, newUser);
7528
- } else if (identityApiResult && !isEmpty(identityApiResult.errors)) {
7529
- mpInstance.Logger.error('Received HTTP response code of ' + xhr.status + ' - ' + identityApiResult.errors[0].message);
7452
+ if (xhr.status === 0) {
7453
+ mpInstance._Helpers.invokeCallback(callback, HTTPCodes$2.noHttpCoverage, identityApiResult || null, newUser);
7454
+ } else {
7455
+ mpInstance._Helpers.invokeCallback(callback, xhr.status, identityApiResult || null, newUser);
7456
+ }
7457
+ } else {
7458
+ if (identityApiResult && identityApiResult.errors && identityApiResult.errors.length) {
7459
+ mpInstance.Logger.error('Received HTTP response code of ' + xhr.status + ' - ' + identityApiResult.errors[0].message);
7460
+ }
7530
7461
  }
7531
- mpInstance.Logger.verbose('Successfully parsed Identity Response');
7532
7462
  mpInstance._APIClient.processQueuedEvents();
7533
7463
  } catch (e) {
7534
7464
  if (callback) {
@@ -7542,22 +7472,23 @@ var mParticle = (function () {
7542
7472
  // compare what identities exist vs what is previously was for the specific user if they were in memory before.
7543
7473
  // if it's the first time the user is logging in, send a user identity change request with
7544
7474
 
7545
- this.sendUserIdentityChangeEvent = function (newUserIdentities, mpid, currentUserIdentities) {
7546
- // https://go.mparticle.com/work/SQDSDKS-6354
7547
- var currentUserInMemory = this.IdentityAPI.getUser(mpid);
7475
+ this.sendUserIdentityChangeEvent = function (newUserIdentities, method, mpid, prevUserIdentities) {
7476
+ var currentUserInMemory, userIdentityChangeEvent;
7477
+ if (!mpid) {
7478
+ if (method !== Modify$1) {
7479
+ return;
7480
+ }
7481
+ }
7482
+ currentUserInMemory = this.IdentityAPI.getUser(mpid);
7548
7483
  for (var identityType in newUserIdentities) {
7549
- // Verifies a change actually happened
7550
- if (currentUserIdentities[identityType] !== newUserIdentities[identityType]) {
7551
- // If a new identity type was introduced when the identity changes
7552
- // we need to notify the server so that it will associate the new
7553
- // identity type with subsequent events
7554
- var isNewUserIdentityType = !currentUserIdentities[identityType];
7555
- var userIdentityChangeEvent = self.createUserIdentityChange(identityType, newUserIdentities[identityType], currentUserIdentities[identityType], isNewUserIdentityType, currentUserInMemory);
7484
+ if (prevUserIdentities[identityType] !== newUserIdentities[identityType]) {
7485
+ var isNewUserIdentityType = !prevUserIdentities[identityType];
7486
+ userIdentityChangeEvent = self.createUserIdentityChange(identityType, newUserIdentities[identityType], prevUserIdentities[identityType], isNewUserIdentityType, currentUserInMemory);
7556
7487
  mpInstance._APIClient.sendEventToServer(userIdentityChangeEvent);
7557
7488
  }
7558
7489
  }
7559
7490
  };
7560
- this.createUserIdentityChange = function (identityType, newIdentity, oldIdentity, isIdentityTypeNewToBatch, userInMemory) {
7491
+ this.createUserIdentityChange = function (identityType, newIdentity, oldIdentity, newCreatedThisBatch, userInMemory) {
7561
7492
  var userIdentityChangeEvent;
7562
7493
  userIdentityChangeEvent = mpInstance._ServerModel.createEventObject({
7563
7494
  messageType: Types.MessageType.UserIdentityChange,
@@ -7565,7 +7496,7 @@ var mParticle = (function () {
7565
7496
  New: {
7566
7497
  IdentityType: identityType,
7567
7498
  Identity: newIdentity,
7568
- CreatedThisBatch: isIdentityTypeNewToBatch
7499
+ CreatedThisBatch: newCreatedThisBatch
7569
7500
  },
7570
7501
  Old: {
7571
7502
  IdentityType: identityType,
@@ -7602,29 +7533,6 @@ var mParticle = (function () {
7602
7533
  }
7603
7534
  return userAttributeChangeEvent;
7604
7535
  };
7605
- this.reinitForwardersOnUserChange = function (prevUser, newUser) {
7606
- if (didUserChange(prevUser, newUser)) {
7607
- mpInstance._Forwarders.initForwarders(newUser.getUserIdentities().userIdentities, mpInstance._APIClient.prepareForwardingStats);
7608
- }
7609
- };
7610
- this.setForwarderCallbacks = function (user, method) {
7611
- // https://go.mparticle.com/work/SQDSDKS-6036
7612
- mpInstance._Forwarders.setForwarderUserIdentities(user.getUserIdentities().userIdentities);
7613
- mpInstance._Forwarders.setForwarderOnIdentityComplete(user, method);
7614
- mpInstance._Forwarders.setForwarderOnUserIdentified(user);
7615
- };
7616
- }
7617
-
7618
- // https://go.mparticle.com/work/SQDSDKS-6359
7619
- function tryOnUserAlias(previousUser, newUser, identityApiData, logger) {
7620
- if (identityApiData && identityApiData.onUserAlias && isFunction(identityApiData.onUserAlias)) {
7621
- try {
7622
- logger.warning(generateDeprecationMessage('onUserAlias'));
7623
- identityApiData.onUserAlias(previousUser, newUser);
7624
- } catch (e) {
7625
- logger.error('There was an error with your onUserAlias function - ' + e);
7626
- }
7627
- }
7628
7536
  }
7629
7537
 
7630
7538
  var CCPAPurpose = Constants.CCPAPurpose;
@@ -8431,7 +8339,6 @@ var mParticle = (function () {
8431
8339
  var xhr,
8432
8340
  xhrCallback = function xhrCallback() {
8433
8341
  if (xhr.readyState === 4) {
8434
- // https://go.mparticle.com/work/SQDSDKS-6368
8435
8342
  mpInstance.Logger.verbose('Received ' + xhr.statusText + ' from server');
8436
8343
  //only parse error messages from failing requests
8437
8344
  if (xhr.status !== 200 && xhr.status !== 202) {
@@ -8464,7 +8371,6 @@ var mParticle = (function () {
8464
8371
  previousMPID,
8465
8372
  xhrCallback = function xhrCallback() {
8466
8373
  if (xhr.readyState === 4) {
8467
- // https://go.mparticle.com/work/SQDSDKS-6368
8468
8374
  mpInstance.Logger.verbose('Received ' + xhr.statusText + ' from server');
8469
8375
  parseIdentityResponse(xhr, previousMPID, callback, originalIdentityApiData, method, knownIdentities, false);
8470
8376
  }
@@ -9778,6 +9684,60 @@ var mParticle = (function () {
9778
9684
  return _BatchValidator;
9779
9685
  }();
9780
9686
 
9687
+ var EventTypeEnum;
9688
+ (function (EventTypeEnum) {
9689
+ EventTypeEnum[EventTypeEnum["Unknown"] = 0] = "Unknown";
9690
+ EventTypeEnum[EventTypeEnum["Navigation"] = 1] = "Navigation";
9691
+ EventTypeEnum[EventTypeEnum["Location"] = 2] = "Location";
9692
+ EventTypeEnum[EventTypeEnum["Search"] = 3] = "Search";
9693
+ EventTypeEnum[EventTypeEnum["Transaction"] = 4] = "Transaction";
9694
+ EventTypeEnum[EventTypeEnum["UserContent"] = 5] = "UserContent";
9695
+ EventTypeEnum[EventTypeEnum["UserPreference"] = 6] = "UserPreference";
9696
+ EventTypeEnum[EventTypeEnum["Social"] = 7] = "Social";
9697
+ EventTypeEnum[EventTypeEnum["Other"] = 8] = "Other";
9698
+ EventTypeEnum[EventTypeEnum["Media"] = 9] = "Media";
9699
+ })(EventTypeEnum || (EventTypeEnum = {}));
9700
+ // TODO: https://mparticle-eng.atlassian.net/browse/SQDSDKS-5403
9701
+ var MessageType;
9702
+ (function (MessageType) {
9703
+ MessageType[MessageType["SessionStart"] = 1] = "SessionStart";
9704
+ MessageType[MessageType["SessionEnd"] = 2] = "SessionEnd";
9705
+ MessageType[MessageType["PageView"] = 3] = "PageView";
9706
+ MessageType[MessageType["PageEvent"] = 4] = "PageEvent";
9707
+ MessageType[MessageType["CrashReport"] = 5] = "CrashReport";
9708
+ MessageType[MessageType["OptOut"] = 6] = "OptOut";
9709
+ MessageType[MessageType["AppStateTransition"] = 10] = "AppStateTransition";
9710
+ MessageType[MessageType["Profile"] = 14] = "Profile";
9711
+ MessageType[MessageType["Commerce"] = 16] = "Commerce";
9712
+ MessageType[MessageType["UserAttributeChange"] = 17] = "UserAttributeChange";
9713
+ MessageType[MessageType["UserIdentityChange"] = 18] = "UserIdentityChange";
9714
+ MessageType[MessageType["Media"] = 20] = "Media";
9715
+ })(MessageType || (MessageType = {}));
9716
+ var IdentityType;
9717
+ (function (IdentityType) {
9718
+ IdentityType[IdentityType["Other"] = 0] = "Other";
9719
+ IdentityType[IdentityType["CustomerId"] = 1] = "CustomerId";
9720
+ IdentityType[IdentityType["Facebook"] = 2] = "Facebook";
9721
+ IdentityType[IdentityType["Twitter"] = 3] = "Twitter";
9722
+ IdentityType[IdentityType["Google"] = 4] = "Google";
9723
+ IdentityType[IdentityType["Microsoft"] = 5] = "Microsoft";
9724
+ IdentityType[IdentityType["Yahoo"] = 6] = "Yahoo";
9725
+ IdentityType[IdentityType["Email"] = 7] = "Email";
9726
+ IdentityType[IdentityType["FacebookCustomAudienceId"] = 9] = "FacebookCustomAudienceId";
9727
+ IdentityType[IdentityType["Other2"] = 10] = "Other2";
9728
+ IdentityType[IdentityType["Other3"] = 11] = "Other3";
9729
+ IdentityType[IdentityType["Other4"] = 12] = "Other4";
9730
+ IdentityType[IdentityType["Other5"] = 13] = "Other5";
9731
+ IdentityType[IdentityType["Other6"] = 14] = "Other6";
9732
+ IdentityType[IdentityType["Other7"] = 15] = "Other7";
9733
+ IdentityType[IdentityType["Other8"] = 16] = "Other8";
9734
+ IdentityType[IdentityType["Other9"] = 17] = "Other9";
9735
+ IdentityType[IdentityType["Other10"] = 18] = "Other10";
9736
+ IdentityType[IdentityType["MobileNumber"] = 19] = "MobileNumber";
9737
+ IdentityType[IdentityType["PhoneNumber2"] = 20] = "PhoneNumber2";
9738
+ IdentityType[IdentityType["PhoneNumber3"] = 21] = "PhoneNumber3";
9739
+ })(IdentityType || (IdentityType = {}));
9740
+
9781
9741
  var MPSideloadedKit = /** @class */function () {
9782
9742
  function MPSideloadedKit(unregisteredKitInstance) {
9783
9743
  this.filterDictionary = {