Skip to content

Commit 8f96a7b

Browse files
authored
feat: adding support for bigint timers (#97)
1 parent 8d2140e commit 8f96a7b

3 files changed

Lines changed: 24 additions & 16 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nflx-spectator",
3-
"version": "3.0.5",
3+
"version": "3.0.6",
44
"license": "Apache-2.0",
55
"homepage": "https://github.com/Netflix/spectator-js",
66
"author": "Netflix Telemetry Engineering <netflix-atlas@googlegroups.com>",

src/meter/percentile_timer.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,24 @@ export class PercentileTimer extends Meter {
1818
}
1919

2020
/**
21-
* @param {number|number[]} seconds
22-
* Number of seconds, which may be fractional, or an array of two numbers [seconds, nanoseconds],
23-
* which is the return value from process.hrtime(), and serves as a convenient means of recording
24-
* latency durations.
21+
* @param {number|number[]|bigint} seconds
22+
* Number of seconds, which may be:
23+
*
24+
* - Integer or fractional seconds.
25+
* - An array of two numbers [seconds, nanoseconds], which is the return value from
26+
* process.hrtime(), and serves as a convenient means of recording latency durations.
27+
* - A bigint, which should be in nanoseconds.
2528
*
2629
* start = process.hrtime();
2730
* // do work
28-
* registry.pct_timer("eventLatency").record(process.hrtime(start));
29-
*
31+
* registry.timer("eventLatency").record(process.hrtime(start));
3032
*/
31-
record(seconds: number | number[]): Promise<void> {
33+
record(seconds: number | number[] | bigint): Promise<void> {
3234
let elapsed: number;
3335

34-
if (seconds instanceof Array) {
36+
if (typeof seconds === 'bigint') {
37+
elapsed = Number(seconds) / 1e9;
38+
} else if (seconds instanceof Array) {
3539
elapsed = seconds[0] + (seconds[1] / 1e9);
3640
} else {
3741
elapsed = seconds;

src/meter/timer.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,24 @@ export class Timer extends Meter {
1212
}
1313

1414
/**
15-
* @param {number|number[]} seconds
16-
* Number of seconds, which may be fractional, or an array of two numbers [seconds, nanoseconds],
17-
* which is the return value from process.hrtime(), and serves as a convenient means of recording
18-
* latency durations.
15+
* @param {number|number[]|bigint} seconds
16+
* Number of seconds, which may be:
17+
*
18+
* - Integer or fractional seconds.
19+
* - An array of two numbers [seconds, nanoseconds], which is the return value from
20+
* process.hrtime(), and serves as a convenient means of recording latency durations.
21+
* - A bigint, which should be in nanoseconds.
1922
*
2023
* start = process.hrtime();
2124
* // do work
2225
* registry.timer("eventLatency").record(process.hrtime(start));
23-
*
2426
*/
25-
record(seconds: number | number[]): Promise<void> {
27+
record(seconds: number | number[] | bigint): Promise<void> {
2628
let elapsed: number;
2729

28-
if (seconds instanceof Array) {
30+
if (typeof seconds === 'bigint') {
31+
elapsed = Number(seconds) / 1e9;
32+
} else if (seconds instanceof Array) {
2933
elapsed = seconds[0] + (seconds[1] / 1e9);
3034
} else {
3135
elapsed = seconds;

0 commit comments

Comments
 (0)