performance-analyzer
Version:
Measure TTFB, FCB, Dom Load and Window Load events
50 lines (41 loc) • 1.21 kB
JavaScript
Array.prototype.sum = function (prop) {
var total = 0;
for (var i = 0, _len = this.length; i < _len; i++) {
total += this[i][prop];
}
return total;
};
function groupBy(items, key) {
return items.reduce(
(result, item) => ({
...result,
[item[key]]: [...(result[item[key]] || []), item],
}),
{}
);
};
function getNetworkTimingMetrics() {
try {
let perfResourceEntries = window.performance.getEntriesByType("resource");
let perfResourceByInitiatorType = groupBy(
perfResourceEntries,
"initiatorType"
);
let keys = Object.keys(perfResourceByInitiatorType);
let netWorkTimings = {};
keys.forEach((initiatorType) => {
let perfResource = perfResourceByInitiatorType[initiatorType];
let sum = perfResource.sum("duration");
netWorkTimings[initiatorType] = sum;
});
return netWorkTimings;
}
catch (e) {
// window is not defined
console.error(e);
return undefined;
}
}
module.exports = {
getNetworkTimingMetrics
}