define('core/analytics/reporting',['require','core/utils/collection/each','core/utils/url/serialize','core/config/urls'],function (require) { // eslint-disable-line no-shadow
'use strict';
var each = require('core/utils/collection/each');
var serialize = require('core/utils/url/serialize');
var urls = require('core/config/urls');
var jesterUrl = urls.jester;
function getLoaderVersionFromUrl(url) {
var parts = url.split('.');
var version = parts.length > 2 ? parts[parts.length - 2] : ''; // eslint-disable-line no-magic-numbers
return version.match(/^[0-9a-f]{32}$/i) && version;
}
function logStat(eventName) {
new window.Image().src = serialize(jesterUrl + '/stat.gif', { event: eventName });
}
function reportJester(payload) {
new window.Image().src = serialize(jesterUrl + '/event.gif', payload);
}
function reportJesterPOST(payload) {
var data = new window.URLSearchParams();
each(payload, function (value, key) {
if (value !== undefined) {
data.append(key, value);
}
});
var req = new window.XMLHttpRequest();
req.open('POST', jesterUrl + '/event.json', true);
req.withCredentials = true;
req.send(data);
}
return {
getLoaderVersionFromUrl: getLoaderVersionFromUrl,
logStat: logStat,
reportJester: reportJester,
reportJesterPOST: reportJesterPOST,
};
});