opencode-tps-meter 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.js +61 -37
- package/dist/index.mjs +61 -37
- package/dist/tracker.d.ts +1 -0
- package/dist/tracker.d.ts.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/constants.d.ts
CHANGED
|
@@ -14,6 +14,12 @@ export declare const DEFAULT_ROLLING_WINDOW_MS = 1000;
|
|
|
14
14
|
export declare const MAX_BUFFER_SIZE = 100;
|
|
15
15
|
/** Minimum window duration for TPS calculation (seconds) to avoid division by near-zero */
|
|
16
16
|
export declare const MIN_WINDOW_DURATION_SECONDS = 0.1;
|
|
17
|
+
/** Token count threshold to trigger burst smoothing (tokens) */
|
|
18
|
+
export declare const BURST_TOKEN_THRESHOLD = 120;
|
|
19
|
+
/** Default EWMA half-life (ms) for smoothing normal streaming */
|
|
20
|
+
export declare const DEFAULT_EWMA_HALF_LIFE_MS = 500;
|
|
21
|
+
/** EWMA half-life (ms) applied during bursts */
|
|
22
|
+
export declare const BURST_EWMA_HALF_LIFE_MS = 2000;
|
|
17
23
|
/** Default UI update interval in milliseconds */
|
|
18
24
|
export declare const DEFAULT_UPDATE_INTERVAL_MS = 50;
|
|
19
25
|
/** Minimum interval between toast updates (ms) - prevents UI flooding */
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,mDAAmD;AACnD,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,2FAA2F;AAC3F,eAAO,MAAM,2BAA2B,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,mDAAmD;AACnD,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,2FAA2F;AAC3F,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,gEAAgE;AAChE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAM5C,iDAAiD;AACjD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,qDAAqD;AACrD,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C,qDAAqD;AACrD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAM5C,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,QAAgB,CAAC;AAEhD,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAMzC,yEAAyE;AACzE,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,sEAAsE;AACtE,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,qEAAqE;AACrE,eAAO,MAAM,cAAc,OAAO,CAAC;AAMnC,uDAAuD;AACvD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,yDAAyD;AACzD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAM7C,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,aAAqC,CAAC;AAEzE,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,aAAiC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -50,6 +50,9 @@ var MIN_TPS_ELAPSED_MS = 250;
|
|
|
50
50
|
var DEFAULT_ROLLING_WINDOW_MS = 1000;
|
|
51
51
|
var MAX_BUFFER_SIZE = 100;
|
|
52
52
|
var MIN_WINDOW_DURATION_SECONDS = 0.1;
|
|
53
|
+
var BURST_TOKEN_THRESHOLD = 120;
|
|
54
|
+
var DEFAULT_EWMA_HALF_LIFE_MS = 500;
|
|
55
|
+
var BURST_EWMA_HALF_LIFE_MS = 2000;
|
|
53
56
|
var DEFAULT_UPDATE_INTERVAL_MS = 50;
|
|
54
57
|
var MIN_TOAST_INTERVAL_MS = 150;
|
|
55
58
|
var DEFAULT_TOAST_DURATION_MS = 20000;
|
|
@@ -71,18 +74,47 @@ function createTracker(options = {}) {
|
|
|
71
74
|
let buffer = [];
|
|
72
75
|
const sessionId = options.sessionId;
|
|
73
76
|
const windowMs = typeof options.rollingWindowMs === "number" && options.rollingWindowMs > 0 ? options.rollingWindowMs : DEFAULT_ROLLING_WINDOW_MS;
|
|
77
|
+
let smoothedTps = 0;
|
|
78
|
+
let lastSmoothedAt = 0;
|
|
79
|
+
let hasSmoothedValue = false;
|
|
74
80
|
function pruneBuffer(now) {
|
|
75
81
|
const cutoff = now - windowMs;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
buffer = buffer.slice(validStartIndex);
|
|
82
|
+
const validStartIndex = buffer.findIndex((e) => e.timestamp >= cutoff);
|
|
83
|
+
if (validStartIndex === -1) {
|
|
84
|
+
buffer.length = 0;
|
|
85
|
+
} else if (validStartIndex > 0) {
|
|
86
|
+
buffer.splice(0, validStartIndex);
|
|
82
87
|
}
|
|
83
88
|
if (buffer.length > MAX_BUFFER_SIZE) {
|
|
84
|
-
buffer
|
|
89
|
+
buffer.splice(0, buffer.length - MAX_BUFFER_SIZE);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function calculateRawTPS(now) {
|
|
93
|
+
if (buffer.length === 0) {
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
const cutoff = now - windowMs;
|
|
97
|
+
let tokensInWindow = 0;
|
|
98
|
+
let oldestTimestamp = now;
|
|
99
|
+
let newestTimestamp = 0;
|
|
100
|
+
for (const entry of buffer) {
|
|
101
|
+
if (entry.timestamp >= cutoff) {
|
|
102
|
+
tokensInWindow += entry.count;
|
|
103
|
+
if (entry.timestamp < oldestTimestamp) {
|
|
104
|
+
oldestTimestamp = entry.timestamp;
|
|
105
|
+
}
|
|
106
|
+
if (entry.timestamp > newestTimestamp) {
|
|
107
|
+
newestTimestamp = entry.timestamp;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
85
110
|
}
|
|
111
|
+
if (tokensInWindow === 0) {
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
const windowDurationMs = newestTimestamp - oldestTimestamp;
|
|
115
|
+
const windowDurationSeconds = windowDurationMs / 1000;
|
|
116
|
+
const effectiveDuration = Math.max(windowDurationSeconds, MIN_WINDOW_DURATION_SECONDS);
|
|
117
|
+
return tokensInWindow / effectiveDuration;
|
|
86
118
|
}
|
|
87
119
|
return {
|
|
88
120
|
recordTokens(count, timestamp) {
|
|
@@ -90,34 +122,23 @@ function createTracker(options = {}) {
|
|
|
90
122
|
totalTokens += count;
|
|
91
123
|
buffer.push({ timestamp: ts, count });
|
|
92
124
|
pruneBuffer(ts);
|
|
125
|
+
const rawTPS = calculateRawTPS(ts);
|
|
126
|
+
if (!hasSmoothedValue) {
|
|
127
|
+
smoothedTps = rawTPS;
|
|
128
|
+
hasSmoothedValue = true;
|
|
129
|
+
} else {
|
|
130
|
+
const timeDelta = Math.max(1, ts - lastSmoothedAt);
|
|
131
|
+
const halfLife = count > BURST_TOKEN_THRESHOLD ? BURST_EWMA_HALF_LIFE_MS : DEFAULT_EWMA_HALF_LIFE_MS;
|
|
132
|
+
const alpha = Math.exp(-Math.LN2 * timeDelta / halfLife);
|
|
133
|
+
smoothedTps = alpha * smoothedTps + (1 - alpha) * rawTPS;
|
|
134
|
+
}
|
|
135
|
+
lastSmoothedAt = ts;
|
|
93
136
|
},
|
|
94
137
|
getInstantTPS() {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const cutoff = now - windowMs;
|
|
100
|
-
let tokensInWindow = 0;
|
|
101
|
-
let oldestTimestamp = now;
|
|
102
|
-
let newestTimestamp = 0;
|
|
103
|
-
for (const entry of buffer) {
|
|
104
|
-
if (entry.timestamp >= cutoff) {
|
|
105
|
-
tokensInWindow += entry.count;
|
|
106
|
-
if (entry.timestamp < oldestTimestamp) {
|
|
107
|
-
oldestTimestamp = entry.timestamp;
|
|
108
|
-
}
|
|
109
|
-
if (entry.timestamp > newestTimestamp) {
|
|
110
|
-
newestTimestamp = entry.timestamp;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (tokensInWindow === 0) {
|
|
115
|
-
return 0;
|
|
116
|
-
}
|
|
117
|
-
const windowDurationMs = newestTimestamp - oldestTimestamp;
|
|
118
|
-
const windowDurationSeconds = windowDurationMs / 1000;
|
|
119
|
-
const effectiveDuration = Math.max(windowDurationSeconds, MIN_WINDOW_DURATION_SECONDS);
|
|
120
|
-
return tokensInWindow / effectiveDuration;
|
|
138
|
+
return calculateRawTPS(Date.now());
|
|
139
|
+
},
|
|
140
|
+
getSmoothedTPS() {
|
|
141
|
+
return hasSmoothedValue ? smoothedTps : calculateRawTPS(Date.now());
|
|
121
142
|
},
|
|
122
143
|
getAverageTPS() {
|
|
123
144
|
const elapsedSeconds = (Date.now() - startTime) / 1000;
|
|
@@ -139,6 +160,9 @@ function createTracker(options = {}) {
|
|
|
139
160
|
startTime = Date.now();
|
|
140
161
|
totalTokens = 0;
|
|
141
162
|
buffer = [];
|
|
163
|
+
smoothedTps = 0;
|
|
164
|
+
hasSmoothedValue = false;
|
|
165
|
+
lastSmoothedAt = 0;
|
|
142
166
|
},
|
|
143
167
|
getBufferSize() {
|
|
144
168
|
return buffer.length;
|
|
@@ -709,15 +733,15 @@ function TpsMeterPlugin(context) {
|
|
|
709
733
|
messageTokenCache.set(sessionId, messageCache);
|
|
710
734
|
const previousTokens = messageCache.get(messageId) ?? 0;
|
|
711
735
|
messageCache.set(messageId, previousTokens + tokenCount);
|
|
712
|
-
const
|
|
736
|
+
const smoothedTps = tracker.getSmoothedTPS();
|
|
713
737
|
const avgTps = tracker.getAverageTPS();
|
|
714
738
|
const totalTokens = tracker.getTotalTokens();
|
|
715
739
|
const elapsedMs = tracker.getElapsedMs();
|
|
716
740
|
const elapsedSinceFirstToken = Math.max(0, now - firstTokenAt);
|
|
717
|
-
if (elapsedSinceFirstToken >= MIN_TPS_ELAPSED_MS &&
|
|
718
|
-
ui.updateDisplay(
|
|
741
|
+
if (elapsedSinceFirstToken >= MIN_TPS_ELAPSED_MS && smoothedTps >= resolvedConfig.minVisibleTPS) {
|
|
742
|
+
ui.updateDisplay(smoothedTps, avgTps, totalTokens, elapsedMs);
|
|
719
743
|
}
|
|
720
|
-
logger.debug(`[TpsMeter] Session ${sessionId}: +${tokenCount} tokens, TPS: ${
|
|
744
|
+
logger.debug(`[TpsMeter] Session ${sessionId}: +${tokenCount} tokens, TPS: ${smoothedTps.toFixed(1)} (avg: ${avgTps.toFixed(1)})`);
|
|
721
745
|
}
|
|
722
746
|
function handleMessageUpdated(event) {
|
|
723
747
|
const info = event.properties.info;
|
package/dist/index.mjs
CHANGED
|
@@ -3,6 +3,9 @@ var MIN_TPS_ELAPSED_MS = 250;
|
|
|
3
3
|
var DEFAULT_ROLLING_WINDOW_MS = 1000;
|
|
4
4
|
var MAX_BUFFER_SIZE = 100;
|
|
5
5
|
var MIN_WINDOW_DURATION_SECONDS = 0.1;
|
|
6
|
+
var BURST_TOKEN_THRESHOLD = 120;
|
|
7
|
+
var DEFAULT_EWMA_HALF_LIFE_MS = 500;
|
|
8
|
+
var BURST_EWMA_HALF_LIFE_MS = 2000;
|
|
6
9
|
var DEFAULT_UPDATE_INTERVAL_MS = 50;
|
|
7
10
|
var MIN_TOAST_INTERVAL_MS = 150;
|
|
8
11
|
var DEFAULT_TOAST_DURATION_MS = 20000;
|
|
@@ -24,18 +27,47 @@ function createTracker(options = {}) {
|
|
|
24
27
|
let buffer = [];
|
|
25
28
|
const sessionId = options.sessionId;
|
|
26
29
|
const windowMs = typeof options.rollingWindowMs === "number" && options.rollingWindowMs > 0 ? options.rollingWindowMs : DEFAULT_ROLLING_WINDOW_MS;
|
|
30
|
+
let smoothedTps = 0;
|
|
31
|
+
let lastSmoothedAt = 0;
|
|
32
|
+
let hasSmoothedValue = false;
|
|
27
33
|
function pruneBuffer(now) {
|
|
28
34
|
const cutoff = now - windowMs;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
buffer = buffer.slice(validStartIndex);
|
|
35
|
+
const validStartIndex = buffer.findIndex((e) => e.timestamp >= cutoff);
|
|
36
|
+
if (validStartIndex === -1) {
|
|
37
|
+
buffer.length = 0;
|
|
38
|
+
} else if (validStartIndex > 0) {
|
|
39
|
+
buffer.splice(0, validStartIndex);
|
|
35
40
|
}
|
|
36
41
|
if (buffer.length > MAX_BUFFER_SIZE) {
|
|
37
|
-
buffer
|
|
42
|
+
buffer.splice(0, buffer.length - MAX_BUFFER_SIZE);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function calculateRawTPS(now) {
|
|
46
|
+
if (buffer.length === 0) {
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
const cutoff = now - windowMs;
|
|
50
|
+
let tokensInWindow = 0;
|
|
51
|
+
let oldestTimestamp = now;
|
|
52
|
+
let newestTimestamp = 0;
|
|
53
|
+
for (const entry of buffer) {
|
|
54
|
+
if (entry.timestamp >= cutoff) {
|
|
55
|
+
tokensInWindow += entry.count;
|
|
56
|
+
if (entry.timestamp < oldestTimestamp) {
|
|
57
|
+
oldestTimestamp = entry.timestamp;
|
|
58
|
+
}
|
|
59
|
+
if (entry.timestamp > newestTimestamp) {
|
|
60
|
+
newestTimestamp = entry.timestamp;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
38
63
|
}
|
|
64
|
+
if (tokensInWindow === 0) {
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
const windowDurationMs = newestTimestamp - oldestTimestamp;
|
|
68
|
+
const windowDurationSeconds = windowDurationMs / 1000;
|
|
69
|
+
const effectiveDuration = Math.max(windowDurationSeconds, MIN_WINDOW_DURATION_SECONDS);
|
|
70
|
+
return tokensInWindow / effectiveDuration;
|
|
39
71
|
}
|
|
40
72
|
return {
|
|
41
73
|
recordTokens(count, timestamp) {
|
|
@@ -43,34 +75,23 @@ function createTracker(options = {}) {
|
|
|
43
75
|
totalTokens += count;
|
|
44
76
|
buffer.push({ timestamp: ts, count });
|
|
45
77
|
pruneBuffer(ts);
|
|
78
|
+
const rawTPS = calculateRawTPS(ts);
|
|
79
|
+
if (!hasSmoothedValue) {
|
|
80
|
+
smoothedTps = rawTPS;
|
|
81
|
+
hasSmoothedValue = true;
|
|
82
|
+
} else {
|
|
83
|
+
const timeDelta = Math.max(1, ts - lastSmoothedAt);
|
|
84
|
+
const halfLife = count > BURST_TOKEN_THRESHOLD ? BURST_EWMA_HALF_LIFE_MS : DEFAULT_EWMA_HALF_LIFE_MS;
|
|
85
|
+
const alpha = Math.exp(-Math.LN2 * timeDelta / halfLife);
|
|
86
|
+
smoothedTps = alpha * smoothedTps + (1 - alpha) * rawTPS;
|
|
87
|
+
}
|
|
88
|
+
lastSmoothedAt = ts;
|
|
46
89
|
},
|
|
47
90
|
getInstantTPS() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const cutoff = now - windowMs;
|
|
53
|
-
let tokensInWindow = 0;
|
|
54
|
-
let oldestTimestamp = now;
|
|
55
|
-
let newestTimestamp = 0;
|
|
56
|
-
for (const entry of buffer) {
|
|
57
|
-
if (entry.timestamp >= cutoff) {
|
|
58
|
-
tokensInWindow += entry.count;
|
|
59
|
-
if (entry.timestamp < oldestTimestamp) {
|
|
60
|
-
oldestTimestamp = entry.timestamp;
|
|
61
|
-
}
|
|
62
|
-
if (entry.timestamp > newestTimestamp) {
|
|
63
|
-
newestTimestamp = entry.timestamp;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (tokensInWindow === 0) {
|
|
68
|
-
return 0;
|
|
69
|
-
}
|
|
70
|
-
const windowDurationMs = newestTimestamp - oldestTimestamp;
|
|
71
|
-
const windowDurationSeconds = windowDurationMs / 1000;
|
|
72
|
-
const effectiveDuration = Math.max(windowDurationSeconds, MIN_WINDOW_DURATION_SECONDS);
|
|
73
|
-
return tokensInWindow / effectiveDuration;
|
|
91
|
+
return calculateRawTPS(Date.now());
|
|
92
|
+
},
|
|
93
|
+
getSmoothedTPS() {
|
|
94
|
+
return hasSmoothedValue ? smoothedTps : calculateRawTPS(Date.now());
|
|
74
95
|
},
|
|
75
96
|
getAverageTPS() {
|
|
76
97
|
const elapsedSeconds = (Date.now() - startTime) / 1000;
|
|
@@ -92,6 +113,9 @@ function createTracker(options = {}) {
|
|
|
92
113
|
startTime = Date.now();
|
|
93
114
|
totalTokens = 0;
|
|
94
115
|
buffer = [];
|
|
116
|
+
smoothedTps = 0;
|
|
117
|
+
hasSmoothedValue = false;
|
|
118
|
+
lastSmoothedAt = 0;
|
|
95
119
|
},
|
|
96
120
|
getBufferSize() {
|
|
97
121
|
return buffer.length;
|
|
@@ -662,15 +686,15 @@ function TpsMeterPlugin(context) {
|
|
|
662
686
|
messageTokenCache.set(sessionId, messageCache);
|
|
663
687
|
const previousTokens = messageCache.get(messageId) ?? 0;
|
|
664
688
|
messageCache.set(messageId, previousTokens + tokenCount);
|
|
665
|
-
const
|
|
689
|
+
const smoothedTps = tracker.getSmoothedTPS();
|
|
666
690
|
const avgTps = tracker.getAverageTPS();
|
|
667
691
|
const totalTokens = tracker.getTotalTokens();
|
|
668
692
|
const elapsedMs = tracker.getElapsedMs();
|
|
669
693
|
const elapsedSinceFirstToken = Math.max(0, now - firstTokenAt);
|
|
670
|
-
if (elapsedSinceFirstToken >= MIN_TPS_ELAPSED_MS &&
|
|
671
|
-
ui.updateDisplay(
|
|
694
|
+
if (elapsedSinceFirstToken >= MIN_TPS_ELAPSED_MS && smoothedTps >= resolvedConfig.minVisibleTPS) {
|
|
695
|
+
ui.updateDisplay(smoothedTps, avgTps, totalTokens, elapsedMs);
|
|
672
696
|
}
|
|
673
|
-
logger.debug(`[TpsMeter] Session ${sessionId}: +${tokenCount} tokens, TPS: ${
|
|
697
|
+
logger.debug(`[TpsMeter] Session ${sessionId}: +${tokenCount} tokens, TPS: ${smoothedTps.toFixed(1)} (avg: ${avgTps.toFixed(1)})`);
|
|
674
698
|
}
|
|
675
699
|
function handleMessageUpdated(event) {
|
|
676
700
|
const info = event.properties.info;
|
package/dist/tracker.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Token tracking logic for OpenCode TPS Meter Plugin
|
|
3
3
|
* Implements a TPS tracker with a configurable rolling window using a ring buffer
|
|
4
|
+
* Includes EWMA smoothing to prevent spikes from bursty token arrivals
|
|
4
5
|
*/
|
|
5
6
|
import type { TPSTrackerOptions, TPSTracker } from "./types.js";
|
|
6
7
|
/**
|
package/dist/tracker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAe,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7E;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,CAuNzE"}
|
package/dist/types.d.ts
CHANGED
|
@@ -287,6 +287,8 @@ export interface TPSTracker {
|
|
|
287
287
|
recordTokens(count: number, timestamp?: number): void;
|
|
288
288
|
/** Calculates the instantaneous TPS over the last 2-second rolling window */
|
|
289
289
|
getInstantTPS(): number;
|
|
290
|
+
/** Gets the EWMA-smoothed TPS to prevent spikes from bursts */
|
|
291
|
+
getSmoothedTPS(): number;
|
|
290
292
|
/** Calculates the average TPS over the entire session */
|
|
291
293
|
getAverageTPS(): number;
|
|
292
294
|
/** Gets the total number of tokens recorded */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|