@push.rocks/smartproxy 27.7.4 → 27.8.1

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/changelog.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-04-26 - 27.8.1 - fix(rustproxy-metrics)
4
+ preserve high-throughput IPs in metrics snapshots when active-connection rankings are saturated
5
+
6
+ - Select snapshot IPs using a blend of active-connection and throughput rankings instead of only active connections
7
+ - Adds a regression test to ensure a high-bandwidth IP remains included when many other IPs have more active connections
8
+
9
+ ## 2026-04-14 - 27.8.0 - feat(metrics)
10
+ add per-domain HTTP request rate metrics
11
+
12
+ - Record canonicalized HTTP request rates per domain in the Rust metrics collector and expose per-second and last-minute values in snapshots.
13
+ - Add TypeScript metrics interfaces and adapter support for requests.byDomain().
14
+ - Cover HTTP domain rate tracking and ensure TLS passthrough SNI traffic does not affect HTTP request rate metrics.
15
+
3
16
  ## 2026-04-14 - 27.7.4 - fix(rustproxy metrics)
4
17
  use stable route metrics keys across HTTP and passthrough listeners
5
18
 
Binary file
Binary file
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartproxy',
6
- version: '27.7.4',
6
+ version: '27.8.1',
7
7
  description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHFQQUFxUDtDQUNuUSxDQUFBIn0=
@@ -26,6 +26,10 @@ export interface IThroughputHistoryPoint {
26
26
  in: number;
27
27
  out: number;
28
28
  }
29
+ export interface IRequestRateMetrics {
30
+ perSecond: number;
31
+ lastMinute: number;
32
+ }
29
33
  /**
30
34
  * Main metrics interface with clean, grouped API
31
35
  */
@@ -79,6 +83,7 @@ export interface IMetrics {
79
83
  perSecond(): number;
80
84
  perMinute(): number;
81
85
  total(): number;
86
+ byDomain(): Map<string, IRequestRateMetrics>;
82
87
  };
83
88
  totals: {
84
89
  bytesIn(): number;
@@ -110,6 +110,10 @@ export interface IRustBackendMetrics {
110
110
  poolMisses: number;
111
111
  h2Failures: number;
112
112
  }
113
+ export interface IRustHttpDomainRequestMetrics {
114
+ requestsPerSecond: number;
115
+ requestsLastMinute: number;
116
+ }
113
117
  export interface IRustMetricsSnapshot {
114
118
  activeConnections: number;
115
119
  totalConnections: number;
@@ -126,6 +130,7 @@ export interface IRustMetricsSnapshot {
126
130
  totalHttpRequests: number;
127
131
  httpRequestsPerSec: number;
128
132
  httpRequestsPerSecRecent: number;
133
+ httpDomainRequests: Record<string, IRustHttpDomainRequestMetrics>;
129
134
  activeUdpSessions: number;
130
135
  totalUdpSessions: number;
131
136
  totalDatagramsIn: number;
@@ -1,4 +1,4 @@
1
- import type { IMetrics, IBackendMetrics, IProtocolCacheEntry, IProtocolDistribution, IThroughputData, IThroughputHistoryPoint } from './models/metrics-types.js';
1
+ import type { IMetrics, IBackendMetrics, IProtocolCacheEntry, IProtocolDistribution, IRequestRateMetrics, IThroughputData, IThroughputHistoryPoint } from './models/metrics-types.js';
2
2
  import type { RustProxyBridge } from './rust-proxy-bridge.js';
3
3
  /**
4
4
  * Adapts Rust JSON metrics to the IMetrics interface.
@@ -54,6 +54,7 @@ export declare class RustMetricsAdapter implements IMetrics {
54
54
  perSecond: () => number;
55
55
  perMinute: () => number;
56
56
  total: () => number;
57
+ byDomain: () => Map<string, IRequestRateMetrics>;
57
58
  };
58
59
  totals: {
59
60
  bytesIn: () => number;
@@ -210,6 +210,18 @@ export class RustMetricsAdapter {
210
210
  total: () => {
211
211
  return this.cache?.totalHttpRequests ?? this.cache?.totalConnections ?? 0;
212
212
  },
213
+ byDomain: () => {
214
+ const result = new Map();
215
+ if (this.cache?.httpDomainRequests) {
216
+ for (const [domain, metrics] of Object.entries(this.cache.httpDomainRequests)) {
217
+ result.set(domain, {
218
+ perSecond: metrics.requestsPerSecond ?? 0,
219
+ lastMinute: metrics.requestsLastMinute ?? 0,
220
+ });
221
+ }
222
+ }
223
+ return result;
224
+ },
213
225
  };
214
226
  totals = {
215
227
  bytesIn: () => {
@@ -290,4 +302,4 @@ export class RustMetricsAdapter {
290
302
  },
291
303
  };
292
304
  }
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC1tZXRyaWNzLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm94aWVzL3NtYXJ0LXByb3h5L3J1c3QtbWV0cmljcy1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLE1BQU0sQ0FBa0I7SUFDeEIsS0FBSyxHQUFnQyxJQUFJLENBQUM7SUFDMUMsU0FBUyxHQUEwQyxJQUFJLENBQUM7SUFDeEQsY0FBYyxDQUFTO0lBRS9CLFlBQVksTUFBdUIsRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxtREFBbUQ7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzNCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFD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
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC1tZXRyaWNzLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm94aWVzL3NtYXJ0LXByb3h5L3J1c3QtbWV0cmljcy1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLE1BQU0sQ0FBa0I7SUFDeEIsS0FBSyxHQUFnQyxJQUFJLENBQUM7SUFDMUMsU0FBUyxHQUEwQyxJQUFJLENBQUM7SUFDeEQsY0FBYyxDQUFTO0lBRS9CLFlBQVksTUFBdUIsRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxtREFBbUQ7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzNCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartproxy",
3
- "version": "27.7.4",
3
+ "version": "27.8.1",
4
4
  "private": false,
5
5
  "description": "A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.",
6
6
  "main": "dist_ts/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartproxy',
6
- version: '27.7.4',
6
+ version: '27.8.1',
7
7
  description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
8
8
  }
@@ -29,6 +29,11 @@ export interface IThroughputHistoryPoint {
29
29
  out: number;
30
30
  }
31
31
 
32
+ export interface IRequestRateMetrics {
33
+ perSecond: number;
34
+ lastMinute: number;
35
+ }
36
+
32
37
  /**
33
38
  * Main metrics interface with clean, grouped API
34
39
  */
@@ -81,6 +86,7 @@ export interface IMetrics {
81
86
  perSecond(): number;
82
87
  perMinute(): number;
83
88
  total(): number;
89
+ byDomain(): Map<string, IRequestRateMetrics>;
84
90
  };
85
91
 
86
92
  // Cumulative totals
@@ -185,4 +191,4 @@ export interface IByteTracker {
185
191
  bytesOut: number;
186
192
  startTime: number;
187
193
  lastUpdate: number;
188
- }
194
+ }
@@ -134,6 +134,11 @@ export interface IRustBackendMetrics {
134
134
  h2Failures: number;
135
135
  }
136
136
 
137
+ export interface IRustHttpDomainRequestMetrics {
138
+ requestsPerSecond: number;
139
+ requestsLastMinute: number;
140
+ }
141
+
137
142
  export interface IRustMetricsSnapshot {
138
143
  activeConnections: number;
139
144
  totalConnections: number;
@@ -150,6 +155,7 @@ export interface IRustMetricsSnapshot {
150
155
  totalHttpRequests: number;
151
156
  httpRequestsPerSec: number;
152
157
  httpRequestsPerSecRecent: number;
158
+ httpDomainRequests: Record<string, IRustHttpDomainRequestMetrics>;
153
159
  activeUdpSessions: number;
154
160
  totalUdpSessions: number;
155
161
  totalDatagramsIn: number;
@@ -1,6 +1,6 @@
1
- import type { IMetrics, IBackendMetrics, IProtocolCacheEntry, IProtocolDistribution, IThroughputData, IThroughputHistoryPoint } from './models/metrics-types.js';
1
+ import type { IMetrics, IBackendMetrics, IProtocolCacheEntry, IProtocolDistribution, IRequestRateMetrics, IThroughputData, IThroughputHistoryPoint } from './models/metrics-types.js';
2
2
  import type { RustProxyBridge } from './rust-proxy-bridge.js';
3
- import type { IRustBackendMetrics, IRustIpMetrics, IRustMetricsSnapshot, IRustRouteMetrics } from './models/rust-types.js';
3
+ import type { IRustBackendMetrics, IRustHttpDomainRequestMetrics, IRustIpMetrics, IRustMetricsSnapshot, IRustRouteMetrics } from './models/rust-types.js';
4
4
 
5
5
  /**
6
6
  * Adapts Rust JSON metrics to the IMetrics interface.
@@ -219,6 +219,18 @@ export class RustMetricsAdapter implements IMetrics {
219
219
  total: (): number => {
220
220
  return this.cache?.totalHttpRequests ?? this.cache?.totalConnections ?? 0;
221
221
  },
222
+ byDomain: (): Map<string, IRequestRateMetrics> => {
223
+ const result = new Map<string, IRequestRateMetrics>();
224
+ if (this.cache?.httpDomainRequests) {
225
+ for (const [domain, metrics] of Object.entries(this.cache.httpDomainRequests) as Array<[string, IRustHttpDomainRequestMetrics]>) {
226
+ result.set(domain, {
227
+ perSecond: metrics.requestsPerSecond ?? 0,
228
+ lastMinute: metrics.requestsLastMinute ?? 0,
229
+ });
230
+ }
231
+ }
232
+ return result;
233
+ },
222
234
  };
223
235
 
224
236
  public totals = {