@push.rocks/smartproxy 25.17.10 → 26.0.0
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 +8 -0
- package/dist_rust/rustproxy_linux_amd64 +0 -0
- package/dist_rust/rustproxy_linux_arm64 +0 -0
- package/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/core/index.d.ts +0 -1
- package/dist_ts/core/index.js +1 -2
- package/dist_ts/core/models/index.d.ts +0 -1
- package/dist_ts/core/models/index.js +1 -2
- package/dist_ts/core/utils/index.d.ts +0 -12
- package/dist_ts/core/utils/index.js +1 -13
- package/dist_ts/index.d.ts +0 -3
- package/dist_ts/index.js +2 -7
- package/dist_ts/protocols/http/index.d.ts +0 -1
- package/dist_ts/protocols/http/index.js +1 -2
- package/dist_ts/protocols/index.d.ts +0 -7
- package/dist_ts/protocols/index.js +1 -8
- package/dist_ts/proxies/smart-proxy/socket-handler-server.js +6 -1
- package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.d.ts +0 -7
- package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.js +50 -51
- package/dist_ts/routing/index.d.ts +0 -1
- package/dist_ts/routing/index.js +1 -3
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/core/index.ts +0 -1
- package/ts/core/models/index.ts +0 -1
- package/ts/core/utils/index.ts +0 -12
- package/ts/index.ts +1 -7
- package/ts/protocols/http/index.ts +1 -2
- package/ts/protocols/index.ts +0 -7
- package/ts/proxies/smart-proxy/socket-handler-server.ts +6 -0
- package/ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.ts +60 -59
- package/ts/routing/index.ts +0 -3
- package/dist_ts/core/events/index.d.ts +0 -4
- package/dist_ts/core/events/index.js +0 -5
- package/dist_ts/core/models/socket-augmentation.d.ts +0 -15
- package/dist_ts/core/models/socket-augmentation.js +0 -18
- package/dist_ts/core/utils/async-utils.d.ts +0 -81
- package/dist_ts/core/utils/async-utils.js +0 -216
- package/dist_ts/core/utils/binary-heap.d.ts +0 -73
- package/dist_ts/core/utils/binary-heap.js +0 -193
- package/dist_ts/core/utils/enhanced-connection-pool.d.ts +0 -110
- package/dist_ts/core/utils/enhanced-connection-pool.js +0 -325
- package/dist_ts/core/utils/fs-utils.d.ts +0 -144
- package/dist_ts/core/utils/fs-utils.js +0 -252
- package/dist_ts/core/utils/ip-utils.d.ts +0 -69
- package/dist_ts/core/utils/ip-utils.js +0 -270
- package/dist_ts/core/utils/lifecycle-component.d.ts +0 -59
- package/dist_ts/core/utils/lifecycle-component.js +0 -211
- package/dist_ts/core/utils/log-deduplicator.d.ts +0 -39
- package/dist_ts/core/utils/log-deduplicator.js +0 -305
- package/dist_ts/core/utils/security-utils.d.ts +0 -111
- package/dist_ts/core/utils/security-utils.js +0 -212
- package/dist_ts/core/utils/shared-security-manager.d.ts +0 -128
- package/dist_ts/core/utils/shared-security-manager.js +0 -362
- package/dist_ts/core/utils/socket-utils.d.ts +0 -63
- package/dist_ts/core/utils/socket-utils.js +0 -249
- package/dist_ts/core/utils/template-utils.d.ts +0 -37
- package/dist_ts/core/utils/template-utils.js +0 -104
- package/dist_ts/core/utils/validation-utils.d.ts +0 -61
- package/dist_ts/core/utils/validation-utils.js +0 -149
- package/dist_ts/core/utils/websocket-utils.d.ts +0 -22
- package/dist_ts/core/utils/websocket-utils.js +0 -30
- package/dist_ts/detection/detectors/http-detector.d.ts +0 -33
- package/dist_ts/detection/detectors/http-detector.js +0 -101
- package/dist_ts/detection/detectors/quick-detector.d.ts +0 -28
- package/dist_ts/detection/detectors/quick-detector.js +0 -131
- package/dist_ts/detection/detectors/routing-extractor.d.ts +0 -28
- package/dist_ts/detection/detectors/routing-extractor.js +0 -122
- package/dist_ts/detection/detectors/tls-detector.d.ts +0 -47
- package/dist_ts/detection/detectors/tls-detector.js +0 -183
- package/dist_ts/detection/index.d.ts +0 -17
- package/dist_ts/detection/index.js +0 -22
- package/dist_ts/detection/models/detection-types.d.ts +0 -87
- package/dist_ts/detection/models/detection-types.js +0 -5
- package/dist_ts/detection/models/interfaces.d.ts +0 -97
- package/dist_ts/detection/models/interfaces.js +0 -5
- package/dist_ts/detection/protocol-detector.d.ts +0 -79
- package/dist_ts/detection/protocol-detector.js +0 -253
- package/dist_ts/detection/utils/buffer-utils.d.ts +0 -61
- package/dist_ts/detection/utils/buffer-utils.js +0 -127
- package/dist_ts/detection/utils/fragment-manager.d.ts +0 -31
- package/dist_ts/detection/utils/fragment-manager.js +0 -53
- package/dist_ts/detection/utils/parser-utils.d.ts +0 -42
- package/dist_ts/detection/utils/parser-utils.js +0 -63
- package/dist_ts/protocols/common/fragment-handler.d.ts +0 -73
- package/dist_ts/protocols/common/fragment-handler.js +0 -121
- package/dist_ts/protocols/common/index.d.ts +0 -7
- package/dist_ts/protocols/common/index.js +0 -8
- package/dist_ts/protocols/common/types.d.ts +0 -68
- package/dist_ts/protocols/common/types.js +0 -7
- package/dist_ts/protocols/http/parser.d.ts +0 -58
- package/dist_ts/protocols/http/parser.js +0 -184
- package/dist_ts/protocols/proxy/index.d.ts +0 -5
- package/dist_ts/protocols/proxy/index.js +0 -6
- package/dist_ts/protocols/proxy/types.d.ts +0 -47
- package/dist_ts/protocols/proxy/types.js +0 -6
- package/dist_ts/protocols/tls/alerts/index.d.ts +0 -4
- package/dist_ts/protocols/tls/alerts/index.js +0 -5
- package/dist_ts/protocols/tls/alerts/tls-alert.d.ts +0 -150
- package/dist_ts/protocols/tls/alerts/tls-alert.js +0 -226
- package/dist_ts/protocols/tls/index.d.ts +0 -12
- package/dist_ts/protocols/tls/index.js +0 -27
- package/dist_ts/protocols/tls/sni/client-hello-parser.d.ts +0 -100
- package/dist_ts/protocols/tls/sni/client-hello-parser.js +0 -463
- package/dist_ts/protocols/tls/sni/index.d.ts +0 -5
- package/dist_ts/protocols/tls/sni/index.js +0 -6
- package/dist_ts/protocols/tls/sni/sni-extraction.d.ts +0 -58
- package/dist_ts/protocols/tls/sni/sni-extraction.js +0 -275
- package/dist_ts/protocols/tls/utils/index.d.ts +0 -4
- package/dist_ts/protocols/tls/utils/index.js +0 -5
- package/dist_ts/protocols/tls/utils/tls-utils.d.ts +0 -158
- package/dist_ts/protocols/tls/utils/tls-utils.js +0 -187
- package/dist_ts/protocols/websocket/constants.d.ts +0 -55
- package/dist_ts/protocols/websocket/constants.js +0 -58
- package/dist_ts/protocols/websocket/index.d.ts +0 -7
- package/dist_ts/protocols/websocket/index.js +0 -8
- package/dist_ts/protocols/websocket/types.d.ts +0 -47
- package/dist_ts/protocols/websocket/types.js +0 -5
- package/dist_ts/protocols/websocket/utils.d.ts +0 -25
- package/dist_ts/protocols/websocket/utils.js +0 -103
- package/dist_ts/routing/router/http-router.d.ts +0 -89
- package/dist_ts/routing/router/http-router.js +0 -205
- package/dist_ts/routing/router/index.d.ts +0 -5
- package/dist_ts/routing/router/index.js +0 -6
- package/dist_ts/tls/index.d.ts +0 -16
- package/dist_ts/tls/index.js +0 -24
- package/dist_ts/tls/sni/index.d.ts +0 -4
- package/dist_ts/tls/sni/index.js +0 -5
- package/dist_ts/tls/sni/sni-handler.d.ts +0 -154
- package/dist_ts/tls/sni/sni-handler.js +0 -191
- package/ts/core/events/index.ts +0 -3
- package/ts/core/models/socket-augmentation.ts +0 -38
- package/ts/core/utils/async-utils.ts +0 -275
- package/ts/core/utils/binary-heap.ts +0 -225
- package/ts/core/utils/enhanced-connection-pool.ts +0 -425
- package/ts/core/utils/fs-utils.ts +0 -270
- package/ts/core/utils/ip-utils.ts +0 -303
- package/ts/core/utils/lifecycle-component.ts +0 -251
- package/ts/core/utils/log-deduplicator.ts +0 -370
- package/ts/core/utils/security-utils.ts +0 -305
- package/ts/core/utils/shared-security-manager.ts +0 -470
- package/ts/core/utils/socket-utils.ts +0 -322
- package/ts/core/utils/template-utils.ts +0 -124
- package/ts/core/utils/validation-utils.ts +0 -177
- package/ts/core/utils/websocket-utils.ts +0 -33
- package/ts/detection/detectors/http-detector.ts +0 -127
- package/ts/detection/detectors/quick-detector.ts +0 -148
- package/ts/detection/detectors/routing-extractor.ts +0 -147
- package/ts/detection/detectors/tls-detector.ts +0 -223
- package/ts/detection/index.ts +0 -25
- package/ts/detection/models/detection-types.ts +0 -102
- package/ts/detection/models/interfaces.ts +0 -115
- package/ts/detection/protocol-detector.ts +0 -319
- package/ts/detection/utils/buffer-utils.ts +0 -141
- package/ts/detection/utils/fragment-manager.ts +0 -64
- package/ts/detection/utils/parser-utils.ts +0 -77
- package/ts/protocols/common/fragment-handler.ts +0 -167
- package/ts/protocols/common/index.ts +0 -8
- package/ts/protocols/common/types.ts +0 -76
- package/ts/protocols/http/parser.ts +0 -219
- package/ts/protocols/proxy/index.ts +0 -6
- package/ts/protocols/proxy/types.ts +0 -53
- package/ts/protocols/tls/alerts/index.ts +0 -3
- package/ts/protocols/tls/alerts/tls-alert.ts +0 -259
- package/ts/protocols/tls/index.ts +0 -37
- package/ts/protocols/tls/sni/client-hello-parser.ts +0 -629
- package/ts/protocols/tls/sni/index.ts +0 -6
- package/ts/protocols/tls/sni/sni-extraction.ts +0 -353
- package/ts/protocols/tls/utils/index.ts +0 -3
- package/ts/protocols/tls/utils/tls-utils.ts +0 -201
- package/ts/protocols/websocket/constants.ts +0 -60
- package/ts/protocols/websocket/index.ts +0 -8
- package/ts/protocols/websocket/types.ts +0 -53
- package/ts/protocols/websocket/utils.ts +0 -98
- package/ts/routing/router/http-router.ts +0 -266
- package/ts/routing/router/index.ts +0 -7
- package/ts/tls/index.ts +0 -29
- package/ts/tls/sni/index.ts +0 -3
- package/ts/tls/sni/sni-handler.ts +0 -264
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A binary heap implementation for efficient priority queue operations
|
|
3
|
-
* Supports O(log n) insert and extract operations
|
|
4
|
-
*/
|
|
5
|
-
export declare class BinaryHeap<T> {
|
|
6
|
-
private compareFn;
|
|
7
|
-
private extractKey?;
|
|
8
|
-
private heap;
|
|
9
|
-
private keyMap?;
|
|
10
|
-
constructor(compareFn: (a: T, b: T) => number, extractKey?: (item: T) => string);
|
|
11
|
-
/**
|
|
12
|
-
* Get the current size of the heap
|
|
13
|
-
*/
|
|
14
|
-
get size(): number;
|
|
15
|
-
/**
|
|
16
|
-
* Check if the heap is empty
|
|
17
|
-
*/
|
|
18
|
-
isEmpty(): boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Peek at the top element without removing it
|
|
21
|
-
*/
|
|
22
|
-
peek(): T | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Insert a new item into the heap
|
|
25
|
-
* O(log n) time complexity
|
|
26
|
-
*/
|
|
27
|
-
insert(item: T): void;
|
|
28
|
-
/**
|
|
29
|
-
* Extract the top element from the heap
|
|
30
|
-
* O(log n) time complexity
|
|
31
|
-
*/
|
|
32
|
-
extract(): T | undefined;
|
|
33
|
-
/**
|
|
34
|
-
* Extract an element that matches the predicate
|
|
35
|
-
* O(n) time complexity for search, O(log n) for extraction
|
|
36
|
-
*/
|
|
37
|
-
extractIf(predicate: (item: T) => boolean): T | undefined;
|
|
38
|
-
/**
|
|
39
|
-
* Extract an element by its key (if extractKey was provided)
|
|
40
|
-
* O(log n) time complexity
|
|
41
|
-
*/
|
|
42
|
-
extractByKey(key: string): T | undefined;
|
|
43
|
-
/**
|
|
44
|
-
* Check if a key exists in the heap
|
|
45
|
-
* O(1) time complexity
|
|
46
|
-
*/
|
|
47
|
-
hasKey(key: string): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Get all elements as an array (does not modify heap)
|
|
50
|
-
* O(n) time complexity
|
|
51
|
-
*/
|
|
52
|
-
toArray(): T[];
|
|
53
|
-
/**
|
|
54
|
-
* Clear the heap
|
|
55
|
-
*/
|
|
56
|
-
clear(): void;
|
|
57
|
-
/**
|
|
58
|
-
* Extract element at specific index
|
|
59
|
-
*/
|
|
60
|
-
private extractAt;
|
|
61
|
-
/**
|
|
62
|
-
* Bubble up element at given index to maintain heap property
|
|
63
|
-
*/
|
|
64
|
-
private bubbleUp;
|
|
65
|
-
/**
|
|
66
|
-
* Bubble down element at given index to maintain heap property
|
|
67
|
-
*/
|
|
68
|
-
private bubbleDown;
|
|
69
|
-
/**
|
|
70
|
-
* Swap two elements in the heap
|
|
71
|
-
*/
|
|
72
|
-
private swap;
|
|
73
|
-
}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A binary heap implementation for efficient priority queue operations
|
|
3
|
-
* Supports O(log n) insert and extract operations
|
|
4
|
-
*/
|
|
5
|
-
export class BinaryHeap {
|
|
6
|
-
constructor(compareFn, extractKey) {
|
|
7
|
-
this.compareFn = compareFn;
|
|
8
|
-
this.extractKey = extractKey;
|
|
9
|
-
this.heap = [];
|
|
10
|
-
if (extractKey) {
|
|
11
|
-
this.keyMap = new Map();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Get the current size of the heap
|
|
16
|
-
*/
|
|
17
|
-
get size() {
|
|
18
|
-
return this.heap.length;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Check if the heap is empty
|
|
22
|
-
*/
|
|
23
|
-
isEmpty() {
|
|
24
|
-
return this.heap.length === 0;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Peek at the top element without removing it
|
|
28
|
-
*/
|
|
29
|
-
peek() {
|
|
30
|
-
return this.heap[0];
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Insert a new item into the heap
|
|
34
|
-
* O(log n) time complexity
|
|
35
|
-
*/
|
|
36
|
-
insert(item) {
|
|
37
|
-
const index = this.heap.length;
|
|
38
|
-
this.heap.push(item);
|
|
39
|
-
if (this.keyMap && this.extractKey) {
|
|
40
|
-
const key = this.extractKey(item);
|
|
41
|
-
this.keyMap.set(key, index);
|
|
42
|
-
}
|
|
43
|
-
this.bubbleUp(index);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Extract the top element from the heap
|
|
47
|
-
* O(log n) time complexity
|
|
48
|
-
*/
|
|
49
|
-
extract() {
|
|
50
|
-
if (this.heap.length === 0)
|
|
51
|
-
return undefined;
|
|
52
|
-
if (this.heap.length === 1) {
|
|
53
|
-
const item = this.heap.pop();
|
|
54
|
-
if (this.keyMap && this.extractKey) {
|
|
55
|
-
this.keyMap.delete(this.extractKey(item));
|
|
56
|
-
}
|
|
57
|
-
return item;
|
|
58
|
-
}
|
|
59
|
-
const result = this.heap[0];
|
|
60
|
-
const lastItem = this.heap.pop();
|
|
61
|
-
this.heap[0] = lastItem;
|
|
62
|
-
if (this.keyMap && this.extractKey) {
|
|
63
|
-
this.keyMap.delete(this.extractKey(result));
|
|
64
|
-
this.keyMap.set(this.extractKey(lastItem), 0);
|
|
65
|
-
}
|
|
66
|
-
this.bubbleDown(0);
|
|
67
|
-
return result;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Extract an element that matches the predicate
|
|
71
|
-
* O(n) time complexity for search, O(log n) for extraction
|
|
72
|
-
*/
|
|
73
|
-
extractIf(predicate) {
|
|
74
|
-
const index = this.heap.findIndex(predicate);
|
|
75
|
-
if (index === -1)
|
|
76
|
-
return undefined;
|
|
77
|
-
return this.extractAt(index);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Extract an element by its key (if extractKey was provided)
|
|
81
|
-
* O(log n) time complexity
|
|
82
|
-
*/
|
|
83
|
-
extractByKey(key) {
|
|
84
|
-
if (!this.keyMap || !this.extractKey) {
|
|
85
|
-
throw new Error('extractKey function must be provided to use key-based extraction');
|
|
86
|
-
}
|
|
87
|
-
const index = this.keyMap.get(key);
|
|
88
|
-
if (index === undefined)
|
|
89
|
-
return undefined;
|
|
90
|
-
return this.extractAt(index);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Check if a key exists in the heap
|
|
94
|
-
* O(1) time complexity
|
|
95
|
-
*/
|
|
96
|
-
hasKey(key) {
|
|
97
|
-
if (!this.keyMap)
|
|
98
|
-
return false;
|
|
99
|
-
return this.keyMap.has(key);
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Get all elements as an array (does not modify heap)
|
|
103
|
-
* O(n) time complexity
|
|
104
|
-
*/
|
|
105
|
-
toArray() {
|
|
106
|
-
return [...this.heap];
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Clear the heap
|
|
110
|
-
*/
|
|
111
|
-
clear() {
|
|
112
|
-
this.heap = [];
|
|
113
|
-
if (this.keyMap) {
|
|
114
|
-
this.keyMap.clear();
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Extract element at specific index
|
|
119
|
-
*/
|
|
120
|
-
extractAt(index) {
|
|
121
|
-
const item = this.heap[index];
|
|
122
|
-
if (this.keyMap && this.extractKey) {
|
|
123
|
-
this.keyMap.delete(this.extractKey(item));
|
|
124
|
-
}
|
|
125
|
-
if (index === this.heap.length - 1) {
|
|
126
|
-
this.heap.pop();
|
|
127
|
-
return item;
|
|
128
|
-
}
|
|
129
|
-
const lastItem = this.heap.pop();
|
|
130
|
-
this.heap[index] = lastItem;
|
|
131
|
-
if (this.keyMap && this.extractKey) {
|
|
132
|
-
this.keyMap.set(this.extractKey(lastItem), index);
|
|
133
|
-
}
|
|
134
|
-
// Try bubbling up first
|
|
135
|
-
const parentIndex = Math.floor((index - 1) / 2);
|
|
136
|
-
if (parentIndex >= 0 && this.compareFn(this.heap[index], this.heap[parentIndex]) < 0) {
|
|
137
|
-
this.bubbleUp(index);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
this.bubbleDown(index);
|
|
141
|
-
}
|
|
142
|
-
return item;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Bubble up element at given index to maintain heap property
|
|
146
|
-
*/
|
|
147
|
-
bubbleUp(index) {
|
|
148
|
-
while (index > 0) {
|
|
149
|
-
const parentIndex = Math.floor((index - 1) / 2);
|
|
150
|
-
if (this.compareFn(this.heap[index], this.heap[parentIndex]) >= 0) {
|
|
151
|
-
break;
|
|
152
|
-
}
|
|
153
|
-
this.swap(index, parentIndex);
|
|
154
|
-
index = parentIndex;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Bubble down element at given index to maintain heap property
|
|
159
|
-
*/
|
|
160
|
-
bubbleDown(index) {
|
|
161
|
-
const length = this.heap.length;
|
|
162
|
-
while (true) {
|
|
163
|
-
const leftChild = 2 * index + 1;
|
|
164
|
-
const rightChild = 2 * index + 2;
|
|
165
|
-
let smallest = index;
|
|
166
|
-
if (leftChild < length &&
|
|
167
|
-
this.compareFn(this.heap[leftChild], this.heap[smallest]) < 0) {
|
|
168
|
-
smallest = leftChild;
|
|
169
|
-
}
|
|
170
|
-
if (rightChild < length &&
|
|
171
|
-
this.compareFn(this.heap[rightChild], this.heap[smallest]) < 0) {
|
|
172
|
-
smallest = rightChild;
|
|
173
|
-
}
|
|
174
|
-
if (smallest === index)
|
|
175
|
-
break;
|
|
176
|
-
this.swap(index, smallest);
|
|
177
|
-
index = smallest;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Swap two elements in the heap
|
|
182
|
-
*/
|
|
183
|
-
swap(i, j) {
|
|
184
|
-
const temp = this.heap[i];
|
|
185
|
-
this.heap[i] = this.heap[j];
|
|
186
|
-
this.heap[j] = temp;
|
|
187
|
-
if (this.keyMap && this.extractKey) {
|
|
188
|
-
this.keyMap.set(this.extractKey(this.heap[i]), i);
|
|
189
|
-
this.keyMap.set(this.extractKey(this.heap[j]), j);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LWhlYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jb3JlL3V0aWxzL2JpbmFyeS1oZWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQ1UsU0FBaUMsRUFDakMsVUFBZ0M7UUFEaEMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUFMbEMsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQU9yQixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBTztRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxD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
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { LifecycleComponent } from './lifecycle-component.js';
|
|
2
|
-
/**
|
|
3
|
-
* Interface for pooled connection
|
|
4
|
-
*/
|
|
5
|
-
export interface IPooledConnection<T> {
|
|
6
|
-
id: string;
|
|
7
|
-
connection: T;
|
|
8
|
-
createdAt: number;
|
|
9
|
-
lastUsedAt: number;
|
|
10
|
-
useCount: number;
|
|
11
|
-
inUse: boolean;
|
|
12
|
-
metadata?: any;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Configuration options for the connection pool
|
|
16
|
-
*/
|
|
17
|
-
export interface IConnectionPoolOptions<T> {
|
|
18
|
-
minSize?: number;
|
|
19
|
-
maxSize?: number;
|
|
20
|
-
acquireTimeout?: number;
|
|
21
|
-
idleTimeout?: number;
|
|
22
|
-
maxUseCount?: number;
|
|
23
|
-
validateOnAcquire?: boolean;
|
|
24
|
-
validateOnReturn?: boolean;
|
|
25
|
-
queueTimeout?: number;
|
|
26
|
-
connectionFactory: () => Promise<T>;
|
|
27
|
-
connectionValidator?: (connection: T) => Promise<boolean>;
|
|
28
|
-
connectionDestroyer?: (connection: T) => Promise<void>;
|
|
29
|
-
onConnectionError?: (error: Error, connection?: T) => void;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Enhanced connection pool with priority queue, backpressure, and lifecycle management
|
|
33
|
-
*/
|
|
34
|
-
export declare class EnhancedConnectionPool<T> extends LifecycleComponent {
|
|
35
|
-
private readonly options;
|
|
36
|
-
private readonly availableConnections;
|
|
37
|
-
private readonly activeConnections;
|
|
38
|
-
private readonly waitQueue;
|
|
39
|
-
private readonly mutex;
|
|
40
|
-
private readonly eventEmitter;
|
|
41
|
-
private connectionIdCounter;
|
|
42
|
-
private requestIdCounter;
|
|
43
|
-
private isClosing;
|
|
44
|
-
private metrics;
|
|
45
|
-
constructor(options: IConnectionPoolOptions<T>);
|
|
46
|
-
/**
|
|
47
|
-
* Initialize minimum number of connections
|
|
48
|
-
*/
|
|
49
|
-
private initializeMinConnections;
|
|
50
|
-
/**
|
|
51
|
-
* Start maintenance timer for idle connection cleanup
|
|
52
|
-
*/
|
|
53
|
-
private startMaintenance;
|
|
54
|
-
/**
|
|
55
|
-
* Perform maintenance tasks
|
|
56
|
-
*/
|
|
57
|
-
private performMaintenance;
|
|
58
|
-
/**
|
|
59
|
-
* Acquire a connection from the pool
|
|
60
|
-
*/
|
|
61
|
-
acquire(priority?: number, timeout?: number): Promise<IPooledConnection<T>>;
|
|
62
|
-
/**
|
|
63
|
-
* Try to acquire an available connection
|
|
64
|
-
*/
|
|
65
|
-
private tryAcquireConnection;
|
|
66
|
-
/**
|
|
67
|
-
* Checkout a connection for use
|
|
68
|
-
*/
|
|
69
|
-
private checkoutConnection;
|
|
70
|
-
/**
|
|
71
|
-
* Queue an acquire request
|
|
72
|
-
*/
|
|
73
|
-
private queueAcquireRequest;
|
|
74
|
-
/**
|
|
75
|
-
* Release a connection back to the pool
|
|
76
|
-
*/
|
|
77
|
-
release(connection: IPooledConnection<T>): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Create a new connection
|
|
80
|
-
*/
|
|
81
|
-
private createConnection;
|
|
82
|
-
/**
|
|
83
|
-
* Destroy a connection
|
|
84
|
-
*/
|
|
85
|
-
private destroyConnection;
|
|
86
|
-
/**
|
|
87
|
-
* Get current pool statistics
|
|
88
|
-
*/
|
|
89
|
-
getStats(): {
|
|
90
|
-
connectionsCreated: number;
|
|
91
|
-
connectionsDestroyed: number;
|
|
92
|
-
connectionsAcquired: number;
|
|
93
|
-
connectionsReleased: number;
|
|
94
|
-
acquireTimeouts: number;
|
|
95
|
-
validationFailures: number;
|
|
96
|
-
queueHighWaterMark: number;
|
|
97
|
-
available: number;
|
|
98
|
-
active: number;
|
|
99
|
-
waiting: number;
|
|
100
|
-
total: number;
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* Subscribe to pool events
|
|
104
|
-
*/
|
|
105
|
-
on(event: string, listener: Function): void;
|
|
106
|
-
/**
|
|
107
|
-
* Close the pool and cleanup resources
|
|
108
|
-
*/
|
|
109
|
-
protected onCleanup(): Promise<void>;
|
|
110
|
-
}
|