Skip to content

Commit

Permalink
Merge pull request #3 from mangs/default-time-units
Browse files Browse the repository at this point in the history
`getElapsedTimeFormatted()` now uses `ms` units by default
  • Loading branch information
mangs authored Feb 23, 2024
2 parents eeb99be + e5e0b1a commit 69f5136
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 9 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## 1.0.3

- `getElapsedTimeFormatted()` now uses `ms` units by default
- Update dependency versions to latest

## 1.0.2

- Add NPM package version number badge to [`README.md`](./README.md) that links to the [package homepage on npmjs.com](https://www.npmjs.com/package/@mangs/bun-utils)
Expand Down
Binary file modified bun.lockb
Binary file not shown.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mangs/bun-utils",
"version": "1.0.2",
"version": "1.0.3",
"author": "Eric L. Goldstein",
"description": "Useful utils for your Bun projects",
"engines": {
Expand Down Expand Up @@ -60,7 +60,7 @@
"devDependencies": {
"@babbel/eslint-config": "1.2.2",
"@types/bun": "1.0.7",
"eslint": "8.56.0",
"eslint": "8.57.0",
"eslint-config-prettier": "9.1.0",
"prettier": "3.2.5",
"typescript": "5.3.3"
Expand Down
2 changes: 1 addition & 1 deletion utils/consoleUtils.mts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { getElapsedTimeFormatted } from './timeUtils.mts';

// Local Functions
function getPerformanceLabel(startTime: number) {
const formattedTime = getElapsedTimeFormatted(startTime, true);
const formattedTime = getElapsedTimeFormatted(startTime);
return dim(white(`[${formattedTime}]`));
}

Expand Down
22 changes: 16 additions & 6 deletions utils/timeUtils.mts
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
// Local Variables
const timeUnits = ['ns', 'μs', 'ms', 's'] as const;

// Local Types
type TimeUnits = (typeof timeUnits)[number];

// Local Functions
function getElapsedTimeFormatted(startTime: number, hasUnits = true) {
function getElapsedTimeFormatted(startTime: number, exactUnits: TimeUnits | '' = 'ms') {
const endTime = Bun.nanoseconds();
let elapsedTime = endTime - startTime;
let timeIndex = 0;
if (hasUnits) {

if (exactUnits) {
const exactIndex = timeUnits.indexOf(exactUnits);
while (timeIndex < exactIndex) {
elapsedTime /= 1_000;
timeIndex += 1;
}
} else {
while (elapsedTime > 1) {
if (elapsedTime <= 1_000) {
break;
Expand All @@ -15,13 +25,13 @@ function getElapsedTimeFormatted(startTime: number, hasUnits = true) {
timeIndex += 1;
}
}
const digitCount = hasUnits ? 2 : 0;

const elapsedTimeLocalized = elapsedTime.toLocaleString(undefined, {
maximumFractionDigits: digitCount,
minimumFractionDigits: digitCount,
maximumFractionDigits: 2,
minimumFractionDigits: 2,
});
const units = timeUnits[timeIndex];
return `${elapsedTimeLocalized}${hasUnits ? units : ''}`;
return `${elapsedTimeLocalized}${units}`;
}

// Module Exports
Expand Down

0 comments on commit 69f5136

Please sign in to comment.