UNPKG

performance-analyzer

Version:

Measure TTFB, FCB, Dom Load and Window Load events

50 lines (41 loc) 1.21 kB
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 }