@push.rocks/smartproxy 21.0.0 → 21.1.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 +18 -0
- package/dist_ts/core/utils/proxy-protocol.d.ts +5 -17
- package/dist_ts/core/utils/proxy-protocol.js +13 -97
- package/dist_ts/core/utils/websocket-utils.d.ts +6 -7
- package/dist_ts/core/utils/websocket-utils.js +10 -66
- package/dist_ts/detection/detectors/http-detector-v2.d.ts +33 -0
- package/dist_ts/detection/detectors/http-detector-v2.js +87 -0
- package/dist_ts/detection/detectors/http-detector.d.ts +33 -0
- package/dist_ts/detection/detectors/http-detector.js +89 -0
- package/dist_ts/detection/detectors/quick-detector.d.ts +28 -0
- package/dist_ts/detection/detectors/quick-detector.js +131 -0
- package/dist_ts/detection/detectors/routing-extractor.d.ts +28 -0
- package/dist_ts/detection/detectors/routing-extractor.js +122 -0
- package/dist_ts/detection/detectors/tls-detector-v2.d.ts +33 -0
- package/dist_ts/detection/detectors/tls-detector-v2.js +80 -0
- package/dist_ts/detection/detectors/tls-detector.d.ts +55 -0
- package/dist_ts/detection/detectors/tls-detector.js +206 -0
- package/dist_ts/detection/index.d.ts +17 -0
- package/dist_ts/detection/index.js +22 -0
- package/dist_ts/detection/models/detection-types.d.ts +87 -0
- package/dist_ts/detection/models/detection-types.js +5 -0
- package/dist_ts/detection/models/interfaces.d.ts +97 -0
- package/dist_ts/detection/models/interfaces.js +5 -0
- package/dist_ts/detection/protocol-detector-v2.d.ts +46 -0
- package/dist_ts/detection/protocol-detector-v2.js +116 -0
- package/dist_ts/detection/protocol-detector.d.ts +74 -0
- package/dist_ts/detection/protocol-detector.js +173 -0
- package/dist_ts/detection/utils/buffer-utils.d.ts +61 -0
- package/dist_ts/detection/utils/buffer-utils.js +127 -0
- package/dist_ts/detection/utils/fragment-manager.d.ts +31 -0
- package/dist_ts/detection/utils/fragment-manager.js +53 -0
- package/dist_ts/detection/utils/parser-utils.d.ts +42 -0
- package/dist_ts/detection/utils/parser-utils.js +63 -0
- package/dist_ts/index.d.ts +2 -0
- package/dist_ts/index.js +3 -1
- package/dist_ts/protocols/common/fragment-handler.d.ts +73 -0
- package/dist_ts/protocols/common/fragment-handler.js +117 -0
- package/dist_ts/protocols/common/index.d.ts +7 -0
- package/dist_ts/protocols/common/index.js +8 -0
- package/dist_ts/protocols/common/types.d.ts +68 -0
- package/dist_ts/protocols/common/types.js +7 -0
- package/dist_ts/protocols/http/constants.d.ts +119 -0
- package/dist_ts/protocols/http/constants.js +200 -0
- package/dist_ts/protocols/http/index.d.ts +7 -0
- package/dist_ts/protocols/http/index.js +8 -0
- package/dist_ts/protocols/http/parser.d.ts +58 -0
- package/dist_ts/protocols/http/parser.js +184 -0
- package/dist_ts/protocols/http/types.d.ts +62 -0
- package/dist_ts/protocols/http/types.js +5 -0
- package/dist_ts/protocols/index.d.ts +11 -0
- package/dist_ts/protocols/index.js +12 -0
- package/dist_ts/protocols/proxy/index.d.ts +6 -0
- package/dist_ts/protocols/proxy/index.js +7 -0
- package/dist_ts/protocols/proxy/parser.d.ts +44 -0
- package/dist_ts/protocols/proxy/parser.js +153 -0
- package/dist_ts/protocols/proxy/types.d.ts +47 -0
- package/dist_ts/protocols/proxy/types.js +6 -0
- package/dist_ts/protocols/tls/alerts/index.d.ts +4 -0
- package/dist_ts/protocols/tls/alerts/index.js +5 -0
- package/dist_ts/protocols/tls/alerts/tls-alert.d.ts +150 -0
- package/dist_ts/protocols/tls/alerts/tls-alert.js +226 -0
- package/dist_ts/protocols/tls/constants.d.ts +122 -0
- package/dist_ts/protocols/tls/constants.js +135 -0
- package/dist_ts/protocols/tls/index.d.ts +12 -0
- package/dist_ts/protocols/tls/index.js +27 -0
- package/dist_ts/protocols/tls/parser.d.ts +53 -0
- package/dist_ts/protocols/tls/parser.js +294 -0
- package/dist_ts/protocols/tls/sni/client-hello-parser.d.ts +100 -0
- package/dist_ts/protocols/tls/sni/client-hello-parser.js +463 -0
- package/dist_ts/protocols/tls/sni/index.d.ts +5 -0
- package/dist_ts/protocols/tls/sni/index.js +6 -0
- package/dist_ts/protocols/tls/sni/sni-extraction.d.ts +58 -0
- package/dist_ts/protocols/tls/sni/sni-extraction.js +275 -0
- package/dist_ts/protocols/tls/types.d.ts +65 -0
- package/dist_ts/protocols/tls/types.js +5 -0
- package/dist_ts/protocols/tls/utils/index.d.ts +4 -0
- package/dist_ts/protocols/tls/utils/index.js +5 -0
- package/dist_ts/protocols/tls/utils/tls-utils.d.ts +158 -0
- package/dist_ts/protocols/tls/utils/tls-utils.js +187 -0
- package/dist_ts/protocols/websocket/constants.d.ts +55 -0
- package/dist_ts/protocols/websocket/constants.js +58 -0
- package/dist_ts/protocols/websocket/index.d.ts +7 -0
- package/dist_ts/protocols/websocket/index.js +8 -0
- package/dist_ts/protocols/websocket/types.d.ts +47 -0
- package/dist_ts/protocols/websocket/types.js +5 -0
- package/dist_ts/protocols/websocket/utils.d.ts +25 -0
- package/dist_ts/protocols/websocket/utils.js +103 -0
- package/dist_ts/proxies/http-proxy/models/http-types.d.ts +25 -27
- package/dist_ts/proxies/http-proxy/models/http-types.js +24 -44
- package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +5 -0
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +81 -61
- package/dist_ts/proxies/smart-proxy/tls-manager.js +2 -1
- package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +2 -0
- package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +61 -52
- package/dist_ts/tls/index.d.ts +5 -7
- package/dist_ts/tls/index.js +8 -11
- package/dist_ts/tls/sni/client-hello-parser.js +3 -2
- package/dist_ts/tls/sni/sni-handler.js +4 -4
- package/dist_ts/tls/utils/tls-utils.d.ts +1 -110
- package/dist_ts/tls/utils/tls-utils.js +4 -116
- package/package.json +1 -1
- package/readme.plan.md +0 -0
- package/ts/core/utils/proxy-protocol.ts +14 -131
- package/ts/core/utils/websocket-utils.ts +12 -60
- package/ts/detection/detectors/http-detector.ts +114 -0
- package/ts/detection/detectors/quick-detector.ts +148 -0
- package/ts/detection/detectors/routing-extractor.ts +147 -0
- package/ts/detection/detectors/tls-detector.ts +252 -0
- package/ts/detection/index.ts +25 -0
- package/ts/detection/models/detection-types.ts +102 -0
- package/ts/detection/models/interfaces.ts +115 -0
- package/ts/detection/protocol-detector.ts +230 -0
- package/ts/detection/utils/buffer-utils.ts +141 -0
- package/ts/detection/utils/fragment-manager.ts +64 -0
- package/ts/detection/utils/parser-utils.ts +77 -0
- package/ts/index.ts +3 -1
- package/ts/protocols/common/fragment-handler.ts +163 -0
- package/ts/protocols/common/index.ts +8 -0
- package/ts/protocols/common/types.ts +76 -0
- package/ts/protocols/http/constants.ts +219 -0
- package/ts/protocols/http/index.ts +8 -0
- package/ts/protocols/http/parser.ts +219 -0
- package/ts/protocols/http/types.ts +70 -0
- package/ts/protocols/index.ts +12 -0
- package/ts/protocols/proxy/index.ts +7 -0
- package/ts/protocols/proxy/parser.ts +183 -0
- package/ts/protocols/proxy/types.ts +53 -0
- package/ts/{tls → protocols/tls}/alerts/tls-alert.ts +1 -1
- package/ts/protocols/tls/index.ts +37 -0
- package/ts/protocols/tls/sni/index.ts +6 -0
- package/ts/{tls → protocols/tls}/utils/tls-utils.ts +1 -1
- package/ts/protocols/websocket/constants.ts +60 -0
- package/ts/protocols/websocket/index.ts +8 -0
- package/ts/protocols/websocket/types.ts +53 -0
- package/ts/protocols/websocket/utils.ts +98 -0
- package/ts/proxies/http-proxy/models/http-types.ts +29 -46
- package/ts/proxies/smart-proxy/models/interfaces.ts +7 -0
- package/ts/proxies/smart-proxy/route-connection-handler.ts +91 -68
- package/ts/proxies/smart-proxy/tls-manager.ts +1 -0
- package/ts/proxies/smart-proxy/utils/route-helpers.ts +72 -56
- package/ts/tls/index.ts +8 -12
- package/ts/tls/sni/sni-handler.ts +3 -3
- /package/ts/{tls → protocols/tls}/alerts/index.ts +0 -0
- /package/ts/{tls → protocols/tls}/sni/client-hello-parser.ts +0 -0
- /package/ts/{tls → protocols/tls}/sni/sni-extraction.ts +0 -0
- /package/ts/{tls → protocols/tls}/utils/index.ts +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Fragment Handler for Protocol Detection
|
|
3
|
+
*
|
|
4
|
+
* Provides unified fragment buffering and reassembly for protocols
|
|
5
|
+
* that may span multiple TCP packets.
|
|
6
|
+
*/
|
|
7
|
+
import { Buffer } from 'buffer';
|
|
8
|
+
/**
|
|
9
|
+
* Fragment tracking information
|
|
10
|
+
*/
|
|
11
|
+
export interface IFragmentInfo {
|
|
12
|
+
buffer: Buffer;
|
|
13
|
+
timestamp: number;
|
|
14
|
+
connectionId: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Options for fragment handling
|
|
18
|
+
*/
|
|
19
|
+
export interface IFragmentOptions {
|
|
20
|
+
maxBufferSize?: number;
|
|
21
|
+
timeout?: number;
|
|
22
|
+
cleanupInterval?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result of fragment processing
|
|
26
|
+
*/
|
|
27
|
+
export interface IFragmentResult {
|
|
28
|
+
isComplete: boolean;
|
|
29
|
+
buffer?: Buffer;
|
|
30
|
+
needsMoreData: boolean;
|
|
31
|
+
error?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Shared fragment handler for protocol detection
|
|
35
|
+
*/
|
|
36
|
+
export declare class FragmentHandler {
|
|
37
|
+
private options;
|
|
38
|
+
private fragments;
|
|
39
|
+
private cleanupTimer?;
|
|
40
|
+
constructor(options?: IFragmentOptions);
|
|
41
|
+
/**
|
|
42
|
+
* Add a fragment for a connection
|
|
43
|
+
*/
|
|
44
|
+
addFragment(connectionId: string, fragment: Buffer): IFragmentResult;
|
|
45
|
+
/**
|
|
46
|
+
* Get the current buffer for a connection
|
|
47
|
+
*/
|
|
48
|
+
getBuffer(connectionId: string): Buffer | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Mark a connection as complete and clean up
|
|
51
|
+
*/
|
|
52
|
+
complete(connectionId: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Check if we're tracking a connection
|
|
55
|
+
*/
|
|
56
|
+
hasConnection(connectionId: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Clean up expired fragments
|
|
59
|
+
*/
|
|
60
|
+
cleanup(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Clear all fragments
|
|
63
|
+
*/
|
|
64
|
+
clear(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Destroy the handler and clean up resources
|
|
67
|
+
*/
|
|
68
|
+
destroy(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Get the number of tracked connections
|
|
71
|
+
*/
|
|
72
|
+
get size(): number;
|
|
73
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Fragment Handler for Protocol Detection
|
|
3
|
+
*
|
|
4
|
+
* Provides unified fragment buffering and reassembly for protocols
|
|
5
|
+
* that may span multiple TCP packets.
|
|
6
|
+
*/
|
|
7
|
+
import { Buffer } from 'buffer';
|
|
8
|
+
/**
|
|
9
|
+
* Shared fragment handler for protocol detection
|
|
10
|
+
*/
|
|
11
|
+
export class FragmentHandler {
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
this.options = options;
|
|
14
|
+
this.fragments = new Map();
|
|
15
|
+
// Start cleanup timer if not already running
|
|
16
|
+
if (options.cleanupInterval && !this.cleanupTimer) {
|
|
17
|
+
this.cleanupTimer = setInterval(() => this.cleanup(), options.cleanupInterval);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Add a fragment for a connection
|
|
22
|
+
*/
|
|
23
|
+
addFragment(connectionId, fragment) {
|
|
24
|
+
const existing = this.fragments.get(connectionId);
|
|
25
|
+
if (existing) {
|
|
26
|
+
// Append to existing buffer
|
|
27
|
+
const newBuffer = Buffer.concat([existing.buffer, fragment]);
|
|
28
|
+
// Check size limit
|
|
29
|
+
const maxSize = this.options.maxBufferSize || 65536;
|
|
30
|
+
if (newBuffer.length > maxSize) {
|
|
31
|
+
this.fragments.delete(connectionId);
|
|
32
|
+
return {
|
|
33
|
+
isComplete: false,
|
|
34
|
+
needsMoreData: false,
|
|
35
|
+
error: 'Buffer size exceeded maximum allowed'
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// Update fragment info
|
|
39
|
+
this.fragments.set(connectionId, {
|
|
40
|
+
buffer: newBuffer,
|
|
41
|
+
timestamp: Date.now(),
|
|
42
|
+
connectionId
|
|
43
|
+
});
|
|
44
|
+
return {
|
|
45
|
+
isComplete: false,
|
|
46
|
+
buffer: newBuffer,
|
|
47
|
+
needsMoreData: true
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// New fragment
|
|
52
|
+
this.fragments.set(connectionId, {
|
|
53
|
+
buffer: fragment,
|
|
54
|
+
timestamp: Date.now(),
|
|
55
|
+
connectionId
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
isComplete: false,
|
|
59
|
+
buffer: fragment,
|
|
60
|
+
needsMoreData: true
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get the current buffer for a connection
|
|
66
|
+
*/
|
|
67
|
+
getBuffer(connectionId) {
|
|
68
|
+
return this.fragments.get(connectionId)?.buffer;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Mark a connection as complete and clean up
|
|
72
|
+
*/
|
|
73
|
+
complete(connectionId) {
|
|
74
|
+
this.fragments.delete(connectionId);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check if we're tracking a connection
|
|
78
|
+
*/
|
|
79
|
+
hasConnection(connectionId) {
|
|
80
|
+
return this.fragments.has(connectionId);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Clean up expired fragments
|
|
84
|
+
*/
|
|
85
|
+
cleanup() {
|
|
86
|
+
const now = Date.now();
|
|
87
|
+
const timeout = this.options.timeout || 5000;
|
|
88
|
+
for (const [connectionId, info] of this.fragments.entries()) {
|
|
89
|
+
if (now - info.timestamp > timeout) {
|
|
90
|
+
this.fragments.delete(connectionId);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Clear all fragments
|
|
96
|
+
*/
|
|
97
|
+
clear() {
|
|
98
|
+
this.fragments.clear();
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Destroy the handler and clean up resources
|
|
102
|
+
*/
|
|
103
|
+
destroy() {
|
|
104
|
+
if (this.cleanupTimer) {
|
|
105
|
+
clearInterval(this.cleanupTimer);
|
|
106
|
+
this.cleanupTimer = undefined;
|
|
107
|
+
}
|
|
108
|
+
this.clear();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the number of tracked connections
|
|
112
|
+
*/
|
|
113
|
+
get size() {
|
|
114
|
+
return this.fragments.size;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhZ21lbnQtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3Byb3RvY29scy9jb21tb24vZnJhZ21lbnQtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUE4QmhDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFBb0IsVUFBNEIsRUFBRTtRQUE5QixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUgxQyxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFJbkQsNkNBQTZDO1FBQzdDLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUNwQixPQUFPLENBQUMsZUFBZSxDQUN4QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxZQUFvQixFQUFFLFFBQWdCO1FBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWxELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYiw0QkFBNEI7WUFDNUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUU3RCxtQkFBbUI7WUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO1lBQ3BELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFN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
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common Protocol Infrastructure
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities and types for protocol handling
|
|
5
|
+
*/
|
|
6
|
+
export * from './fragment-handler.js';
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsWUFBWSxDQUFDIn0=
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common Protocol Types
|
|
3
|
+
*
|
|
4
|
+
* Shared types used across different protocol implementations
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Supported protocol types
|
|
8
|
+
*/
|
|
9
|
+
export type TProtocolType = 'tls' | 'http' | 'https' | 'websocket' | 'unknown';
|
|
10
|
+
/**
|
|
11
|
+
* Protocol detection result
|
|
12
|
+
*/
|
|
13
|
+
export interface IProtocolDetectionResult {
|
|
14
|
+
protocol: TProtocolType;
|
|
15
|
+
confidence: number;
|
|
16
|
+
requiresMoreData?: boolean;
|
|
17
|
+
metadata?: {
|
|
18
|
+
version?: string;
|
|
19
|
+
method?: string;
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Routing information extracted from protocols
|
|
25
|
+
*/
|
|
26
|
+
export interface IRoutingInfo {
|
|
27
|
+
domain?: string;
|
|
28
|
+
port?: number;
|
|
29
|
+
path?: string;
|
|
30
|
+
protocol: TProtocolType;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Connection context for protocol operations
|
|
34
|
+
*/
|
|
35
|
+
export interface IConnectionContext {
|
|
36
|
+
id: string;
|
|
37
|
+
sourceIp?: string;
|
|
38
|
+
sourcePort?: number;
|
|
39
|
+
destIp?: string;
|
|
40
|
+
destPort?: number;
|
|
41
|
+
timestamp?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Protocol detection options
|
|
45
|
+
*/
|
|
46
|
+
export interface IProtocolDetectionOptions {
|
|
47
|
+
quickMode?: boolean;
|
|
48
|
+
extractRouting?: boolean;
|
|
49
|
+
maxWaitTime?: number;
|
|
50
|
+
maxBufferSize?: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Base interface for protocol detectors
|
|
54
|
+
*/
|
|
55
|
+
export interface IProtocolDetector {
|
|
56
|
+
/**
|
|
57
|
+
* Check if this detector can handle the data
|
|
58
|
+
*/
|
|
59
|
+
canHandle(data: Buffer): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Perform quick detection (first few bytes only)
|
|
62
|
+
*/
|
|
63
|
+
quickDetect(data: Buffer): IProtocolDetectionResult;
|
|
64
|
+
/**
|
|
65
|
+
* Extract routing information if possible
|
|
66
|
+
*/
|
|
67
|
+
extractRouting?(data: Buffer, context?: IConnectionContext): IRoutingInfo | null;
|
|
68
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common Protocol Types
|
|
3
|
+
*
|
|
4
|
+
* Shared types used across different protocol implementations
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvY29tbW9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUcifQ==
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Protocol Constants
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* HTTP methods
|
|
6
|
+
*/
|
|
7
|
+
export declare const HTTP_METHODS: readonly ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS", "CONNECT", "TRACE"];
|
|
8
|
+
export type THttpMethod = typeof HTTP_METHODS[number];
|
|
9
|
+
/**
|
|
10
|
+
* HTTP version strings
|
|
11
|
+
*/
|
|
12
|
+
export declare const HTTP_VERSIONS: readonly ["HTTP/1.0", "HTTP/1.1", "HTTP/2", "HTTP/3"];
|
|
13
|
+
export type THttpVersion = typeof HTTP_VERSIONS[number];
|
|
14
|
+
/**
|
|
15
|
+
* HTTP status codes
|
|
16
|
+
*/
|
|
17
|
+
export declare enum HttpStatus {
|
|
18
|
+
CONTINUE = 100,
|
|
19
|
+
SWITCHING_PROTOCOLS = 101,
|
|
20
|
+
PROCESSING = 102,
|
|
21
|
+
EARLY_HINTS = 103,
|
|
22
|
+
OK = 200,
|
|
23
|
+
CREATED = 201,
|
|
24
|
+
ACCEPTED = 202,
|
|
25
|
+
NON_AUTHORITATIVE_INFORMATION = 203,
|
|
26
|
+
NO_CONTENT = 204,
|
|
27
|
+
RESET_CONTENT = 205,
|
|
28
|
+
PARTIAL_CONTENT = 206,
|
|
29
|
+
MULTI_STATUS = 207,
|
|
30
|
+
ALREADY_REPORTED = 208,
|
|
31
|
+
IM_USED = 226,
|
|
32
|
+
MULTIPLE_CHOICES = 300,
|
|
33
|
+
MOVED_PERMANENTLY = 301,
|
|
34
|
+
FOUND = 302,
|
|
35
|
+
SEE_OTHER = 303,
|
|
36
|
+
NOT_MODIFIED = 304,
|
|
37
|
+
USE_PROXY = 305,
|
|
38
|
+
TEMPORARY_REDIRECT = 307,
|
|
39
|
+
PERMANENT_REDIRECT = 308,
|
|
40
|
+
BAD_REQUEST = 400,
|
|
41
|
+
UNAUTHORIZED = 401,
|
|
42
|
+
PAYMENT_REQUIRED = 402,
|
|
43
|
+
FORBIDDEN = 403,
|
|
44
|
+
NOT_FOUND = 404,
|
|
45
|
+
METHOD_NOT_ALLOWED = 405,
|
|
46
|
+
NOT_ACCEPTABLE = 406,
|
|
47
|
+
PROXY_AUTHENTICATION_REQUIRED = 407,
|
|
48
|
+
REQUEST_TIMEOUT = 408,
|
|
49
|
+
CONFLICT = 409,
|
|
50
|
+
GONE = 410,
|
|
51
|
+
LENGTH_REQUIRED = 411,
|
|
52
|
+
PRECONDITION_FAILED = 412,
|
|
53
|
+
PAYLOAD_TOO_LARGE = 413,
|
|
54
|
+
URI_TOO_LONG = 414,
|
|
55
|
+
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
56
|
+
RANGE_NOT_SATISFIABLE = 416,
|
|
57
|
+
EXPECTATION_FAILED = 417,
|
|
58
|
+
IM_A_TEAPOT = 418,
|
|
59
|
+
MISDIRECTED_REQUEST = 421,
|
|
60
|
+
UNPROCESSABLE_ENTITY = 422,
|
|
61
|
+
LOCKED = 423,
|
|
62
|
+
FAILED_DEPENDENCY = 424,
|
|
63
|
+
TOO_EARLY = 425,
|
|
64
|
+
UPGRADE_REQUIRED = 426,
|
|
65
|
+
PRECONDITION_REQUIRED = 428,
|
|
66
|
+
TOO_MANY_REQUESTS = 429,
|
|
67
|
+
REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
|
|
68
|
+
UNAVAILABLE_FOR_LEGAL_REASONS = 451,
|
|
69
|
+
INTERNAL_SERVER_ERROR = 500,
|
|
70
|
+
NOT_IMPLEMENTED = 501,
|
|
71
|
+
BAD_GATEWAY = 502,
|
|
72
|
+
SERVICE_UNAVAILABLE = 503,
|
|
73
|
+
GATEWAY_TIMEOUT = 504,
|
|
74
|
+
HTTP_VERSION_NOT_SUPPORTED = 505,
|
|
75
|
+
VARIANT_ALSO_NEGOTIATES = 506,
|
|
76
|
+
INSUFFICIENT_STORAGE = 507,
|
|
77
|
+
LOOP_DETECTED = 508,
|
|
78
|
+
NOT_EXTENDED = 510,
|
|
79
|
+
NETWORK_AUTHENTICATION_REQUIRED = 511
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* HTTP status text mapping
|
|
83
|
+
*/
|
|
84
|
+
export declare const HTTP_STATUS_TEXT: Record<HttpStatus, string>;
|
|
85
|
+
/**
|
|
86
|
+
* Common HTTP headers
|
|
87
|
+
*/
|
|
88
|
+
export declare const HTTP_HEADERS: {
|
|
89
|
+
readonly HOST: "host";
|
|
90
|
+
readonly USER_AGENT: "user-agent";
|
|
91
|
+
readonly ACCEPT: "accept";
|
|
92
|
+
readonly ACCEPT_LANGUAGE: "accept-language";
|
|
93
|
+
readonly ACCEPT_ENCODING: "accept-encoding";
|
|
94
|
+
readonly AUTHORIZATION: "authorization";
|
|
95
|
+
readonly CACHE_CONTROL: "cache-control";
|
|
96
|
+
readonly CONNECTION: "connection";
|
|
97
|
+
readonly CONTENT_TYPE: "content-type";
|
|
98
|
+
readonly CONTENT_LENGTH: "content-length";
|
|
99
|
+
readonly COOKIE: "cookie";
|
|
100
|
+
readonly SET_COOKIE: "set-cookie";
|
|
101
|
+
readonly LOCATION: "location";
|
|
102
|
+
readonly SERVER: "server";
|
|
103
|
+
readonly DATE: "date";
|
|
104
|
+
readonly EXPIRES: "expires";
|
|
105
|
+
readonly LAST_MODIFIED: "last-modified";
|
|
106
|
+
readonly ETAG: "etag";
|
|
107
|
+
readonly ACCESS_CONTROL_ALLOW_ORIGIN: "access-control-allow-origin";
|
|
108
|
+
readonly ACCESS_CONTROL_ALLOW_METHODS: "access-control-allow-methods";
|
|
109
|
+
readonly ACCESS_CONTROL_ALLOW_HEADERS: "access-control-allow-headers";
|
|
110
|
+
readonly STRICT_TRANSPORT_SECURITY: "strict-transport-security";
|
|
111
|
+
readonly X_CONTENT_TYPE_OPTIONS: "x-content-type-options";
|
|
112
|
+
readonly X_FRAME_OPTIONS: "x-frame-options";
|
|
113
|
+
readonly X_XSS_PROTECTION: "x-xss-protection";
|
|
114
|
+
readonly CONTENT_SECURITY_POLICY: "content-security-policy";
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Get HTTP status text
|
|
118
|
+
*/
|
|
119
|
+
export declare function getStatusText(status: HttpStatus): string;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Protocol Constants
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* HTTP methods
|
|
6
|
+
*/
|
|
7
|
+
export const HTTP_METHODS = [
|
|
8
|
+
'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS', 'CONNECT', 'TRACE'
|
|
9
|
+
];
|
|
10
|
+
/**
|
|
11
|
+
* HTTP version strings
|
|
12
|
+
*/
|
|
13
|
+
export const HTTP_VERSIONS = ['HTTP/1.0', 'HTTP/1.1', 'HTTP/2', 'HTTP/3'];
|
|
14
|
+
/**
|
|
15
|
+
* HTTP status codes
|
|
16
|
+
*/
|
|
17
|
+
export var HttpStatus;
|
|
18
|
+
(function (HttpStatus) {
|
|
19
|
+
// 1xx Informational
|
|
20
|
+
HttpStatus[HttpStatus["CONTINUE"] = 100] = "CONTINUE";
|
|
21
|
+
HttpStatus[HttpStatus["SWITCHING_PROTOCOLS"] = 101] = "SWITCHING_PROTOCOLS";
|
|
22
|
+
HttpStatus[HttpStatus["PROCESSING"] = 102] = "PROCESSING";
|
|
23
|
+
HttpStatus[HttpStatus["EARLY_HINTS"] = 103] = "EARLY_HINTS";
|
|
24
|
+
// 2xx Success
|
|
25
|
+
HttpStatus[HttpStatus["OK"] = 200] = "OK";
|
|
26
|
+
HttpStatus[HttpStatus["CREATED"] = 201] = "CREATED";
|
|
27
|
+
HttpStatus[HttpStatus["ACCEPTED"] = 202] = "ACCEPTED";
|
|
28
|
+
HttpStatus[HttpStatus["NON_AUTHORITATIVE_INFORMATION"] = 203] = "NON_AUTHORITATIVE_INFORMATION";
|
|
29
|
+
HttpStatus[HttpStatus["NO_CONTENT"] = 204] = "NO_CONTENT";
|
|
30
|
+
HttpStatus[HttpStatus["RESET_CONTENT"] = 205] = "RESET_CONTENT";
|
|
31
|
+
HttpStatus[HttpStatus["PARTIAL_CONTENT"] = 206] = "PARTIAL_CONTENT";
|
|
32
|
+
HttpStatus[HttpStatus["MULTI_STATUS"] = 207] = "MULTI_STATUS";
|
|
33
|
+
HttpStatus[HttpStatus["ALREADY_REPORTED"] = 208] = "ALREADY_REPORTED";
|
|
34
|
+
HttpStatus[HttpStatus["IM_USED"] = 226] = "IM_USED";
|
|
35
|
+
// 3xx Redirection
|
|
36
|
+
HttpStatus[HttpStatus["MULTIPLE_CHOICES"] = 300] = "MULTIPLE_CHOICES";
|
|
37
|
+
HttpStatus[HttpStatus["MOVED_PERMANENTLY"] = 301] = "MOVED_PERMANENTLY";
|
|
38
|
+
HttpStatus[HttpStatus["FOUND"] = 302] = "FOUND";
|
|
39
|
+
HttpStatus[HttpStatus["SEE_OTHER"] = 303] = "SEE_OTHER";
|
|
40
|
+
HttpStatus[HttpStatus["NOT_MODIFIED"] = 304] = "NOT_MODIFIED";
|
|
41
|
+
HttpStatus[HttpStatus["USE_PROXY"] = 305] = "USE_PROXY";
|
|
42
|
+
HttpStatus[HttpStatus["TEMPORARY_REDIRECT"] = 307] = "TEMPORARY_REDIRECT";
|
|
43
|
+
HttpStatus[HttpStatus["PERMANENT_REDIRECT"] = 308] = "PERMANENT_REDIRECT";
|
|
44
|
+
// 4xx Client Error
|
|
45
|
+
HttpStatus[HttpStatus["BAD_REQUEST"] = 400] = "BAD_REQUEST";
|
|
46
|
+
HttpStatus[HttpStatus["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
|
|
47
|
+
HttpStatus[HttpStatus["PAYMENT_REQUIRED"] = 402] = "PAYMENT_REQUIRED";
|
|
48
|
+
HttpStatus[HttpStatus["FORBIDDEN"] = 403] = "FORBIDDEN";
|
|
49
|
+
HttpStatus[HttpStatus["NOT_FOUND"] = 404] = "NOT_FOUND";
|
|
50
|
+
HttpStatus[HttpStatus["METHOD_NOT_ALLOWED"] = 405] = "METHOD_NOT_ALLOWED";
|
|
51
|
+
HttpStatus[HttpStatus["NOT_ACCEPTABLE"] = 406] = "NOT_ACCEPTABLE";
|
|
52
|
+
HttpStatus[HttpStatus["PROXY_AUTHENTICATION_REQUIRED"] = 407] = "PROXY_AUTHENTICATION_REQUIRED";
|
|
53
|
+
HttpStatus[HttpStatus["REQUEST_TIMEOUT"] = 408] = "REQUEST_TIMEOUT";
|
|
54
|
+
HttpStatus[HttpStatus["CONFLICT"] = 409] = "CONFLICT";
|
|
55
|
+
HttpStatus[HttpStatus["GONE"] = 410] = "GONE";
|
|
56
|
+
HttpStatus[HttpStatus["LENGTH_REQUIRED"] = 411] = "LENGTH_REQUIRED";
|
|
57
|
+
HttpStatus[HttpStatus["PRECONDITION_FAILED"] = 412] = "PRECONDITION_FAILED";
|
|
58
|
+
HttpStatus[HttpStatus["PAYLOAD_TOO_LARGE"] = 413] = "PAYLOAD_TOO_LARGE";
|
|
59
|
+
HttpStatus[HttpStatus["URI_TOO_LONG"] = 414] = "URI_TOO_LONG";
|
|
60
|
+
HttpStatus[HttpStatus["UNSUPPORTED_MEDIA_TYPE"] = 415] = "UNSUPPORTED_MEDIA_TYPE";
|
|
61
|
+
HttpStatus[HttpStatus["RANGE_NOT_SATISFIABLE"] = 416] = "RANGE_NOT_SATISFIABLE";
|
|
62
|
+
HttpStatus[HttpStatus["EXPECTATION_FAILED"] = 417] = "EXPECTATION_FAILED";
|
|
63
|
+
HttpStatus[HttpStatus["IM_A_TEAPOT"] = 418] = "IM_A_TEAPOT";
|
|
64
|
+
HttpStatus[HttpStatus["MISDIRECTED_REQUEST"] = 421] = "MISDIRECTED_REQUEST";
|
|
65
|
+
HttpStatus[HttpStatus["UNPROCESSABLE_ENTITY"] = 422] = "UNPROCESSABLE_ENTITY";
|
|
66
|
+
HttpStatus[HttpStatus["LOCKED"] = 423] = "LOCKED";
|
|
67
|
+
HttpStatus[HttpStatus["FAILED_DEPENDENCY"] = 424] = "FAILED_DEPENDENCY";
|
|
68
|
+
HttpStatus[HttpStatus["TOO_EARLY"] = 425] = "TOO_EARLY";
|
|
69
|
+
HttpStatus[HttpStatus["UPGRADE_REQUIRED"] = 426] = "UPGRADE_REQUIRED";
|
|
70
|
+
HttpStatus[HttpStatus["PRECONDITION_REQUIRED"] = 428] = "PRECONDITION_REQUIRED";
|
|
71
|
+
HttpStatus[HttpStatus["TOO_MANY_REQUESTS"] = 429] = "TOO_MANY_REQUESTS";
|
|
72
|
+
HttpStatus[HttpStatus["REQUEST_HEADER_FIELDS_TOO_LARGE"] = 431] = "REQUEST_HEADER_FIELDS_TOO_LARGE";
|
|
73
|
+
HttpStatus[HttpStatus["UNAVAILABLE_FOR_LEGAL_REASONS"] = 451] = "UNAVAILABLE_FOR_LEGAL_REASONS";
|
|
74
|
+
// 5xx Server Error
|
|
75
|
+
HttpStatus[HttpStatus["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
|
|
76
|
+
HttpStatus[HttpStatus["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
|
|
77
|
+
HttpStatus[HttpStatus["BAD_GATEWAY"] = 502] = "BAD_GATEWAY";
|
|
78
|
+
HttpStatus[HttpStatus["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
|
|
79
|
+
HttpStatus[HttpStatus["GATEWAY_TIMEOUT"] = 504] = "GATEWAY_TIMEOUT";
|
|
80
|
+
HttpStatus[HttpStatus["HTTP_VERSION_NOT_SUPPORTED"] = 505] = "HTTP_VERSION_NOT_SUPPORTED";
|
|
81
|
+
HttpStatus[HttpStatus["VARIANT_ALSO_NEGOTIATES"] = 506] = "VARIANT_ALSO_NEGOTIATES";
|
|
82
|
+
HttpStatus[HttpStatus["INSUFFICIENT_STORAGE"] = 507] = "INSUFFICIENT_STORAGE";
|
|
83
|
+
HttpStatus[HttpStatus["LOOP_DETECTED"] = 508] = "LOOP_DETECTED";
|
|
84
|
+
HttpStatus[HttpStatus["NOT_EXTENDED"] = 510] = "NOT_EXTENDED";
|
|
85
|
+
HttpStatus[HttpStatus["NETWORK_AUTHENTICATION_REQUIRED"] = 511] = "NETWORK_AUTHENTICATION_REQUIRED";
|
|
86
|
+
})(HttpStatus || (HttpStatus = {}));
|
|
87
|
+
/**
|
|
88
|
+
* HTTP status text mapping
|
|
89
|
+
*/
|
|
90
|
+
export const HTTP_STATUS_TEXT = {
|
|
91
|
+
// 1xx
|
|
92
|
+
[HttpStatus.CONTINUE]: 'Continue',
|
|
93
|
+
[HttpStatus.SWITCHING_PROTOCOLS]: 'Switching Protocols',
|
|
94
|
+
[HttpStatus.PROCESSING]: 'Processing',
|
|
95
|
+
[HttpStatus.EARLY_HINTS]: 'Early Hints',
|
|
96
|
+
// 2xx
|
|
97
|
+
[HttpStatus.OK]: 'OK',
|
|
98
|
+
[HttpStatus.CREATED]: 'Created',
|
|
99
|
+
[HttpStatus.ACCEPTED]: 'Accepted',
|
|
100
|
+
[HttpStatus.NON_AUTHORITATIVE_INFORMATION]: 'Non-Authoritative Information',
|
|
101
|
+
[HttpStatus.NO_CONTENT]: 'No Content',
|
|
102
|
+
[HttpStatus.RESET_CONTENT]: 'Reset Content',
|
|
103
|
+
[HttpStatus.PARTIAL_CONTENT]: 'Partial Content',
|
|
104
|
+
[HttpStatus.MULTI_STATUS]: 'Multi-Status',
|
|
105
|
+
[HttpStatus.ALREADY_REPORTED]: 'Already Reported',
|
|
106
|
+
[HttpStatus.IM_USED]: 'IM Used',
|
|
107
|
+
// 3xx
|
|
108
|
+
[HttpStatus.MULTIPLE_CHOICES]: 'Multiple Choices',
|
|
109
|
+
[HttpStatus.MOVED_PERMANENTLY]: 'Moved Permanently',
|
|
110
|
+
[HttpStatus.FOUND]: 'Found',
|
|
111
|
+
[HttpStatus.SEE_OTHER]: 'See Other',
|
|
112
|
+
[HttpStatus.NOT_MODIFIED]: 'Not Modified',
|
|
113
|
+
[HttpStatus.USE_PROXY]: 'Use Proxy',
|
|
114
|
+
[HttpStatus.TEMPORARY_REDIRECT]: 'Temporary Redirect',
|
|
115
|
+
[HttpStatus.PERMANENT_REDIRECT]: 'Permanent Redirect',
|
|
116
|
+
// 4xx
|
|
117
|
+
[HttpStatus.BAD_REQUEST]: 'Bad Request',
|
|
118
|
+
[HttpStatus.UNAUTHORIZED]: 'Unauthorized',
|
|
119
|
+
[HttpStatus.PAYMENT_REQUIRED]: 'Payment Required',
|
|
120
|
+
[HttpStatus.FORBIDDEN]: 'Forbidden',
|
|
121
|
+
[HttpStatus.NOT_FOUND]: 'Not Found',
|
|
122
|
+
[HttpStatus.METHOD_NOT_ALLOWED]: 'Method Not Allowed',
|
|
123
|
+
[HttpStatus.NOT_ACCEPTABLE]: 'Not Acceptable',
|
|
124
|
+
[HttpStatus.PROXY_AUTHENTICATION_REQUIRED]: 'Proxy Authentication Required',
|
|
125
|
+
[HttpStatus.REQUEST_TIMEOUT]: 'Request Timeout',
|
|
126
|
+
[HttpStatus.CONFLICT]: 'Conflict',
|
|
127
|
+
[HttpStatus.GONE]: 'Gone',
|
|
128
|
+
[HttpStatus.LENGTH_REQUIRED]: 'Length Required',
|
|
129
|
+
[HttpStatus.PRECONDITION_FAILED]: 'Precondition Failed',
|
|
130
|
+
[HttpStatus.PAYLOAD_TOO_LARGE]: 'Payload Too Large',
|
|
131
|
+
[HttpStatus.URI_TOO_LONG]: 'URI Too Long',
|
|
132
|
+
[HttpStatus.UNSUPPORTED_MEDIA_TYPE]: 'Unsupported Media Type',
|
|
133
|
+
[HttpStatus.RANGE_NOT_SATISFIABLE]: 'Range Not Satisfiable',
|
|
134
|
+
[HttpStatus.EXPECTATION_FAILED]: 'Expectation Failed',
|
|
135
|
+
[HttpStatus.IM_A_TEAPOT]: "I'm a teapot",
|
|
136
|
+
[HttpStatus.MISDIRECTED_REQUEST]: 'Misdirected Request',
|
|
137
|
+
[HttpStatus.UNPROCESSABLE_ENTITY]: 'Unprocessable Entity',
|
|
138
|
+
[HttpStatus.LOCKED]: 'Locked',
|
|
139
|
+
[HttpStatus.FAILED_DEPENDENCY]: 'Failed Dependency',
|
|
140
|
+
[HttpStatus.TOO_EARLY]: 'Too Early',
|
|
141
|
+
[HttpStatus.UPGRADE_REQUIRED]: 'Upgrade Required',
|
|
142
|
+
[HttpStatus.PRECONDITION_REQUIRED]: 'Precondition Required',
|
|
143
|
+
[HttpStatus.TOO_MANY_REQUESTS]: 'Too Many Requests',
|
|
144
|
+
[HttpStatus.REQUEST_HEADER_FIELDS_TOO_LARGE]: 'Request Header Fields Too Large',
|
|
145
|
+
[HttpStatus.UNAVAILABLE_FOR_LEGAL_REASONS]: 'Unavailable For Legal Reasons',
|
|
146
|
+
// 5xx
|
|
147
|
+
[HttpStatus.INTERNAL_SERVER_ERROR]: 'Internal Server Error',
|
|
148
|
+
[HttpStatus.NOT_IMPLEMENTED]: 'Not Implemented',
|
|
149
|
+
[HttpStatus.BAD_GATEWAY]: 'Bad Gateway',
|
|
150
|
+
[HttpStatus.SERVICE_UNAVAILABLE]: 'Service Unavailable',
|
|
151
|
+
[HttpStatus.GATEWAY_TIMEOUT]: 'Gateway Timeout',
|
|
152
|
+
[HttpStatus.HTTP_VERSION_NOT_SUPPORTED]: 'HTTP Version Not Supported',
|
|
153
|
+
[HttpStatus.VARIANT_ALSO_NEGOTIATES]: 'Variant Also Negotiates',
|
|
154
|
+
[HttpStatus.INSUFFICIENT_STORAGE]: 'Insufficient Storage',
|
|
155
|
+
[HttpStatus.LOOP_DETECTED]: 'Loop Detected',
|
|
156
|
+
[HttpStatus.NOT_EXTENDED]: 'Not Extended',
|
|
157
|
+
[HttpStatus.NETWORK_AUTHENTICATION_REQUIRED]: 'Network Authentication Required',
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Common HTTP headers
|
|
161
|
+
*/
|
|
162
|
+
export const HTTP_HEADERS = {
|
|
163
|
+
// Request headers
|
|
164
|
+
HOST: 'host',
|
|
165
|
+
USER_AGENT: 'user-agent',
|
|
166
|
+
ACCEPT: 'accept',
|
|
167
|
+
ACCEPT_LANGUAGE: 'accept-language',
|
|
168
|
+
ACCEPT_ENCODING: 'accept-encoding',
|
|
169
|
+
AUTHORIZATION: 'authorization',
|
|
170
|
+
CACHE_CONTROL: 'cache-control',
|
|
171
|
+
CONNECTION: 'connection',
|
|
172
|
+
CONTENT_TYPE: 'content-type',
|
|
173
|
+
CONTENT_LENGTH: 'content-length',
|
|
174
|
+
COOKIE: 'cookie',
|
|
175
|
+
// Response headers
|
|
176
|
+
SET_COOKIE: 'set-cookie',
|
|
177
|
+
LOCATION: 'location',
|
|
178
|
+
SERVER: 'server',
|
|
179
|
+
DATE: 'date',
|
|
180
|
+
EXPIRES: 'expires',
|
|
181
|
+
LAST_MODIFIED: 'last-modified',
|
|
182
|
+
ETAG: 'etag',
|
|
183
|
+
// CORS headers
|
|
184
|
+
ACCESS_CONTROL_ALLOW_ORIGIN: 'access-control-allow-origin',
|
|
185
|
+
ACCESS_CONTROL_ALLOW_METHODS: 'access-control-allow-methods',
|
|
186
|
+
ACCESS_CONTROL_ALLOW_HEADERS: 'access-control-allow-headers',
|
|
187
|
+
// Security headers
|
|
188
|
+
STRICT_TRANSPORT_SECURITY: 'strict-transport-security',
|
|
189
|
+
X_CONTENT_TYPE_OPTIONS: 'x-content-type-options',
|
|
190
|
+
X_FRAME_OPTIONS: 'x-frame-options',
|
|
191
|
+
X_XSS_PROTECTION: 'x-xss-protection',
|
|
192
|
+
CONTENT_SECURITY_POLICY: 'content-security-policy',
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* Get HTTP status text
|
|
196
|
+
*/
|
|
197
|
+
export function getStatusText(status) {
|
|
198
|
+
return HTTP_STATUS_TEXT[status] || 'Unknown';
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvcHJvdG9jb2xzL2h0dHAvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPO0NBQ3RFLENBQUM7QUFJWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBSW5GOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUF3RVg7QUF4RUQsV0FBWSxVQUFVO0lBQ3BCLG9CQUFvQjtJQUNwQixxREFBYyxDQUFBO0lBQ2QsMkVBQXlCLENBQUE7SUFDekIseURBQWdCLENBQUE7SUFDaEIsMkRBQWlCLENBQUE7SUFFakIsY0FBYztJQUNkLHlDQUFRLENBQUE7SUFDUixtREFBYSxDQUFBO0lBQ2IscURBQWMsQ0FBQTtJQUNkLCtGQUFtQyxDQUFBO0lBQ25DLHlEQUFnQixDQUFBO0lBQ2hCLCtEQUFtQixDQUFBO0lBQ25CLG1FQUFxQixDQUFBO0lBQ3JCLDZEQUFrQixDQUFBO0lBQ2xCLHFFQUFzQixDQUFBO0lBQ3RCLG1EQUFhLENBQUE7SUFFYixrQkFBa0I7SUFDbEIscUVBQXNCLENBQUE7SUFDdEIsdUVBQXVCLENBQUE7SUFDdkIsK0NBQVcsQ0FBQTtJQUNYLHVEQUFlLENBQUE7SUFDZiw2REFBa0IsQ0FBQTtJQUNsQix1REFBZSxDQUFBO0lBQ2YseUVBQXdCLENBQUE7SUFDeEIseUVBQXdCLENBQUE7SUFFeEIsbUJBQW1CO0lBQ25CLDJEQUFpQixDQUFBO0lBQ2pCLDZEQUFrQixDQUFBO0lBQ2xCLHFF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
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Protocol Module
|
|
3
|
+
* Generic HTTP protocol knowledge and parsing utilities
|
|
4
|
+
*/
|
|
5
|
+
export * from './constants.js';
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './parser.js';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvaHR0cC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDIn0=
|