UNPKG

nx

Version:

The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.

74 lines (73 loc) 2.01 kB
"use strict"; /** * All credit to https://github.com/jonschlinkert/pretty-time */ Object.defineProperty(exports, "__esModule", { value: true }); exports.prettyTime = prettyTime; const nano = (time) => +time[0] * 1e9 + +time[1]; const scale = { w: 6048e11, d: 864e11, h: 36e11, m: 6e10, s: 1e9, ms: 1e6, μs: 1e3, ns: 1, }; const regex = { w: /^(w((ee)?k)?s?)$/, d: /^(d(ay)?s?)$/, h: /^(h((ou)?r)?s?)$/, m: /^(min(ute)?s?|m)$/, s: /^((sec(ond)?)s?|s)$/, ms: /^(milli(second)?s?|ms)$/, μs: /^(micro(second)?s?|μs)$/, ns: /^(nano(second)?s?|ns?)$/, }; const isSmallest = function (uom, unit) { return regex[uom].test(unit); }; const round = function (num, digits) { const n = Math.abs(num); return /[0-9]/.test(digits) ? Number(n.toFixed(digits)) : Math.round(n); }; function prettyTime(time, smallest, digits) { const isNumber = /^[0-9]+$/.test(time); if (!isNumber && !Array.isArray(time)) { throw new TypeError('expected an array or number in nanoseconds'); } if (Array.isArray(time) && time.length !== 2) { throw new TypeError('expected an array from process.hrtime()'); } if (/^[0-9]+$/.test(smallest)) { digits = smallest; smallest = null; } let num = isNumber ? time : nano(time); let res = ''; let prev; for (const uom of Object.keys(scale)) { const step = scale[uom]; let inc = num / step; if (smallest && isSmallest(uom, smallest)) { inc = round(inc, digits); if (prev && inc === prev / step) --inc; res += inc + uom; return res.trim(); } if (inc < 1) continue; if (!smallest) { inc = round(inc, digits); res += inc + uom; return res; } prev = step; inc = Math.floor(inc); num -= inc * step; res += inc + uom + ' '; } return res.trim(); }