@mparticle/web-sdk 2.18.2 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mparticle.common.js +30 -12
- package/dist/mparticle.esm.js +30 -12
- package/dist/mparticle.js +318 -280
- package/package.json +1 -1
- package/src/{apiClient.js → apiClient.ts} +60 -20
- package/src/batchUploader.ts +146 -109
- package/src/consent.interfaces.ts +89 -0
- package/src/mockBatchCreator.ts +9 -4
- package/src/sdkRuntimeModels.ts +24 -28
- package/src/sdkToEventsApiConverter.ts +64 -59
- package/src/serverModel.ts +6 -26
- package/src/store.ts +1 -1
- package/src/vault.ts +141 -0
package/dist/mparticle.js
CHANGED
|
@@ -725,7 +725,7 @@ var mParticle = (function () {
|
|
|
725
725
|
Environment: Environment
|
|
726
726
|
};
|
|
727
727
|
|
|
728
|
-
var version = "2.
|
|
728
|
+
var version = "2.19.0";
|
|
729
729
|
|
|
730
730
|
var Constants = {
|
|
731
731
|
sdkVersion: version,
|
|
@@ -1244,6 +1244,173 @@ var mParticle = (function () {
|
|
|
1244
1244
|
})(exports.UserIdentityChangeEventEventTypeEnum || (exports.UserIdentityChangeEventEventTypeEnum = {}));
|
|
1245
1245
|
} (dist));
|
|
1246
1246
|
|
|
1247
|
+
var slugify$1 = {exports: {}};
|
|
1248
|
+
|
|
1249
|
+
(function (module, exports) {
|
|
1250
|
+
(function (name, root, factory) {
|
|
1251
|
+
{
|
|
1252
|
+
module.exports = factory();
|
|
1253
|
+
module.exports['default'] = factory();
|
|
1254
|
+
}
|
|
1255
|
+
}('slugify', commonjsGlobal, function () {
|
|
1256
|
+
var charMap = JSON.parse('{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ō":"O","ō":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","Ə":"E","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","ə":"e","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"E\'","Ը":"Y\'","Թ":"T\'","Ժ":"JH","Ի":"I","Լ":"L","Խ":"X","Ծ":"C\'","Կ":"K","Հ":"H","Ձ":"D\'","Ղ":"GH","Ճ":"TW","Մ":"M","Յ":"Y","Ն":"N","Շ":"SH","Չ":"CH","Պ":"P","Ջ":"J","Ռ":"R\'","Ս":"S","Վ":"V","Տ":"T","Ր":"R","Ց":"C","Փ":"P\'","Ք":"Q\'","Օ":"O\'\'","Ֆ":"F","և":"EV","ء":"a","آ":"aa","أ":"a","ؤ":"u","إ":"i","ئ":"e","ا":"a","ب":"b","ة":"h","ت":"t","ث":"th","ج":"j","ح":"h","خ":"kh","د":"d","ذ":"th","ر":"r","ز":"z","س":"s","ش":"sh","ص":"s","ض":"dh","ط":"t","ظ":"z","ع":"a","غ":"gh","ف":"f","ق":"q","ك":"k","ل":"l","م":"m","ن":"n","ه":"h","و":"w","ى":"a","ي":"y","ً":"an","ٌ":"on","ٍ":"en","َ":"a","ُ":"u","ِ":"e","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","پ":"p","چ":"ch","ژ":"zh","ک":"k","گ":"g","ی":"y","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ṣ":"S","ṣ":"s","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","–":"-","‘":"\'","’":"\'","“":"\\\"","”":"\\\"","„":"\\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₺":"turkish lira","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial","ﻵ":"laa","ﻷ":"laa","ﻹ":"lai","ﻻ":"la"}');
|
|
1257
|
+
var locales = JSON.parse('{"bg":{"Й":"Y","Ц":"Ts","Щ":"Sht","Ъ":"A","Ь":"Y","й":"y","ц":"ts","щ":"sht","ъ":"a","ь":"y"},"de":{"Ä":"AE","ä":"ae","Ö":"OE","ö":"oe","Ü":"UE","ü":"ue","ß":"ss","%":"prozent","&":"und","|":"oder","∑":"summe","∞":"unendlich","♥":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","¢":"centavos","£":"libras","¤":"moneda","₣":"francos","∑":"suma","∞":"infinito","♥":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","¢":"centime","£":"livre","¤":"devise","₣":"franc","∑":"somme","∞":"infini","♥":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","¢":"centavo","∑":"soma","£":"libra","∞":"infinito","♥":"amor"},"uk":{"И":"Y","и":"y","Й":"Y","й":"y","Ц":"Ts","ц":"ts","Х":"Kh","х":"kh","Щ":"Shch","щ":"shch","Г":"H","г":"h"},"vi":{"Đ":"D","đ":"d"},"da":{"Ø":"OE","ø":"oe","Å":"AA","å":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"større end"},"nb":{"&":"og","Å":"AA","Æ":"AE","Ø":"OE","å":"aa","æ":"ae","ø":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","Å":"AA","Ä":"AE","Ö":"OE","å":"aa","ä":"ae","ö":"oe"}}');
|
|
1258
|
+
|
|
1259
|
+
function replace (string, options) {
|
|
1260
|
+
if (typeof string !== 'string') {
|
|
1261
|
+
throw new Error('slugify: string argument expected')
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
options = (typeof options === 'string')
|
|
1265
|
+
? {replacement: options}
|
|
1266
|
+
: options || {};
|
|
1267
|
+
|
|
1268
|
+
var locale = locales[options.locale] || {};
|
|
1269
|
+
|
|
1270
|
+
var replacement = options.replacement === undefined ? '-' : options.replacement;
|
|
1271
|
+
|
|
1272
|
+
var trim = options.trim === undefined ? true : options.trim;
|
|
1273
|
+
|
|
1274
|
+
var slug = string.normalize().split('')
|
|
1275
|
+
// replace characters based on charMap
|
|
1276
|
+
.reduce(function (result, ch) {
|
|
1277
|
+
var appendChar = locale[ch] || charMap[ch] || ch;
|
|
1278
|
+
if (appendChar === replacement) {
|
|
1279
|
+
appendChar = ' ';
|
|
1280
|
+
}
|
|
1281
|
+
return result + appendChar
|
|
1282
|
+
// remove not allowed characters
|
|
1283
|
+
.replace(options.remove || /[^\w\s$*_+~.()'"!\-:@]+/g, '')
|
|
1284
|
+
}, '');
|
|
1285
|
+
|
|
1286
|
+
if (options.strict) {
|
|
1287
|
+
slug = slug.replace(/[^A-Za-z0-9\s]/g, '');
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
if (trim) {
|
|
1291
|
+
slug = slug.trim();
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
// Replace spaces with replacement character, treating multiple consecutive
|
|
1295
|
+
// spaces as a single space.
|
|
1296
|
+
slug = slug.replace(/\s+/g, replacement);
|
|
1297
|
+
|
|
1298
|
+
if (options.lower) {
|
|
1299
|
+
slug = slug.toLowerCase();
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
return slug
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
replace.extend = function (customMap) {
|
|
1306
|
+
Object.assign(charMap, customMap);
|
|
1307
|
+
};
|
|
1308
|
+
|
|
1309
|
+
return replace
|
|
1310
|
+
}));
|
|
1311
|
+
} (slugify$1));
|
|
1312
|
+
|
|
1313
|
+
var slugify = slugify$1.exports;
|
|
1314
|
+
|
|
1315
|
+
var inArray = function inArray(items, name) {
|
|
1316
|
+
var i = 0;
|
|
1317
|
+
|
|
1318
|
+
if (Array.prototype.indexOf) {
|
|
1319
|
+
return items.indexOf(name, 0) >= 0;
|
|
1320
|
+
} else {
|
|
1321
|
+
for (var n = items.length; i < n; i++) {
|
|
1322
|
+
if (i in items && items[i] === name) {
|
|
1323
|
+
return true;
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
return false;
|
|
1329
|
+
};
|
|
1330
|
+
|
|
1331
|
+
var findKeyInObject = function findKeyInObject(obj, key) {
|
|
1332
|
+
if (key && obj) {
|
|
1333
|
+
for (var prop in obj) {
|
|
1334
|
+
if (obj.hasOwnProperty(prop) && prop.toLowerCase() === key.toLowerCase()) {
|
|
1335
|
+
return prop;
|
|
1336
|
+
}
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
return null;
|
|
1341
|
+
};
|
|
1342
|
+
|
|
1343
|
+
var isObject = function isObject(value) {
|
|
1344
|
+
var objType = Object.prototype.toString.call(value);
|
|
1345
|
+
return objType === '[object Object]' || objType === '[object Error]';
|
|
1346
|
+
};
|
|
1347
|
+
|
|
1348
|
+
var parseNumber = function parseNumber(value) {
|
|
1349
|
+
if (isNaN(value) || !isFinite(value)) {
|
|
1350
|
+
return 0;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
var floatValue = parseFloat(value);
|
|
1354
|
+
return isNaN(floatValue) ? 0 : floatValue;
|
|
1355
|
+
};
|
|
1356
|
+
|
|
1357
|
+
var parseStringOrNumber = function parseStringOrNumber(value) {
|
|
1358
|
+
if (isStringOrNumber(value)) {
|
|
1359
|
+
return value;
|
|
1360
|
+
} else {
|
|
1361
|
+
return null;
|
|
1362
|
+
}
|
|
1363
|
+
}; // FIXME: REFACTOR for V3
|
|
1364
|
+
// only used in store.js to sanitize server-side formatting of
|
|
1365
|
+
// booleans when checking for `isDevelopmentMode`
|
|
1366
|
+
// Should be removed in v3
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
var returnConvertedBoolean = function returnConvertedBoolean(data) {
|
|
1370
|
+
if (data === 'false' || data === '0') {
|
|
1371
|
+
return false;
|
|
1372
|
+
} else {
|
|
1373
|
+
return Boolean(data);
|
|
1374
|
+
}
|
|
1375
|
+
};
|
|
1376
|
+
|
|
1377
|
+
var decoded = function decoded(s) {
|
|
1378
|
+
return decodeURIComponent(s.replace(/\+/g, ' '));
|
|
1379
|
+
};
|
|
1380
|
+
|
|
1381
|
+
var converted = function converted(s) {
|
|
1382
|
+
if (s.indexOf('"') === 0) {
|
|
1383
|
+
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
return s;
|
|
1387
|
+
};
|
|
1388
|
+
|
|
1389
|
+
var isString = function isString(value) {
|
|
1390
|
+
return typeof value === 'string';
|
|
1391
|
+
};
|
|
1392
|
+
|
|
1393
|
+
var isNumber = function isNumber(value) {
|
|
1394
|
+
return typeof value === 'number';
|
|
1395
|
+
};
|
|
1396
|
+
|
|
1397
|
+
var isFunction = function isFunction(fn) {
|
|
1398
|
+
return typeof fn === 'function';
|
|
1399
|
+
}; // TODO: Refactor this to a regex
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
var isDataPlanSlug = function isDataPlanSlug(str) {
|
|
1403
|
+
return isString(str) && str === slugify(str);
|
|
1404
|
+
};
|
|
1405
|
+
|
|
1406
|
+
var isStringOrNumber = function isStringOrNumber(value) {
|
|
1407
|
+
return isString(value) || isNumber(value);
|
|
1408
|
+
};
|
|
1409
|
+
|
|
1410
|
+
var isEmpty = function isEmpty(value) {
|
|
1411
|
+
return value == null || !(Object.keys(value) || value).length;
|
|
1412
|
+
};
|
|
1413
|
+
|
|
1247
1414
|
function convertEvents(mpid, sdkEvents, mpInstance) {
|
|
1248
1415
|
if (!mpid) {
|
|
1249
1416
|
return null;
|
|
@@ -1253,6 +1420,7 @@ var mParticle = (function () {
|
|
|
1253
1420
|
return null;
|
|
1254
1421
|
}
|
|
1255
1422
|
|
|
1423
|
+
var user = mpInstance.Identity.getCurrentUser();
|
|
1256
1424
|
var uploadEvents = [];
|
|
1257
1425
|
var lastEvent = null;
|
|
1258
1426
|
|
|
@@ -1273,6 +1441,14 @@ var mParticle = (function () {
|
|
|
1273
1441
|
return null;
|
|
1274
1442
|
}
|
|
1275
1443
|
|
|
1444
|
+
var currentConsentState = null; // Add the consent state from either the Last Event or the user
|
|
1445
|
+
|
|
1446
|
+
if (!isEmpty(lastEvent.ConsentState)) {
|
|
1447
|
+
currentConsentState = lastEvent.ConsentState;
|
|
1448
|
+
} else if (!isEmpty(user)) {
|
|
1449
|
+
currentConsentState = user.getConsentState();
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1276
1452
|
var upload = {
|
|
1277
1453
|
source_request_id: mpInstance._Helpers.generateUniqueId(),
|
|
1278
1454
|
mpid: mpid,
|
|
@@ -1293,7 +1469,7 @@ var mParticle = (function () {
|
|
|
1293
1469
|
},
|
|
1294
1470
|
user_attributes: lastEvent.UserAttributes,
|
|
1295
1471
|
user_identities: convertUserIdentities(lastEvent.UserIdentities),
|
|
1296
|
-
consent_state: convertConsentState(
|
|
1472
|
+
consent_state: convertConsentState(currentConsentState),
|
|
1297
1473
|
integration_attributes: lastEvent.IntegrationAttributes
|
|
1298
1474
|
};
|
|
1299
1475
|
|
|
@@ -1309,7 +1485,7 @@ var mParticle = (function () {
|
|
|
1309
1485
|
return upload;
|
|
1310
1486
|
}
|
|
1311
1487
|
function convertConsentState(sdkConsentState) {
|
|
1312
|
-
if (
|
|
1488
|
+
if (isEmpty(sdkConsentState)) {
|
|
1313
1489
|
return null;
|
|
1314
1490
|
}
|
|
1315
1491
|
|
|
@@ -1935,179 +2111,27 @@ var mParticle = (function () {
|
|
|
1935
2111
|
}
|
|
1936
2112
|
}
|
|
1937
2113
|
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
function replace (string, options) {
|
|
1951
|
-
if (typeof string !== 'string') {
|
|
1952
|
-
throw new Error('slugify: string argument expected')
|
|
1953
|
-
}
|
|
1954
|
-
|
|
1955
|
-
options = (typeof options === 'string')
|
|
1956
|
-
? {replacement: options}
|
|
1957
|
-
: options || {};
|
|
1958
|
-
|
|
1959
|
-
var locale = locales[options.locale] || {};
|
|
1960
|
-
|
|
1961
|
-
var replacement = options.replacement === undefined ? '-' : options.replacement;
|
|
1962
|
-
|
|
1963
|
-
var trim = options.trim === undefined ? true : options.trim;
|
|
1964
|
-
|
|
1965
|
-
var slug = string.normalize().split('')
|
|
1966
|
-
// replace characters based on charMap
|
|
1967
|
-
.reduce(function (result, ch) {
|
|
1968
|
-
var appendChar = locale[ch] || charMap[ch] || ch;
|
|
1969
|
-
if (appendChar === replacement) {
|
|
1970
|
-
appendChar = ' ';
|
|
1971
|
-
}
|
|
1972
|
-
return result + appendChar
|
|
1973
|
-
// remove not allowed characters
|
|
1974
|
-
.replace(options.remove || /[^\w\s$*_+~.()'"!\-:@]+/g, '')
|
|
1975
|
-
}, '');
|
|
1976
|
-
|
|
1977
|
-
if (options.strict) {
|
|
1978
|
-
slug = slug.replace(/[^A-Za-z0-9\s]/g, '');
|
|
1979
|
-
}
|
|
1980
|
-
|
|
1981
|
-
if (trim) {
|
|
1982
|
-
slug = slug.trim();
|
|
1983
|
-
}
|
|
1984
|
-
|
|
1985
|
-
// Replace spaces with replacement character, treating multiple consecutive
|
|
1986
|
-
// spaces as a single space.
|
|
1987
|
-
slug = slug.replace(/\s+/g, replacement);
|
|
1988
|
-
|
|
1989
|
-
if (options.lower) {
|
|
1990
|
-
slug = slug.toLowerCase();
|
|
1991
|
-
}
|
|
1992
|
-
|
|
1993
|
-
return slug
|
|
1994
|
-
}
|
|
1995
|
-
|
|
1996
|
-
replace.extend = function (customMap) {
|
|
1997
|
-
Object.assign(charMap, customMap);
|
|
1998
|
-
};
|
|
1999
|
-
|
|
2000
|
-
return replace
|
|
2001
|
-
}));
|
|
2002
|
-
} (slugify$1));
|
|
2003
|
-
|
|
2004
|
-
var slugify = slugify$1.exports;
|
|
2005
|
-
|
|
2006
|
-
var inArray = function inArray(items, name) {
|
|
2007
|
-
var i = 0;
|
|
2008
|
-
|
|
2009
|
-
if (Array.prototype.indexOf) {
|
|
2010
|
-
return items.indexOf(name, 0) >= 0;
|
|
2011
|
-
} else {
|
|
2012
|
-
for (var n = items.length; i < n; i++) {
|
|
2013
|
-
if (i in items && items[i] === name) {
|
|
2014
|
-
return true;
|
|
2015
|
-
}
|
|
2016
|
-
}
|
|
2017
|
-
}
|
|
2018
|
-
|
|
2019
|
-
return false;
|
|
2020
|
-
};
|
|
2021
|
-
|
|
2022
|
-
var findKeyInObject = function findKeyInObject(obj, key) {
|
|
2023
|
-
if (key && obj) {
|
|
2024
|
-
for (var prop in obj) {
|
|
2025
|
-
if (obj.hasOwnProperty(prop) && prop.toLowerCase() === key.toLowerCase()) {
|
|
2026
|
-
return prop;
|
|
2027
|
-
}
|
|
2028
|
-
}
|
|
2029
|
-
}
|
|
2030
|
-
|
|
2031
|
-
return null;
|
|
2032
|
-
};
|
|
2033
|
-
|
|
2034
|
-
var isObject = function isObject(value) {
|
|
2035
|
-
var objType = Object.prototype.toString.call(value);
|
|
2036
|
-
return objType === '[object Object]' || objType === '[object Error]';
|
|
2037
|
-
};
|
|
2038
|
-
|
|
2039
|
-
var parseNumber = function parseNumber(value) {
|
|
2040
|
-
if (isNaN(value) || !isFinite(value)) {
|
|
2041
|
-
return 0;
|
|
2042
|
-
}
|
|
2043
|
-
|
|
2044
|
-
var floatValue = parseFloat(value);
|
|
2045
|
-
return isNaN(floatValue) ? 0 : floatValue;
|
|
2046
|
-
};
|
|
2047
|
-
|
|
2048
|
-
var parseStringOrNumber = function parseStringOrNumber(value) {
|
|
2049
|
-
if (isStringOrNumber(value)) {
|
|
2050
|
-
return value;
|
|
2051
|
-
} else {
|
|
2052
|
-
return null;
|
|
2053
|
-
}
|
|
2054
|
-
}; // FIXME: REFACTOR for V3
|
|
2055
|
-
// only used in store.js to sanitize server-side formatting of
|
|
2056
|
-
// booleans when checking for `isDevelopmentMode`
|
|
2057
|
-
// Should be removed in v3
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
var returnConvertedBoolean = function returnConvertedBoolean(data) {
|
|
2061
|
-
if (data === 'false' || data === '0') {
|
|
2062
|
-
return false;
|
|
2063
|
-
} else {
|
|
2064
|
-
return Boolean(data);
|
|
2065
|
-
}
|
|
2066
|
-
};
|
|
2067
|
-
|
|
2068
|
-
var decoded = function decoded(s) {
|
|
2069
|
-
return decodeURIComponent(s.replace(/\+/g, ' '));
|
|
2070
|
-
};
|
|
2071
|
-
|
|
2072
|
-
var converted = function converted(s) {
|
|
2073
|
-
if (s.indexOf('"') === 0) {
|
|
2074
|
-
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
|
|
2075
|
-
}
|
|
2076
|
-
|
|
2077
|
-
return s;
|
|
2078
|
-
};
|
|
2079
|
-
|
|
2080
|
-
var isString = function isString(value) {
|
|
2081
|
-
return typeof value === 'string';
|
|
2082
|
-
};
|
|
2083
|
-
|
|
2084
|
-
var isNumber = function isNumber(value) {
|
|
2085
|
-
return typeof value === 'number';
|
|
2086
|
-
};
|
|
2087
|
-
|
|
2088
|
-
var isFunction = function isFunction(fn) {
|
|
2089
|
-
return typeof fn === 'function';
|
|
2090
|
-
}; // TODO: Refactor this to a regex
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
var isDataPlanSlug = function isDataPlanSlug(str) {
|
|
2094
|
-
return isString(str) && str === slugify(str);
|
|
2095
|
-
};
|
|
2096
|
-
|
|
2097
|
-
var isStringOrNumber = function isStringOrNumber(value) {
|
|
2098
|
-
return isString(value) || isNumber(value);
|
|
2099
|
-
};
|
|
2100
|
-
|
|
2101
|
-
var isEmpty = function isEmpty(value) {
|
|
2102
|
-
return value == null || !(Object.keys(value) || value).length;
|
|
2103
|
-
};
|
|
2114
|
+
/**
|
|
2115
|
+
* BatchUploader contains all the logic to upload batches to mParticle.
|
|
2116
|
+
* It queues events as they come in and at set intervals turns them into batches.
|
|
2117
|
+
* It then attempts to upload them to mParticle.
|
|
2118
|
+
*
|
|
2119
|
+
* These uploads happen on an interval basis using window.fetch or XHR
|
|
2120
|
+
* requests, depending on what is available in the browser.
|
|
2121
|
+
*
|
|
2122
|
+
* Uploads can also be triggered on browser visibility/focus changes via an
|
|
2123
|
+
* event listener, which then uploads to mPartice via the browser's Beacon API.
|
|
2124
|
+
*/
|
|
2104
2125
|
|
|
2105
2126
|
var BatchUploader =
|
|
2106
2127
|
/** @class */
|
|
2107
2128
|
function () {
|
|
2129
|
+
/**
|
|
2130
|
+
* Creates an instance of a BatchUploader
|
|
2131
|
+
* @param {MParticleWebSDK} mpInstance - the mParticle SDK instance
|
|
2132
|
+
* @param {number} uploadInterval - the desired upload interval in milliseconds
|
|
2133
|
+
*/
|
|
2108
2134
|
function BatchUploader(mpInstance, uploadInterval) {
|
|
2109
|
-
var _this_1 = this;
|
|
2110
|
-
|
|
2111
2135
|
this.mpInstance = mpInstance;
|
|
2112
2136
|
this.uploadIntervalMillis = uploadInterval;
|
|
2113
2137
|
this.batchingEnabled = uploadInterval >= BatchUploader.MINIMUM_INTERVAL_MILLIS;
|
|
@@ -2116,8 +2140,8 @@ var mParticle = (function () {
|
|
|
2116
2140
|
this.uploadIntervalMillis = BatchUploader.MINIMUM_INTERVAL_MILLIS;
|
|
2117
2141
|
}
|
|
2118
2142
|
|
|
2119
|
-
this.
|
|
2120
|
-
this.
|
|
2143
|
+
this.eventsQueuedForProcessing = [];
|
|
2144
|
+
this.batchesQueuedForProcessing = [];
|
|
2121
2145
|
var _a = this.mpInstance._Store,
|
|
2122
2146
|
SDKConfig = _a.SDKConfig,
|
|
2123
2147
|
devToken = _a.devToken;
|
|
@@ -2125,14 +2149,16 @@ var mParticle = (function () {
|
|
|
2125
2149
|
var baseUrl = this.mpInstance._Helpers.createServiceUrl(SDKConfig.v3SecureServiceUrl, devToken);
|
|
2126
2150
|
|
|
2127
2151
|
this.uploadUrl = "".concat(baseUrl, "/events");
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
}, this.uploadIntervalMillis);
|
|
2152
|
+
this.uploader = window.fetch ? new FetchUploader(this.uploadUrl) : new XHRUploader(this.uploadUrl);
|
|
2153
|
+
this.triggerUploadInterval(true, false);
|
|
2131
2154
|
this.addEventListeners();
|
|
2132
|
-
}
|
|
2155
|
+
} // Adds listeners to be used trigger Navigator.sendBeacon if the browser
|
|
2156
|
+
// loses focus for any reason, such as closing browser tab or minimizing window
|
|
2157
|
+
|
|
2133
2158
|
|
|
2134
2159
|
BatchUploader.prototype.addEventListeners = function () {
|
|
2135
|
-
var _this = this;
|
|
2160
|
+
var _this = this; // visibility change is a document property, not window
|
|
2161
|
+
|
|
2136
2162
|
|
|
2137
2163
|
document.addEventListener('visibilitychange', function () {
|
|
2138
2164
|
_this.prepareAndUpload(false, _this.isBeaconAvailable());
|
|
@@ -2151,13 +2177,36 @@ var mParticle = (function () {
|
|
|
2151
2177
|
}
|
|
2152
2178
|
|
|
2153
2179
|
return false;
|
|
2180
|
+
}; // Triggers a setTimeout for prepareAndUpload
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
BatchUploader.prototype.triggerUploadInterval = function (triggerFuture, useBeacon) {
|
|
2184
|
+
var _this_1 = this;
|
|
2185
|
+
|
|
2186
|
+
if (triggerFuture === void 0) {
|
|
2187
|
+
triggerFuture = false;
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
if (useBeacon === void 0) {
|
|
2191
|
+
useBeacon = false;
|
|
2192
|
+
}
|
|
2193
|
+
|
|
2194
|
+
setTimeout(function () {
|
|
2195
|
+
_this_1.prepareAndUpload(triggerFuture, useBeacon);
|
|
2196
|
+
}, this.uploadIntervalMillis);
|
|
2154
2197
|
};
|
|
2198
|
+
/**
|
|
2199
|
+
* This method will queue a single Event which will eventually be processed into a Batch
|
|
2200
|
+
* @param event event that should be queued
|
|
2201
|
+
*/
|
|
2202
|
+
|
|
2155
2203
|
|
|
2156
2204
|
BatchUploader.prototype.queueEvent = function (event) {
|
|
2157
2205
|
if (!isEmpty(event)) {
|
|
2158
|
-
this.
|
|
2206
|
+
this.eventsQueuedForProcessing.push(event);
|
|
2159
2207
|
this.mpInstance.Logger.verbose("Queuing event: ".concat(JSON.stringify(event)));
|
|
2160
|
-
this.mpInstance.Logger.verbose("Queued event count: ".concat(this.
|
|
2208
|
+
this.mpInstance.Logger.verbose("Queued event count: ".concat(this.eventsQueuedForProcessing.length)); // TODO: Remove this check once the v2 code path is removed
|
|
2209
|
+
// https://go.mparticle.com/work/SQDSDKS-3720
|
|
2161
2210
|
|
|
2162
2211
|
if (!this.batchingEnabled || Types.TriggerUploadType[event.EventDataType]) {
|
|
2163
2212
|
this.prepareAndUpload(false, false);
|
|
@@ -2175,7 +2224,7 @@ var mParticle = (function () {
|
|
|
2175
2224
|
*/
|
|
2176
2225
|
|
|
2177
2226
|
|
|
2178
|
-
BatchUploader.
|
|
2227
|
+
BatchUploader.createNewBatches = function (sdkEvents, defaultUser, mpInstance) {
|
|
2179
2228
|
if (!defaultUser || !sdkEvents || !sdkEvents.length) {
|
|
2180
2229
|
return null;
|
|
2181
2230
|
} //bucket by MPID, and then by session, ordered by timestamp
|
|
@@ -2255,157 +2304,139 @@ var mParticle = (function () {
|
|
|
2255
2304
|
|
|
2256
2305
|
BatchUploader.prototype.prepareAndUpload = function (triggerFuture, useBeacon) {
|
|
2257
2306
|
return __awaiter(this, void 0, void 0, function () {
|
|
2258
|
-
var currentUser, currentEvents,
|
|
2307
|
+
var currentUser, currentEvents, newBatches, batchesToUpload, batchesThatDidNotUpload, promises;
|
|
2259
2308
|
|
|
2260
|
-
var _a
|
|
2309
|
+
var _a;
|
|
2261
2310
|
|
|
2262
2311
|
var _this_1 = this;
|
|
2263
2312
|
|
|
2264
|
-
return __generator(this, function (
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
this.pendingEvents = [];
|
|
2270
|
-
newUploads = BatchUploader.createNewUploads(currentEvents, currentUser, this.mpInstance);
|
|
2313
|
+
return __generator(this, function (_b) {
|
|
2314
|
+
currentUser = this.mpInstance.Identity.getCurrentUser();
|
|
2315
|
+
currentEvents = this.eventsQueuedForProcessing;
|
|
2316
|
+
this.eventsQueuedForProcessing = [];
|
|
2317
|
+
newBatches = BatchUploader.createNewBatches(currentEvents, currentUser, this.mpInstance);
|
|
2271
2318
|
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2319
|
+
if (!isEmpty(newBatches)) {
|
|
2320
|
+
(_a = this.batchesQueuedForProcessing).push.apply(_a, newBatches);
|
|
2321
|
+
}
|
|
2275
2322
|
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2323
|
+
batchesToUpload = this.batchesQueuedForProcessing;
|
|
2324
|
+
batchesThatDidNotUpload = [];
|
|
2325
|
+
this.batchesQueuedForProcessing = [];
|
|
2326
|
+
promises = batchesToUpload.map(function (upload) {
|
|
2327
|
+
return _this_1.upload(_this_1.mpInstance.Logger, upload, useBeacon);
|
|
2328
|
+
}); // Iterate through fulfilled promises and store any remaining batches
|
|
2329
|
+
// for future re-transmission attempts
|
|
2281
2330
|
|
|
2282
|
-
|
|
2283
|
-
|
|
2331
|
+
if (!isEmpty(promises)) {
|
|
2332
|
+
Promise.all(promises).then(function (batchResponses) {
|
|
2333
|
+
batchResponses.forEach(function (batch) {
|
|
2334
|
+
return !isEmpty(batch) ? batchesThatDidNotUpload.push(batch) : null;
|
|
2335
|
+
});
|
|
2336
|
+
})["catch"](function (error) {
|
|
2337
|
+
_this_1.mpInstance.Logger.error("Error processing batches during upload attempt: ".concat(error));
|
|
2338
|
+
})["finally"](function () {
|
|
2339
|
+
var _a; // Any batches that did not upload should be put back into the queue for processing
|
|
2284
2340
|
|
|
2285
|
-
if (remainingUploads && remainingUploads.length) {
|
|
2286
|
-
(_b = this.pendingUploads).unshift.apply(_b, remainingUploads);
|
|
2287
|
-
}
|
|
2288
2341
|
|
|
2289
|
-
if (
|
|
2290
|
-
|
|
2291
|
-
_this_1.prepareAndUpload(true, false);
|
|
2292
|
-
}, this.uploadIntervalMillis);
|
|
2342
|
+
if (!isEmpty(batchesThatDidNotUpload)) {
|
|
2343
|
+
(_a = _this_1.batchesQueuedForProcessing).unshift.apply(_a, batchesThatDidNotUpload);
|
|
2293
2344
|
}
|
|
2345
|
+
});
|
|
2346
|
+
}
|
|
2294
2347
|
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
];
|
|
2348
|
+
if (triggerFuture) {
|
|
2349
|
+
this.triggerUploadInterval(triggerFuture, false);
|
|
2298
2350
|
}
|
|
2351
|
+
|
|
2352
|
+
return [2
|
|
2353
|
+
/*return*/
|
|
2354
|
+
];
|
|
2299
2355
|
});
|
|
2300
2356
|
});
|
|
2301
2357
|
};
|
|
2302
2358
|
|
|
2303
|
-
BatchUploader.prototype.upload = function (logger,
|
|
2359
|
+
BatchUploader.prototype.upload = function (logger, batch, useBeacon) {
|
|
2304
2360
|
return __awaiter(this, void 0, void 0, function () {
|
|
2305
|
-
var
|
|
2361
|
+
var fetchPayload, blob, response, error_1;
|
|
2306
2362
|
return __generator(this, function (_a) {
|
|
2307
2363
|
switch (_a.label) {
|
|
2308
2364
|
case 0:
|
|
2309
|
-
|
|
2310
|
-
return !isEmpty(upload.events);
|
|
2311
|
-
});
|
|
2312
|
-
|
|
2313
|
-
if (isEmpty(uploads)) {
|
|
2365
|
+
if (isEmpty(batch) || isEmpty(batch.events)) {
|
|
2314
2366
|
return [2
|
|
2315
2367
|
/*return*/
|
|
2316
2368
|
, null];
|
|
2317
2369
|
}
|
|
2318
2370
|
|
|
2319
|
-
logger.verbose("Uploading batches: ".concat(JSON.stringify(
|
|
2320
|
-
logger.verbose("Batch count: ".concat(uploads.length));
|
|
2321
|
-
i = 0;
|
|
2322
|
-
_a.label = 1;
|
|
2323
|
-
|
|
2324
|
-
case 1:
|
|
2325
|
-
if (!(i < uploads.length)) return [3
|
|
2326
|
-
/*break*/
|
|
2327
|
-
, 7];
|
|
2371
|
+
logger.verbose("Uploading batches: ".concat(JSON.stringify(batch)));
|
|
2328
2372
|
fetchPayload = {
|
|
2329
2373
|
method: 'POST',
|
|
2330
2374
|
headers: {
|
|
2331
2375
|
Accept: BatchUploader.CONTENT_TYPE,
|
|
2332
2376
|
'Content-Type': 'text/plain;charset=UTF-8'
|
|
2333
2377
|
},
|
|
2334
|
-
body: JSON.stringify(
|
|
2378
|
+
body: JSON.stringify(batch)
|
|
2335
2379
|
};
|
|
2336
2380
|
if (!(useBeacon && this.isBeaconAvailable())) return [3
|
|
2337
2381
|
/*break*/
|
|
2338
|
-
,
|
|
2382
|
+
, 1];
|
|
2339
2383
|
blob = new Blob([fetchPayload.body], {
|
|
2340
2384
|
type: 'text/plain;charset=UTF-8'
|
|
2341
2385
|
});
|
|
2342
2386
|
navigator.sendBeacon(this.uploadUrl, blob);
|
|
2343
2387
|
return [3
|
|
2344
2388
|
/*break*/
|
|
2345
|
-
,
|
|
2346
|
-
|
|
2347
|
-
case 2:
|
|
2348
|
-
if (!uploader) {
|
|
2349
|
-
if (window.fetch) {
|
|
2350
|
-
uploader = new FetchUploader(this.uploadUrl, logger);
|
|
2351
|
-
} else {
|
|
2352
|
-
uploader = new XHRUploader(this.uploadUrl, logger);
|
|
2353
|
-
}
|
|
2354
|
-
}
|
|
2389
|
+
, 4];
|
|
2355
2390
|
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
case 3:
|
|
2359
|
-
_a.trys.push([3, 5,, 6]);
|
|
2391
|
+
case 1:
|
|
2392
|
+
_a.trys.push([1, 3,, 4]);
|
|
2360
2393
|
|
|
2361
2394
|
return [4
|
|
2362
2395
|
/*yield*/
|
|
2363
|
-
, uploader.upload(fetchPayload
|
|
2396
|
+
, this.uploader.upload(fetchPayload)];
|
|
2364
2397
|
|
|
2365
|
-
case
|
|
2366
|
-
response = _a.sent();
|
|
2398
|
+
case 2:
|
|
2399
|
+
response = _a.sent(); // TODO: Should we make this a switch statement instead?
|
|
2367
2400
|
|
|
2368
2401
|
if (response.status >= 200 && response.status < 300) {
|
|
2369
|
-
logger.verbose("Upload success for request ID: ".concat(
|
|
2402
|
+
logger.verbose("Upload success for request ID: ".concat(batch.source_request_id));
|
|
2403
|
+
return [2
|
|
2404
|
+
/*return*/
|
|
2405
|
+
, null];
|
|
2370
2406
|
} else if (response.status >= 500 || response.status === 429) {
|
|
2371
|
-
logger.error("HTTP error status ".concat(response.status, " received")); //
|
|
2407
|
+
logger.error("HTTP error status ".concat(response.status, " received")); // Server error, return current batch and try again later
|
|
2372
2408
|
|
|
2373
2409
|
return [2
|
|
2374
2410
|
/*return*/
|
|
2375
|
-
,
|
|
2411
|
+
, batch];
|
|
2376
2412
|
} else if (response.status >= 401) {
|
|
2377
|
-
logger.error("HTTP error status ".concat(response.status, " while uploading - please verify your API key.")); //if we're getting a 401, assume we'll keep getting a 401
|
|
2413
|
+
logger.error("HTTP error status ".concat(response.status, " while uploading - please verify your API key.")); // if we're getting a 401, assume we'll keep getting a 401
|
|
2414
|
+
// so return the upload so it can be stored for later use
|
|
2378
2415
|
|
|
2379
2416
|
return [2
|
|
2380
2417
|
/*return*/
|
|
2381
|
-
,
|
|
2418
|
+
, batch];
|
|
2382
2419
|
}
|
|
2383
2420
|
|
|
2384
2421
|
return [3
|
|
2385
2422
|
/*break*/
|
|
2386
|
-
,
|
|
2423
|
+
, 4];
|
|
2387
2424
|
|
|
2388
|
-
case
|
|
2389
|
-
|
|
2390
|
-
logger.error("Error sending event to mParticle servers. ".concat(
|
|
2425
|
+
case 3:
|
|
2426
|
+
error_1 = _a.sent();
|
|
2427
|
+
logger.error("Error sending event to mParticle servers. ".concat(error_1));
|
|
2391
2428
|
return [2
|
|
2392
2429
|
/*return*/
|
|
2393
|
-
,
|
|
2430
|
+
, batch];
|
|
2394
2431
|
|
|
2395
|
-
case
|
|
2396
|
-
i++;
|
|
2397
|
-
return [3
|
|
2398
|
-
/*break*/
|
|
2399
|
-
, 1];
|
|
2400
|
-
|
|
2401
|
-
case 7:
|
|
2432
|
+
case 4:
|
|
2402
2433
|
return [2
|
|
2403
2434
|
/*return*/
|
|
2404
2435
|
, null];
|
|
2405
2436
|
}
|
|
2406
2437
|
});
|
|
2407
2438
|
});
|
|
2408
|
-
}; //
|
|
2439
|
+
}; // We upload JSON, but this content type is required to avoid a CORS preflight request
|
|
2409
2440
|
|
|
2410
2441
|
|
|
2411
2442
|
BatchUploader.CONTENT_TYPE = 'text/plain;charset=UTF-8';
|
|
@@ -2416,9 +2447,8 @@ var mParticle = (function () {
|
|
|
2416
2447
|
var AsyncUploader =
|
|
2417
2448
|
/** @class */
|
|
2418
2449
|
function () {
|
|
2419
|
-
function AsyncUploader(url
|
|
2450
|
+
function AsyncUploader(url) {
|
|
2420
2451
|
this.url = url;
|
|
2421
|
-
this.logger = logger;
|
|
2422
2452
|
}
|
|
2423
2453
|
|
|
2424
2454
|
return AsyncUploader;
|
|
@@ -2433,7 +2463,7 @@ var mParticle = (function () {
|
|
|
2433
2463
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2434
2464
|
}
|
|
2435
2465
|
|
|
2436
|
-
FetchUploader.prototype.upload = function (fetchPayload
|
|
2466
|
+
FetchUploader.prototype.upload = function (fetchPayload) {
|
|
2437
2467
|
return __awaiter(this, void 0, void 0, function () {
|
|
2438
2468
|
var response;
|
|
2439
2469
|
return __generator(this, function (_a) {
|
|
@@ -2465,7 +2495,7 @@ var mParticle = (function () {
|
|
|
2465
2495
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2466
2496
|
}
|
|
2467
2497
|
|
|
2468
|
-
XHRUploader.prototype.upload = function (fetchPayload
|
|
2498
|
+
XHRUploader.prototype.upload = function (fetchPayload) {
|
|
2469
2499
|
return __awaiter(this, void 0, void 0, function () {
|
|
2470
2500
|
var response;
|
|
2471
2501
|
return __generator(this, function (_a) {
|
|
@@ -2473,7 +2503,7 @@ var mParticle = (function () {
|
|
|
2473
2503
|
case 0:
|
|
2474
2504
|
return [4
|
|
2475
2505
|
/*yield*/
|
|
2476
|
-
, this.makeRequest(this.url,
|
|
2506
|
+
, this.makeRequest(this.url, fetchPayload.body)];
|
|
2477
2507
|
|
|
2478
2508
|
case 1:
|
|
2479
2509
|
response = _a.sent();
|
|
@@ -2485,7 +2515,7 @@ var mParticle = (function () {
|
|
|
2485
2515
|
});
|
|
2486
2516
|
};
|
|
2487
2517
|
|
|
2488
|
-
XHRUploader.prototype.makeRequest = function (url,
|
|
2518
|
+
XHRUploader.prototype.makeRequest = function (url, data) {
|
|
2489
2519
|
return __awaiter(this, void 0, void 0, function () {
|
|
2490
2520
|
var xhr;
|
|
2491
2521
|
return __generator(this, function (_a) {
|
|
@@ -2657,7 +2687,8 @@ var mParticle = (function () {
|
|
|
2657
2687
|
};
|
|
2658
2688
|
|
|
2659
2689
|
this.sendBatchForwardingStatsToServer = function (forwardingStatsData, xhr) {
|
|
2660
|
-
var url
|
|
2690
|
+
var url;
|
|
2691
|
+
var data;
|
|
2661
2692
|
|
|
2662
2693
|
try {
|
|
2663
2694
|
url = mpInstance._Helpers.createServiceUrl(mpInstance._Store.SDKConfig.v2SecureServiceUrl, mpInstance._Store.devToken);
|
|
@@ -2676,25 +2707,26 @@ var mParticle = (function () {
|
|
|
2676
2707
|
};
|
|
2677
2708
|
|
|
2678
2709
|
this.sendSingleForwardingStatsToServer = function (forwardingStatsData) {
|
|
2679
|
-
var url
|
|
2710
|
+
var url;
|
|
2711
|
+
var data;
|
|
2680
2712
|
|
|
2681
2713
|
try {
|
|
2682
2714
|
var xhrCallback = function xhrCallback() {
|
|
2683
|
-
if (
|
|
2684
|
-
if (
|
|
2685
|
-
mpInstance.Logger.verbose('Successfully sent ' +
|
|
2715
|
+
if (xhr_1.readyState === 4) {
|
|
2716
|
+
if (xhr_1.status === 202) {
|
|
2717
|
+
mpInstance.Logger.verbose('Successfully sent ' + xhr_1.statusText + ' from server');
|
|
2686
2718
|
}
|
|
2687
2719
|
}
|
|
2688
2720
|
};
|
|
2689
2721
|
|
|
2690
|
-
var
|
|
2722
|
+
var xhr_1 = mpInstance._Helpers.createXHR(xhrCallback);
|
|
2691
2723
|
|
|
2692
2724
|
url = mpInstance._Helpers.createServiceUrl(mpInstance._Store.SDKConfig.v1SecureServiceUrl, mpInstance._Store.devToken);
|
|
2693
2725
|
data = forwardingStatsData;
|
|
2694
2726
|
|
|
2695
|
-
if (
|
|
2696
|
-
|
|
2697
|
-
|
|
2727
|
+
if (xhr_1) {
|
|
2728
|
+
xhr_1.open('post', url + '/Forwarding');
|
|
2729
|
+
xhr_1.send(JSON.stringify(data));
|
|
2698
2730
|
}
|
|
2699
2731
|
} catch (e) {
|
|
2700
2732
|
mpInstance.Logger.error('Error sending forwarding stats to mParticle servers.');
|
|
@@ -2702,8 +2734,9 @@ var mParticle = (function () {
|
|
|
2702
2734
|
};
|
|
2703
2735
|
|
|
2704
2736
|
this.prepareForwardingStats = function (forwarder, event) {
|
|
2705
|
-
var forwardingStatsData
|
|
2706
|
-
|
|
2737
|
+
var forwardingStatsData;
|
|
2738
|
+
|
|
2739
|
+
var queue = mpInstance._Forwarders.getForwarderStatsQueue();
|
|
2707
2740
|
|
|
2708
2741
|
if (forwarder && forwarder.isVisible) {
|
|
2709
2742
|
forwardingStatsData = {
|
|
@@ -10646,6 +10679,11 @@ var mParticle = (function () {
|
|
|
10646
10679
|
_resetForTests: mockFunction,
|
|
10647
10680
|
_APIClient: null,
|
|
10648
10681
|
_Consent: null,
|
|
10682
|
+
_Forwarders: null,
|
|
10683
|
+
_NativeSdkHelpers: null,
|
|
10684
|
+
_Persistence: null,
|
|
10685
|
+
_preInit: null,
|
|
10686
|
+
Consent: null,
|
|
10649
10687
|
_ServerModel: null,
|
|
10650
10688
|
_SessionManager: null,
|
|
10651
10689
|
_Store: {
|