@api-client/core 0.18.12 → 0.18.13
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/build/src/browser.d.ts +0 -3
- package/build/src/browser.d.ts.map +1 -1
- package/build/src/browser.js +0 -3
- package/build/src/browser.js.map +1 -1
- package/build/src/index.d.ts +2 -5
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +2 -5
- package/build/src/index.js.map +1 -1
- package/build/src/lib/logging/DefaultLogger.d.ts +14 -0
- package/build/src/lib/logging/DefaultLogger.d.ts.map +1 -1
- package/build/src/lib/logging/DefaultLogger.js +27 -0
- package/build/src/lib/logging/DefaultLogger.js.map +1 -1
- package/build/src/lib/logging/index.d.ts +4 -0
- package/build/src/lib/logging/index.d.ts.map +1 -0
- package/build/src/lib/logging/index.js +10 -0
- package/build/src/lib/logging/index.js.map +1 -0
- package/build/src/models/ClientCertificate.d.ts +1 -1
- package/build/src/models/ClientCertificate.js.map +1 -1
- package/build/src/models/RequestConfig.d.ts +1 -1
- package/build/src/models/RequestConfig.js.map +1 -1
- package/build/src/models/SerializableError.d.ts +1 -1
- package/build/src/models/SerializableError.d.ts.map +1 -1
- package/build/src/models/SerializableError.js.map +1 -1
- package/build/src/proxy/RequestProxy.d.ts.map +1 -1
- package/build/src/proxy/RequestProxy.js +2 -2
- package/build/src/proxy/RequestProxy.js.map +1 -1
- package/build/src/runtime/http-engine/CoreEngine.d.ts +218 -139
- package/build/src/runtime/http-engine/CoreEngine.d.ts.map +1 -1
- package/build/src/runtime/http-engine/CoreEngine.js +716 -870
- package/build/src/runtime/http-engine/CoreEngine.js.map +1 -1
- package/build/src/runtime/http-engine/PayloadSupport.d.ts.map +1 -1
- package/build/src/runtime/http-engine/PayloadSupport.js +2 -1
- package/build/src/runtime/http-engine/PayloadSupport.js.map +1 -1
- package/build/src/runtime/http-engine/auth/AuthManager.d.ts +73 -0
- package/build/src/runtime/http-engine/auth/AuthManager.d.ts.map +1 -0
- package/build/src/runtime/http-engine/auth/AuthManager.js +186 -0
- package/build/src/runtime/http-engine/auth/AuthManager.js.map +1 -0
- package/build/src/runtime/http-engine/auth/index.d.ts +2 -0
- package/build/src/runtime/http-engine/auth/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/auth/index.js +2 -0
- package/build/src/runtime/http-engine/auth/index.js.map +1 -0
- package/build/src/runtime/http-engine/certificates/CertificateManager.d.ts +11 -0
- package/build/src/runtime/http-engine/certificates/CertificateManager.d.ts.map +1 -0
- package/build/src/runtime/http-engine/certificates/CertificateManager.js +76 -0
- package/build/src/runtime/http-engine/certificates/CertificateManager.js.map +1 -0
- package/build/src/runtime/http-engine/certificates/index.d.ts +2 -0
- package/build/src/runtime/http-engine/certificates/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/certificates/index.js +2 -0
- package/build/src/runtime/http-engine/certificates/index.js.map +1 -0
- package/build/src/runtime/http-engine/compression/CompressionManager.d.ts +25 -0
- package/build/src/runtime/http-engine/compression/CompressionManager.d.ts.map +1 -0
- package/build/src/runtime/http-engine/compression/CompressionManager.js +89 -0
- package/build/src/runtime/http-engine/compression/CompressionManager.js.map +1 -0
- package/build/src/runtime/http-engine/compression/index.d.ts +2 -0
- package/build/src/runtime/http-engine/compression/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/compression/index.js +2 -0
- package/build/src/runtime/http-engine/compression/index.js.map +1 -0
- package/build/src/runtime/http-engine/connections/ConnectionManager.d.ts +57 -0
- package/build/src/runtime/http-engine/connections/ConnectionManager.d.ts.map +1 -0
- package/build/src/runtime/http-engine/connections/ConnectionManager.js +78 -0
- package/build/src/runtime/http-engine/connections/ConnectionManager.js.map +1 -0
- package/build/src/runtime/http-engine/connections/DigestAuthHandler.d.ts +70 -0
- package/build/src/runtime/http-engine/connections/DigestAuthHandler.d.ts.map +1 -0
- package/build/src/runtime/http-engine/connections/DigestAuthHandler.js +184 -0
- package/build/src/runtime/http-engine/connections/DigestAuthHandler.js.map +1 -0
- package/build/src/runtime/http-engine/connections/DirectConnection.d.ts +22 -0
- package/build/src/runtime/http-engine/connections/DirectConnection.d.ts.map +1 -0
- package/build/src/runtime/http-engine/connections/DirectConnection.js +105 -0
- package/build/src/runtime/http-engine/connections/DirectConnection.js.map +1 -0
- package/build/src/runtime/http-engine/connections/ProxyAuthHandler.d.ts +60 -0
- package/build/src/runtime/http-engine/connections/ProxyAuthHandler.d.ts.map +1 -0
- package/build/src/runtime/http-engine/connections/ProxyAuthHandler.js +138 -0
- package/build/src/runtime/http-engine/connections/ProxyAuthHandler.js.map +1 -0
- package/build/src/runtime/http-engine/connections/ProxyConnection.d.ts +14 -0
- package/build/src/runtime/http-engine/connections/ProxyConnection.d.ts.map +1 -0
- package/build/src/runtime/http-engine/connections/ProxyConnection.js +47 -0
- package/build/src/runtime/http-engine/connections/ProxyConnection.js.map +1 -0
- package/build/src/runtime/http-engine/connections/TunnelConnection.d.ts +13 -0
- package/build/src/runtime/http-engine/connections/TunnelConnection.d.ts.map +1 -0
- package/build/src/runtime/http-engine/connections/TunnelConnection.js +175 -0
- package/build/src/runtime/http-engine/connections/TunnelConnection.js.map +1 -0
- package/build/src/runtime/http-engine/connections/index.d.ts +7 -0
- package/build/src/runtime/http-engine/connections/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/connections/index.js +7 -0
- package/build/src/runtime/http-engine/connections/index.js.map +1 -0
- package/build/src/runtime/http-engine/constants.d.ts +69 -0
- package/build/src/runtime/http-engine/constants.d.ts.map +1 -0
- package/build/src/runtime/http-engine/constants.js +90 -0
- package/build/src/runtime/http-engine/constants.js.map +1 -0
- package/build/src/runtime/http-engine/cookies/CookieProcessor.d.ts +5 -0
- package/build/src/runtime/http-engine/cookies/CookieProcessor.d.ts.map +1 -0
- package/build/src/runtime/http-engine/cookies/CookieProcessor.js +20 -0
- package/build/src/runtime/http-engine/cookies/CookieProcessor.js.map +1 -0
- package/build/src/runtime/http-engine/cookies/index.d.ts +2 -0
- package/build/src/runtime/http-engine/cookies/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/cookies/index.js +2 -0
- package/build/src/runtime/http-engine/cookies/index.js.map +1 -0
- package/build/src/runtime/http-engine/errors/HttpEngineErrors.d.ts +156 -0
- package/build/src/runtime/http-engine/errors/HttpEngineErrors.d.ts.map +1 -0
- package/build/src/runtime/http-engine/errors/HttpEngineErrors.js +227 -0
- package/build/src/runtime/http-engine/errors/HttpEngineErrors.js.map +1 -0
- package/build/src/runtime/http-engine/errors/index.d.ts +2 -0
- package/build/src/runtime/http-engine/errors/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/errors/index.js +2 -0
- package/build/src/runtime/http-engine/errors/index.js.map +1 -0
- package/build/src/runtime/http-engine/message/MessageBuilder.d.ts +66 -0
- package/build/src/runtime/http-engine/message/MessageBuilder.d.ts.map +1 -0
- package/build/src/runtime/http-engine/message/MessageBuilder.js +161 -0
- package/build/src/runtime/http-engine/message/MessageBuilder.js.map +1 -0
- package/build/src/runtime/http-engine/message/MessageProcessor.d.ts +27 -0
- package/build/src/runtime/http-engine/message/MessageProcessor.d.ts.map +1 -0
- package/build/src/runtime/http-engine/message/MessageProcessor.js +51 -0
- package/build/src/runtime/http-engine/message/MessageProcessor.js.map +1 -0
- package/build/src/runtime/http-engine/message/index.d.ts +3 -0
- package/build/src/runtime/http-engine/message/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/message/index.js +3 -0
- package/build/src/runtime/http-engine/message/index.js.map +1 -0
- package/build/src/runtime/http-engine/ntlm/NtlmAuth.d.ts +2 -8
- package/build/src/runtime/http-engine/ntlm/NtlmAuth.d.ts.map +1 -1
- package/build/src/runtime/http-engine/ntlm/NtlmAuth.js +11 -5
- package/build/src/runtime/http-engine/ntlm/NtlmAuth.js.map +1 -1
- package/build/src/runtime/http-engine/ntlm/NtlmMessage.js +6 -6
- package/build/src/runtime/http-engine/ntlm/NtlmMessage.js.map +1 -1
- package/build/src/runtime/http-engine/parsers/BodyParser.d.ts +39 -0
- package/build/src/runtime/http-engine/parsers/BodyParser.d.ts.map +1 -0
- package/build/src/runtime/http-engine/parsers/BodyParser.js +145 -0
- package/build/src/runtime/http-engine/parsers/BodyParser.js.map +1 -0
- package/build/src/runtime/http-engine/parsers/HeadersParser.d.ts +29 -0
- package/build/src/runtime/http-engine/parsers/HeadersParser.d.ts.map +1 -0
- package/build/src/runtime/http-engine/parsers/HeadersParser.js +88 -0
- package/build/src/runtime/http-engine/parsers/HeadersParser.js.map +1 -0
- package/build/src/runtime/http-engine/parsers/HttpResponseParser.d.ts +91 -0
- package/build/src/runtime/http-engine/parsers/HttpResponseParser.d.ts.map +1 -0
- package/build/src/runtime/http-engine/parsers/HttpResponseParser.js +236 -0
- package/build/src/runtime/http-engine/parsers/HttpResponseParser.js.map +1 -0
- package/build/src/runtime/http-engine/parsers/StatusParser.d.ts +20 -0
- package/build/src/runtime/http-engine/parsers/StatusParser.d.ts.map +1 -0
- package/build/src/runtime/http-engine/parsers/StatusParser.js +51 -0
- package/build/src/runtime/http-engine/parsers/StatusParser.js.map +1 -0
- package/build/src/runtime/http-engine/parsers/index.d.ts +5 -0
- package/build/src/runtime/http-engine/parsers/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/parsers/index.js +5 -0
- package/build/src/runtime/http-engine/parsers/index.js.map +1 -0
- package/build/src/runtime/http-engine/response/ResponseProcessor.d.ts +22 -0
- package/build/src/runtime/http-engine/response/ResponseProcessor.d.ts.map +1 -0
- package/build/src/runtime/http-engine/response/ResponseProcessor.js +25 -0
- package/build/src/runtime/http-engine/response/ResponseProcessor.js.map +1 -0
- package/build/src/runtime/http-engine/response/index.d.ts +2 -0
- package/build/src/runtime/http-engine/response/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/response/index.js +2 -0
- package/build/src/runtime/http-engine/response/index.js.map +1 -0
- package/build/src/runtime/http-engine/statistics/StatisticsProcessor.d.ts +7 -0
- package/build/src/runtime/http-engine/statistics/StatisticsProcessor.d.ts.map +1 -0
- package/build/src/runtime/http-engine/statistics/StatisticsProcessor.js +40 -0
- package/build/src/runtime/http-engine/statistics/StatisticsProcessor.js.map +1 -0
- package/build/src/runtime/http-engine/statistics/index.d.ts +2 -0
- package/build/src/runtime/http-engine/statistics/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/statistics/index.js +2 -0
- package/build/src/runtime/http-engine/statistics/index.js.map +1 -0
- package/build/src/runtime/http-engine/url/UrlProcessor.d.ts +24 -0
- package/build/src/runtime/http-engine/url/UrlProcessor.d.ts.map +1 -0
- package/build/src/runtime/http-engine/url/UrlProcessor.js +50 -0
- package/build/src/runtime/http-engine/url/UrlProcessor.js.map +1 -0
- package/build/src/runtime/http-engine/url/index.d.ts +2 -0
- package/build/src/runtime/http-engine/url/index.d.ts.map +1 -0
- package/build/src/runtime/http-engine/url/index.js +2 -0
- package/build/src/runtime/http-engine/url/index.js.map +1 -0
- package/build/src/runtime/http-runner/HttpRequestRunner.d.ts +3 -3
- package/build/src/runtime/http-runner/HttpRequestRunner.d.ts.map +1 -1
- package/build/src/runtime/http-runner/HttpRequestRunner.js.map +1 -1
- package/build/src/runtime/node/InteropInterfaces.d.ts +3 -3
- package/build/src/runtime/node/InteropInterfaces.d.ts.map +1 -1
- package/build/src/runtime/node/InteropInterfaces.js.map +1 -1
- package/build/src/runtime/node/ProjectRequestRunner.d.ts +2 -2
- package/build/src/runtime/node/ProjectRequestRunner.d.ts.map +1 -1
- package/build/src/runtime/node/ProjectRequestRunner.js.map +1 -1
- package/build/src/runtime/node/ProjectRunner.d.ts.map +1 -1
- package/build/src/runtime/node/ProjectRunner.js +2 -2
- package/build/src/runtime/node/ProjectRunner.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/data/models/example-generator-api.json +6 -6
- package/package.json +2 -2
- package/src/lib/logging/DefaultLogger.ts +32 -0
- package/src/models/ClientCertificate.ts +1 -1
- package/src/models/RequestConfig.ts +1 -1
- package/src/models/SerializableError.ts +1 -1
- package/src/proxy/RequestProxy.ts +2 -2
- package/src/runtime/http-engine/CoreEngine.ts +858 -893
- package/src/runtime/http-engine/PayloadSupport.ts +2 -1
- package/src/runtime/http-engine/auth/AuthManager.ts +242 -0
- package/src/runtime/http-engine/certificates/CertificateManager.ts +74 -0
- package/src/runtime/http-engine/compression/CompressionManager.ts +99 -0
- package/src/runtime/http-engine/connections/ConnectionManager.ts +123 -0
- package/src/runtime/http-engine/connections/DigestAuthHandler.ts +238 -0
- package/src/runtime/http-engine/connections/DirectConnection.ts +134 -0
- package/src/runtime/http-engine/connections/ProxyAuthHandler.ts +179 -0
- package/src/runtime/http-engine/connections/ProxyConnection.ts +55 -0
- package/src/runtime/http-engine/connections/TunnelConnection.ts +192 -0
- package/src/runtime/http-engine/constants.ts +103 -0
- package/src/runtime/http-engine/cookies/CookieProcessor.ts +25 -0
- package/src/runtime/http-engine/errors/HttpEngineErrors.ts +319 -0
- package/src/runtime/http-engine/message/MessageBuilder.ts +201 -0
- package/src/runtime/http-engine/message/MessageProcessor.ts +73 -0
- package/src/runtime/http-engine/ntlm/NtlmAuth.ts +16 -13
- package/src/runtime/http-engine/ntlm/NtlmMessage.ts +6 -6
- package/src/runtime/http-engine/parsers/BodyParser.ts +171 -0
- package/src/runtime/http-engine/parsers/HeadersParser.ts +103 -0
- package/src/runtime/http-engine/parsers/HttpResponseParser.ts +280 -0
- package/src/runtime/http-engine/parsers/StatusParser.ts +69 -0
- package/src/runtime/http-engine/response/ResponseProcessor.ts +46 -0
- package/src/runtime/http-engine/statistics/StatisticsProcessor.ts +52 -0
- package/src/runtime/http-engine/url/UrlProcessor.ts +55 -0
- package/src/runtime/http-runner/HttpRequestRunner.ts +3 -3
- package/src/runtime/node/InteropInterfaces.ts +3 -3
- package/src/runtime/node/ProjectRequestRunner.ts +2 -2
- package/src/runtime/node/ProjectRunner.ts +2 -2
- package/tests/servers/ProxyServer.ts +32 -19
- package/tests/servers/express-routes/ApiEndpoint.ts +24 -0
- package/tests/servers/express-routes/BasicAuthRoute.ts +36 -0
- package/tests/servers/express-routes/BearerAuthRoute.ts +35 -0
- package/tests/servers/express-routes/NTLMRoute.ts +2 -3
- package/tests/servers/express-routes/PostApi.ts +15 -2
- package/tests/servers/express-routes/RedirectsApi.ts +12 -1
- package/tests/servers/express-routes/ResponsesApi.ts +1 -1
- package/tests/servers/express-routes/StreamApi.ts +19 -0
- package/tests/servers/oauth2mock/ServerMock.js +1 -1
- package/tests/unit/runtime/http-engine/HttpResponseParser.spec.ts +337 -0
- package/tests/unit/runtime/http-engine/abort.spec.ts +4 -5
- package/tests/unit/runtime/http-engine/auth.spec.ts +7 -58
- package/tests/unit/runtime/http-engine/certificates/CertificateManager.spec.ts +482 -0
- package/tests/unit/runtime/http-engine/certificates.spec.ts +2 -2
- package/tests/unit/runtime/http-engine/compression/CompressionManager.spec.ts +498 -0
- package/tests/unit/runtime/http-engine/compression.spec.ts +3 -72
- package/tests/unit/runtime/http-engine/connections/ConnectionManager.spec.ts +379 -0
- package/tests/unit/runtime/http-engine/connections/DigestAuthHandler.spec.ts +164 -0
- package/tests/unit/runtime/http-engine/core_engine.spec.ts +561 -0
- package/tests/unit/runtime/http-engine/engine_statuses.spec.ts +2 -2
- package/tests/unit/runtime/http-engine/events.spec.ts +2 -2
- package/tests/unit/runtime/http-engine/headers.spec.ts +2 -88
- package/tests/unit/runtime/http-engine/hosts.spec.ts +2 -2
- package/tests/unit/runtime/http-engine/http-get.spec.ts +2 -2
- package/tests/unit/runtime/http-engine/http-post.spec.ts +2 -2
- package/tests/unit/runtime/http-engine/logger.spec.ts +0 -8
- package/tests/unit/runtime/http-engine/message.spec.ts +2 -194
- package/tests/unit/runtime/http-engine/params.spec.ts +4 -4
- package/tests/unit/runtime/http-engine/proxy.spec.ts +15 -14
- package/tests/unit/runtime/http-engine/redirects.spec.ts +2 -2
- package/tests/unit/runtime/http-engine/responses.spec.ts +170 -277
- package/tests/unit/runtime/http-engine/timeout.spec.ts +3 -3
- package/tests/unit/runtime/http-engine/timings.spec.ts +2 -2
- package/tests/unit/runtime/proxy/HttpProjectProxy.spec.ts +25 -28
- package/tests/unit/runtime/runners/project_runner.spec.ts +2 -2
- package/tests/unit/runtime/runners/request_runner.spec.ts +2 -2
- package/build/src/runtime/http-engine/HttpEngine.d.ts +0 -311
- package/build/src/runtime/http-engine/HttpEngine.d.ts.map +0 -1
- package/build/src/runtime/http-engine/HttpEngine.js +0 -802
- package/build/src/runtime/http-engine/HttpEngine.js.map +0 -1
- package/src/runtime/http-engine/HttpEngine.ts +0 -952
- package/tests/unit/runtime/http-engine/connecting.spec.ts +0 -140
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { IncomingMessage } from 'http';
|
|
2
|
+
import { SerializableError } from '../../../models/SerializableError.js';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for all HTTP engine errors
|
|
5
|
+
*/
|
|
6
|
+
export declare class HttpEngineError extends SerializableError {
|
|
7
|
+
readonly category: string;
|
|
8
|
+
constructor(message: string, code?: number | string, category?: string);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Connection-related errors
|
|
12
|
+
*/
|
|
13
|
+
export declare class ConnectionError extends HttpEngineError {
|
|
14
|
+
readonly connectionType: 'direct' | 'proxy' | 'tunnel';
|
|
15
|
+
constructor(message: string, code?: number | string, connectionType?: 'direct' | 'proxy' | 'tunnel');
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Authentication-related errors
|
|
19
|
+
*/
|
|
20
|
+
export declare class AuthenticationError extends HttpEngineError {
|
|
21
|
+
readonly authType: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm';
|
|
22
|
+
constructor(message: string, code?: number | string, authType?: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Message building errors
|
|
26
|
+
*/
|
|
27
|
+
export declare class MessageBuilderError extends HttpEngineError {
|
|
28
|
+
readonly component: 'status' | 'headers' | 'body' | 'host';
|
|
29
|
+
constructor(message: string, code?: number | string, component?: 'status' | 'headers' | 'body' | 'host');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Response parsing errors
|
|
33
|
+
*/
|
|
34
|
+
export declare class ResponseParsingError extends HttpEngineError {
|
|
35
|
+
readonly parsingStage: 'status' | 'headers' | 'body' | 'chunked';
|
|
36
|
+
constructor(message: string, code?: number | string, parsingStage?: 'status' | 'headers' | 'body' | 'chunked');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Timeout errors
|
|
40
|
+
*/
|
|
41
|
+
export declare class TimeoutError extends HttpEngineError {
|
|
42
|
+
readonly timeoutType: 'connection' | 'request' | 'response';
|
|
43
|
+
constructor(message: string, code?: number | string, timeoutType?: 'connection' | 'request' | 'response');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Proxy-related errors
|
|
47
|
+
*/
|
|
48
|
+
export declare class ProxyError extends HttpEngineError {
|
|
49
|
+
readonly proxyStage: 'connection' | 'authentication' | 'tunneling' | 'configuration';
|
|
50
|
+
name: string;
|
|
51
|
+
constructor(message: string, code?: number | string, proxyStage?: 'connection' | 'authentication' | 'tunneling' | 'configuration');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Proxy authentication error
|
|
55
|
+
*/
|
|
56
|
+
export declare class ProxyAuthenticationError extends HttpEngineError {
|
|
57
|
+
readonly response: IncomingMessage;
|
|
58
|
+
readonly head: Buffer;
|
|
59
|
+
name: string;
|
|
60
|
+
constructor(message: string, code: number | string, response: IncomingMessage, head: Buffer);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Payload-related errors
|
|
64
|
+
*/
|
|
65
|
+
export declare class PayloadError extends HttpEngineError {
|
|
66
|
+
readonly payloadType: 'serialization' | 'validation' | 'unsupported';
|
|
67
|
+
constructor(message: string, code?: number | string, payloadType?: 'serialization' | 'validation' | 'unsupported');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* URL parsing errors
|
|
71
|
+
*/
|
|
72
|
+
export declare class UrlParsingError extends HttpEngineError {
|
|
73
|
+
readonly url: string;
|
|
74
|
+
constructor(message: string, url: string, code?: number | string);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Configuration errors
|
|
78
|
+
*/
|
|
79
|
+
export declare class ConfigurationError extends HttpEngineError {
|
|
80
|
+
readonly configType: 'request' | 'proxy' | 'auth' | 'timeout';
|
|
81
|
+
constructor(message: string, code?: number | string, configType?: 'request' | 'proxy' | 'auth' | 'timeout');
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Error factory for creating specific error types
|
|
85
|
+
*/
|
|
86
|
+
export declare class HttpEngineErrorFactory {
|
|
87
|
+
/**
|
|
88
|
+
* Create a connection error
|
|
89
|
+
*/
|
|
90
|
+
static connectionError(message: string, code?: number | string, connectionType?: 'direct' | 'proxy' | 'tunnel'): ConnectionError;
|
|
91
|
+
/**
|
|
92
|
+
* Create an authentication error
|
|
93
|
+
*/
|
|
94
|
+
static authenticationError(message: string, code?: number | string, authType?: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm'): AuthenticationError;
|
|
95
|
+
/**
|
|
96
|
+
* Create a message builder error
|
|
97
|
+
*/
|
|
98
|
+
static messageBuilderError(message: string, code?: number | string, component?: 'status' | 'headers' | 'body' | 'host'): MessageBuilderError;
|
|
99
|
+
/**
|
|
100
|
+
* Create a response parsing error
|
|
101
|
+
*/
|
|
102
|
+
static responseParsingError(message: string, code?: number | string, parsingStage?: 'status' | 'headers' | 'body' | 'chunked'): ResponseParsingError;
|
|
103
|
+
/**
|
|
104
|
+
* Create a timeout error
|
|
105
|
+
*/
|
|
106
|
+
static timeoutError(message: string, code?: number | string, timeoutType?: 'connection' | 'request' | 'response'): TimeoutError;
|
|
107
|
+
/**
|
|
108
|
+
* Create a proxy error
|
|
109
|
+
*/
|
|
110
|
+
static proxyError(message: string, code?: number | string, proxyStage?: 'connection' | 'authentication' | 'tunneling' | 'configuration'): ProxyError;
|
|
111
|
+
/**
|
|
112
|
+
* Create a payload error
|
|
113
|
+
*/
|
|
114
|
+
static payloadError(message: string, code?: number | string, payloadType?: 'serialization' | 'validation' | 'unsupported'): PayloadError;
|
|
115
|
+
/**
|
|
116
|
+
* Create a URL parsing error
|
|
117
|
+
*/
|
|
118
|
+
static urlParsingError(message: string, url: string, code?: number | string): UrlParsingError;
|
|
119
|
+
/**
|
|
120
|
+
* Create a configuration error
|
|
121
|
+
*/
|
|
122
|
+
static configurationError(message: string, code?: number | string, configType?: 'request' | 'proxy' | 'auth' | 'timeout'): ConfigurationError;
|
|
123
|
+
/**
|
|
124
|
+
* Convert a generic error to an HTTP engine error
|
|
125
|
+
*/
|
|
126
|
+
static fromError(error: Error, category?: string): HttpEngineError;
|
|
127
|
+
/**
|
|
128
|
+
* Create a connection timeout error
|
|
129
|
+
*/
|
|
130
|
+
static connectionTimeout(timeoutMs: number): TimeoutError;
|
|
131
|
+
/**
|
|
132
|
+
* Create a request timeout error
|
|
133
|
+
*/
|
|
134
|
+
static requestTimeout(timeoutMs: number): TimeoutError;
|
|
135
|
+
/**
|
|
136
|
+
* Create a proxy authentication error
|
|
137
|
+
*/
|
|
138
|
+
static proxyAuthRequired(res: IncomingMessage, head: Buffer): ProxyAuthenticationError;
|
|
139
|
+
/**
|
|
140
|
+
* Create a proxy authentication failed error
|
|
141
|
+
*/
|
|
142
|
+
static proxyAuthFailed(): AuthenticationError;
|
|
143
|
+
/**
|
|
144
|
+
* Create a proxy configuration error
|
|
145
|
+
*/
|
|
146
|
+
static proxyConfigError(message: string): ProxyError;
|
|
147
|
+
/**
|
|
148
|
+
* Create a payload serialization error
|
|
149
|
+
*/
|
|
150
|
+
static payloadSerializationError(message: string): PayloadError;
|
|
151
|
+
/**
|
|
152
|
+
* Create an unsupported payload error
|
|
153
|
+
*/
|
|
154
|
+
static unsupportedPayload(payloadType: string): PayloadError;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=HttpEngineErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpEngineErrors.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/errors/HttpEngineErrors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { SerializableError } from '../../../models/SerializableError.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for all HTTP engine errors
|
|
4
|
+
*/
|
|
5
|
+
export class HttpEngineError extends SerializableError {
|
|
6
|
+
category;
|
|
7
|
+
constructor(message, code, category = 'general') {
|
|
8
|
+
super(message, code);
|
|
9
|
+
this.category = category;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Connection-related errors
|
|
14
|
+
*/
|
|
15
|
+
export class ConnectionError extends HttpEngineError {
|
|
16
|
+
connectionType;
|
|
17
|
+
constructor(message, code, connectionType = 'direct') {
|
|
18
|
+
super(message, code, 'connection');
|
|
19
|
+
this.connectionType = connectionType;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Authentication-related errors
|
|
24
|
+
*/
|
|
25
|
+
export class AuthenticationError extends HttpEngineError {
|
|
26
|
+
authType;
|
|
27
|
+
constructor(message, code, authType = 'request') {
|
|
28
|
+
super(message, code, 'authentication');
|
|
29
|
+
this.authType = authType;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Message building errors
|
|
34
|
+
*/
|
|
35
|
+
export class MessageBuilderError extends HttpEngineError {
|
|
36
|
+
component;
|
|
37
|
+
constructor(message, code, component = 'headers') {
|
|
38
|
+
super(message, code, 'message');
|
|
39
|
+
this.component = component;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Response parsing errors
|
|
44
|
+
*/
|
|
45
|
+
export class ResponseParsingError extends HttpEngineError {
|
|
46
|
+
parsingStage;
|
|
47
|
+
constructor(message, code, parsingStage = 'headers') {
|
|
48
|
+
super(message, code, 'parsing');
|
|
49
|
+
this.parsingStage = parsingStage;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Timeout errors
|
|
54
|
+
*/
|
|
55
|
+
export class TimeoutError extends HttpEngineError {
|
|
56
|
+
timeoutType;
|
|
57
|
+
constructor(message, code, timeoutType = 'request') {
|
|
58
|
+
super(message, code, 'timeout');
|
|
59
|
+
this.timeoutType = timeoutType;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Proxy-related errors
|
|
64
|
+
*/
|
|
65
|
+
export class ProxyError extends HttpEngineError {
|
|
66
|
+
proxyStage;
|
|
67
|
+
name = 'ProxyError';
|
|
68
|
+
constructor(message, code, proxyStage = 'connection') {
|
|
69
|
+
super(message, code, 'proxy');
|
|
70
|
+
this.proxyStage = proxyStage;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Proxy authentication error
|
|
75
|
+
*/
|
|
76
|
+
export class ProxyAuthenticationError extends HttpEngineError {
|
|
77
|
+
response;
|
|
78
|
+
head;
|
|
79
|
+
name = 'ProxyAuthenticationError';
|
|
80
|
+
constructor(message, code, response, head) {
|
|
81
|
+
super(message, code, 'proxy');
|
|
82
|
+
this.response = response;
|
|
83
|
+
this.head = head;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Payload-related errors
|
|
88
|
+
*/
|
|
89
|
+
export class PayloadError extends HttpEngineError {
|
|
90
|
+
payloadType;
|
|
91
|
+
constructor(message, code, payloadType = 'validation') {
|
|
92
|
+
super(message, code, 'payload');
|
|
93
|
+
this.payloadType = payloadType;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* URL parsing errors
|
|
98
|
+
*/
|
|
99
|
+
export class UrlParsingError extends HttpEngineError {
|
|
100
|
+
url;
|
|
101
|
+
constructor(message, url, code) {
|
|
102
|
+
super(message, code, 'url');
|
|
103
|
+
this.url = url;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Configuration errors
|
|
108
|
+
*/
|
|
109
|
+
export class ConfigurationError extends HttpEngineError {
|
|
110
|
+
configType;
|
|
111
|
+
constructor(message, code, configType = 'request') {
|
|
112
|
+
super(message, code, 'configuration');
|
|
113
|
+
this.configType = configType;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Error factory for creating specific error types
|
|
118
|
+
*/
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
120
|
+
export class HttpEngineErrorFactory {
|
|
121
|
+
/**
|
|
122
|
+
* Create a connection error
|
|
123
|
+
*/
|
|
124
|
+
static connectionError(message, code, connectionType) {
|
|
125
|
+
return new ConnectionError(message, code, connectionType);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Create an authentication error
|
|
129
|
+
*/
|
|
130
|
+
static authenticationError(message, code, authType) {
|
|
131
|
+
return new AuthenticationError(message, code, authType);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Create a message builder error
|
|
135
|
+
*/
|
|
136
|
+
static messageBuilderError(message, code, component) {
|
|
137
|
+
return new MessageBuilderError(message, code, component);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Create a response parsing error
|
|
141
|
+
*/
|
|
142
|
+
static responseParsingError(message, code, parsingStage) {
|
|
143
|
+
return new ResponseParsingError(message, code, parsingStage);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Create a timeout error
|
|
147
|
+
*/
|
|
148
|
+
static timeoutError(message, code, timeoutType) {
|
|
149
|
+
return new TimeoutError(message, code, timeoutType);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Create a proxy error
|
|
153
|
+
*/
|
|
154
|
+
static proxyError(message, code, proxyStage) {
|
|
155
|
+
return new ProxyError(message, code, proxyStage);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Create a payload error
|
|
159
|
+
*/
|
|
160
|
+
static payloadError(message, code, payloadType) {
|
|
161
|
+
return new PayloadError(message, code, payloadType);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Create a URL parsing error
|
|
165
|
+
*/
|
|
166
|
+
static urlParsingError(message, url, code) {
|
|
167
|
+
return new UrlParsingError(message, url, code);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Create a configuration error
|
|
171
|
+
*/
|
|
172
|
+
static configurationError(message, code, configType) {
|
|
173
|
+
return new ConfigurationError(message, code, configType);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Convert a generic error to an HTTP engine error
|
|
177
|
+
*/
|
|
178
|
+
static fromError(error, category = 'general') {
|
|
179
|
+
if (error instanceof HttpEngineError) {
|
|
180
|
+
return error;
|
|
181
|
+
}
|
|
182
|
+
return new HttpEngineError(error.message, undefined, category);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Create a connection timeout error
|
|
186
|
+
*/
|
|
187
|
+
static connectionTimeout(timeoutMs) {
|
|
188
|
+
return new TimeoutError(`Connection timeout after ${timeoutMs}ms`, 408, 'connection');
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Create a request timeout error
|
|
192
|
+
*/
|
|
193
|
+
static requestTimeout(timeoutMs) {
|
|
194
|
+
return new TimeoutError(`Request timeout after ${timeoutMs}ms`, 408, 'request');
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Create a proxy authentication error
|
|
198
|
+
*/
|
|
199
|
+
static proxyAuthRequired(res, head) {
|
|
200
|
+
return new ProxyAuthenticationError('Proxy authentication required', 407, res, head);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Create a proxy authentication failed error
|
|
204
|
+
*/
|
|
205
|
+
static proxyAuthFailed() {
|
|
206
|
+
return new AuthenticationError('Proxy authentication failed', 407, 'proxy');
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Create a proxy configuration error
|
|
210
|
+
*/
|
|
211
|
+
static proxyConfigError(message) {
|
|
212
|
+
return new ProxyError(message, 400, 'configuration');
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Create a payload serialization error
|
|
216
|
+
*/
|
|
217
|
+
static payloadSerializationError(message) {
|
|
218
|
+
return new PayloadError(message, 400, 'serialization');
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Create an unsupported payload error
|
|
222
|
+
*/
|
|
223
|
+
static unsupportedPayload(payloadType) {
|
|
224
|
+
return new PayloadError(`Unsupported payload type: ${payloadType}`, 400, 'unsupported');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=HttpEngineErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpEngineErrors.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/errors/HttpEngineErrors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAExE;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IAC3C,QAAQ,CAAQ;IAEzB,YAAY,OAAe,EAAE,IAAsB,EAAE,QAAQ,GAAG,SAAS;QACvE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,eAAe;IACzC,cAAc,CAA+B;IAEtD,YAAY,OAAe,EAAE,IAAsB,EAAE,iBAAgD,QAAQ;QAC3G,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;QAClC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAC7C,QAAQ,CAAmD;IAEpE,YACE,OAAe,EACf,IAAsB,EACtB,WAA8D,SAAS;QAEvE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAC7C,SAAS,CAAwC;IAE1D,YAAY,OAAe,EAAE,IAAsB,EAAE,YAAoD,SAAS;QAChH,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAC9C,YAAY,CAA2C;IAEhE,YACE,OAAe,EACf,IAAsB,EACtB,eAA0D,SAAS;QAEnE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,eAAe;IACtC,WAAW,CAAuC;IAE3D,YAAY,OAAe,EAAE,IAAsB,EAAE,cAAqD,SAAS;QACjH,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IACpC,UAAU,CAAiE;IAC3E,IAAI,GAAG,YAAY,CAAA;IAE5B,YACE,OAAe,EACf,IAAsB,EACtB,aAA8E,YAAY;QAE1F,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAMhD;IACA;IANF,IAAI,GAAG,0BAA0B,CAAA;IAE1C,YACE,OAAe,EACf,IAAqB,EACZ,QAAyB,EACzB,IAAY;QAErB,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAHpB,aAAQ,GAAR,QAAQ,CAAiB;QACzB,SAAI,GAAJ,IAAI,CAAQ;IAGvB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,eAAe;IACtC,WAAW,CAAgD;IAEpE,YACE,OAAe,EACf,IAAsB,EACtB,cAA8D,YAAY;QAE1E,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,eAAe;IACzC,GAAG,CAAQ;IAEpB,YAAY,OAAe,EAAE,GAAW,EAAE,IAAsB;QAC9D,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IAC5C,UAAU,CAA0C;IAE7D,YACE,OAAe,EACf,IAAsB,EACtB,aAAuD,SAAS;QAEhE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAA;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,kEAAkE;AAClE,MAAM,OAAO,sBAAsB;IACjC;;OAEG;IACH,MAAM,CAAC,eAAe,CACpB,OAAe,EACf,IAAsB,EACtB,cAA8C;QAE9C,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CACxB,OAAe,EACf,IAAsB,EACtB,QAA4D;QAE5D,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACzD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CACxB,OAAe,EACf,IAAsB,EACtB,SAAkD;QAElD,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,OAAe,EACf,IAAsB,EACtB,YAAwD;QAExD,OAAO,IAAI,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;IAC9D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,OAAe,EACf,IAAsB,EACtB,WAAmD;QAEnD,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CACf,OAAe,EACf,IAAsB,EACtB,UAA4E;QAE5E,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,OAAe,EACf,IAAsB,EACtB,WAA4D;QAE5D,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAe,EAAE,GAAW,EAAE,IAAsB;QACzE,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CACvB,OAAe,EACf,IAAsB,EACtB,UAAqD;QAErD,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAY,EAAE,QAAQ,GAAG,SAAS;QACjD,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACrC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAiB;QACxC,OAAO,IAAI,YAAY,CAAC,4BAA4B,SAAS,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;IACvF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,SAAiB;QACrC,OAAO,IAAI,YAAY,CAAC,yBAAyB,SAAS,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;IACjF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAoB,EAAE,IAAY;QACzD,OAAO,IAAI,wBAAwB,CAAC,+BAA+B,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IACtF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,mBAAmB,CAAC,6BAA6B,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IAC7E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAe;QACrC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAA;IACtD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAAC,OAAe;QAC9C,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAA;IACxD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,WAAmB;QAC3C,OAAO,IAAI,YAAY,CAAC,6BAA6B,WAAW,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;IACzF,CAAC;CACF","sourcesContent":["import type { IncomingMessage } from 'http'\nimport { SerializableError } from '../../../models/SerializableError.js'\n\n/**\n * Base class for all HTTP engine errors\n */\nexport class HttpEngineError extends SerializableError {\n readonly category: string\n\n constructor(message: string, code?: number | string, category = 'general') {\n super(message, code)\n this.category = category\n }\n}\n\n/**\n * Connection-related errors\n */\nexport class ConnectionError extends HttpEngineError {\n readonly connectionType: 'direct' | 'proxy' | 'tunnel'\n\n constructor(message: string, code?: number | string, connectionType: 'direct' | 'proxy' | 'tunnel' = 'direct') {\n super(message, code, 'connection')\n this.connectionType = connectionType\n }\n}\n\n/**\n * Authentication-related errors\n */\nexport class AuthenticationError extends HttpEngineError {\n readonly authType: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm'\n\n constructor(\n message: string,\n code?: number | string,\n authType: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm' = 'request'\n ) {\n super(message, code, 'authentication')\n this.authType = authType\n }\n}\n\n/**\n * Message building errors\n */\nexport class MessageBuilderError extends HttpEngineError {\n readonly component: 'status' | 'headers' | 'body' | 'host'\n\n constructor(message: string, code?: number | string, component: 'status' | 'headers' | 'body' | 'host' = 'headers') {\n super(message, code, 'message')\n this.component = component\n }\n}\n\n/**\n * Response parsing errors\n */\nexport class ResponseParsingError extends HttpEngineError {\n readonly parsingStage: 'status' | 'headers' | 'body' | 'chunked'\n\n constructor(\n message: string,\n code?: number | string,\n parsingStage: 'status' | 'headers' | 'body' | 'chunked' = 'headers'\n ) {\n super(message, code, 'parsing')\n this.parsingStage = parsingStage\n }\n}\n\n/**\n * Timeout errors\n */\nexport class TimeoutError extends HttpEngineError {\n readonly timeoutType: 'connection' | 'request' | 'response'\n\n constructor(message: string, code?: number | string, timeoutType: 'connection' | 'request' | 'response' = 'request') {\n super(message, code, 'timeout')\n this.timeoutType = timeoutType\n }\n}\n\n/**\n * Proxy-related errors\n */\nexport class ProxyError extends HttpEngineError {\n readonly proxyStage: 'connection' | 'authentication' | 'tunneling' | 'configuration'\n override name = 'ProxyError'\n\n constructor(\n message: string,\n code?: number | string,\n proxyStage: 'connection' | 'authentication' | 'tunneling' | 'configuration' = 'connection'\n ) {\n super(message, code, 'proxy')\n this.proxyStage = proxyStage\n }\n}\n\n/**\n * Proxy authentication error\n */\nexport class ProxyAuthenticationError extends HttpEngineError {\n override name = 'ProxyAuthenticationError'\n\n constructor(\n message: string,\n code: number | string,\n readonly response: IncomingMessage,\n readonly head: Buffer\n ) {\n super(message, code, 'proxy')\n }\n}\n\n/**\n * Payload-related errors\n */\nexport class PayloadError extends HttpEngineError {\n readonly payloadType: 'serialization' | 'validation' | 'unsupported'\n\n constructor(\n message: string,\n code?: number | string,\n payloadType: 'serialization' | 'validation' | 'unsupported' = 'validation'\n ) {\n super(message, code, 'payload')\n this.payloadType = payloadType\n }\n}\n\n/**\n * URL parsing errors\n */\nexport class UrlParsingError extends HttpEngineError {\n readonly url: string\n\n constructor(message: string, url: string, code?: number | string) {\n super(message, code, 'url')\n this.url = url\n }\n}\n\n/**\n * Configuration errors\n */\nexport class ConfigurationError extends HttpEngineError {\n readonly configType: 'request' | 'proxy' | 'auth' | 'timeout'\n\n constructor(\n message: string,\n code?: number | string,\n configType: 'request' | 'proxy' | 'auth' | 'timeout' = 'request'\n ) {\n super(message, code, 'configuration')\n this.configType = configType\n }\n}\n\n/**\n * Error factory for creating specific error types\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class HttpEngineErrorFactory {\n /**\n * Create a connection error\n */\n static connectionError(\n message: string,\n code?: number | string,\n connectionType?: 'direct' | 'proxy' | 'tunnel'\n ): ConnectionError {\n return new ConnectionError(message, code, connectionType)\n }\n\n /**\n * Create an authentication error\n */\n static authenticationError(\n message: string,\n code?: number | string,\n authType?: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm'\n ): AuthenticationError {\n return new AuthenticationError(message, code, authType)\n }\n\n /**\n * Create a message builder error\n */\n static messageBuilderError(\n message: string,\n code?: number | string,\n component?: 'status' | 'headers' | 'body' | 'host'\n ): MessageBuilderError {\n return new MessageBuilderError(message, code, component)\n }\n\n /**\n * Create a response parsing error\n */\n static responseParsingError(\n message: string,\n code?: number | string,\n parsingStage?: 'status' | 'headers' | 'body' | 'chunked'\n ): ResponseParsingError {\n return new ResponseParsingError(message, code, parsingStage)\n }\n\n /**\n * Create a timeout error\n */\n static timeoutError(\n message: string,\n code?: number | string,\n timeoutType?: 'connection' | 'request' | 'response'\n ): TimeoutError {\n return new TimeoutError(message, code, timeoutType)\n }\n\n /**\n * Create a proxy error\n */\n static proxyError(\n message: string,\n code?: number | string,\n proxyStage?: 'connection' | 'authentication' | 'tunneling' | 'configuration'\n ): ProxyError {\n return new ProxyError(message, code, proxyStage)\n }\n\n /**\n * Create a payload error\n */\n static payloadError(\n message: string,\n code?: number | string,\n payloadType?: 'serialization' | 'validation' | 'unsupported'\n ): PayloadError {\n return new PayloadError(message, code, payloadType)\n }\n\n /**\n * Create a URL parsing error\n */\n static urlParsingError(message: string, url: string, code?: number | string): UrlParsingError {\n return new UrlParsingError(message, url, code)\n }\n\n /**\n * Create a configuration error\n */\n static configurationError(\n message: string,\n code?: number | string,\n configType?: 'request' | 'proxy' | 'auth' | 'timeout'\n ): ConfigurationError {\n return new ConfigurationError(message, code, configType)\n }\n\n /**\n * Convert a generic error to an HTTP engine error\n */\n static fromError(error: Error, category = 'general'): HttpEngineError {\n if (error instanceof HttpEngineError) {\n return error\n }\n return new HttpEngineError(error.message, undefined, category)\n }\n\n /**\n * Create a connection timeout error\n */\n static connectionTimeout(timeoutMs: number): TimeoutError {\n return new TimeoutError(`Connection timeout after ${timeoutMs}ms`, 408, 'connection')\n }\n\n /**\n * Create a request timeout error\n */\n static requestTimeout(timeoutMs: number): TimeoutError {\n return new TimeoutError(`Request timeout after ${timeoutMs}ms`, 408, 'request')\n }\n\n /**\n * Create a proxy authentication error\n */\n static proxyAuthRequired(res: IncomingMessage, head: Buffer): ProxyAuthenticationError {\n return new ProxyAuthenticationError('Proxy authentication required', 407, res, head)\n }\n\n /**\n * Create a proxy authentication failed error\n */\n static proxyAuthFailed(): AuthenticationError {\n return new AuthenticationError('Proxy authentication failed', 407, 'proxy')\n }\n\n /**\n * Create a proxy configuration error\n */\n static proxyConfigError(message: string): ProxyError {\n return new ProxyError(message, 400, 'configuration')\n }\n\n /**\n * Create a payload serialization error\n */\n static payloadSerializationError(message: string): PayloadError {\n return new PayloadError(message, 400, 'serialization')\n }\n\n /**\n * Create an unsupported payload error\n */\n static unsupportedPayload(payloadType: string): PayloadError {\n return new PayloadError(`Unsupported payload type: ${payloadType}`, 400, 'unsupported')\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA","sourcesContent":["export {\n HttpEngineError,\n ConnectionError,\n AuthenticationError,\n MessageBuilderError,\n ResponseParsingError,\n TimeoutError,\n ProxyError,\n PayloadError,\n UrlParsingError,\n ConfigurationError,\n HttpEngineErrorFactory,\n} from './HttpEngineErrors.js'\n"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Headers } from '../../../lib/headers/Headers.js';
|
|
2
|
+
import { IHttpRequest } from '../../../models/HttpRequest.js';
|
|
3
|
+
import { type Logger, type ILogObj } from '../../../lib/logging/index.js';
|
|
4
|
+
export interface MessageBuilderOptions {
|
|
5
|
+
logger: Logger<ILogObj>;
|
|
6
|
+
request: IHttpRequest;
|
|
7
|
+
hasProxy: boolean;
|
|
8
|
+
isProxyTunnel: boolean;
|
|
9
|
+
hostHeader?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface MessageBuilderContext {
|
|
12
|
+
headers: Headers;
|
|
13
|
+
buffer?: Buffer;
|
|
14
|
+
statusLine: string;
|
|
15
|
+
hostHeader?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Builds HTTP messages for requests
|
|
19
|
+
*/
|
|
20
|
+
export declare class MessageBuilder {
|
|
21
|
+
private logger;
|
|
22
|
+
private request;
|
|
23
|
+
private hasProxy;
|
|
24
|
+
private isProxyTunnel;
|
|
25
|
+
private hostHeader?;
|
|
26
|
+
private hostTestReg;
|
|
27
|
+
constructor(options: MessageBuilderOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Builds a complete HTTP message
|
|
30
|
+
*/
|
|
31
|
+
buildMessage(headers: Headers, buffer?: Buffer): Buffer;
|
|
32
|
+
/**
|
|
33
|
+
* Creates the message context with all components
|
|
34
|
+
*/
|
|
35
|
+
private createMessageContext;
|
|
36
|
+
/**
|
|
37
|
+
* Assembles the complete HTTP message from components
|
|
38
|
+
*/
|
|
39
|
+
private assembleMessage;
|
|
40
|
+
/**
|
|
41
|
+
* Creates the HTTP status line
|
|
42
|
+
*/
|
|
43
|
+
private createStatusLine;
|
|
44
|
+
/**
|
|
45
|
+
* Determines if a host header is required and returns it
|
|
46
|
+
*/
|
|
47
|
+
private getHostHeader;
|
|
48
|
+
/**
|
|
49
|
+
* Tests if current connection is required to add `host` header.
|
|
50
|
+
* It returns `false` only if `host` header has been already provided.
|
|
51
|
+
*/
|
|
52
|
+
private hostRequired;
|
|
53
|
+
/**
|
|
54
|
+
* Updates the host header for the message builder
|
|
55
|
+
*/
|
|
56
|
+
updateHostHeader(hostHeader: string): void;
|
|
57
|
+
/**
|
|
58
|
+
* Creates a status line for a specific request
|
|
59
|
+
*/
|
|
60
|
+
createStatusLineForRequest(request: IHttpRequest, hasProxy: boolean, isProxyTunnel: boolean): string;
|
|
61
|
+
/**
|
|
62
|
+
* Validates if a request needs a host header
|
|
63
|
+
*/
|
|
64
|
+
static hostRequiredForRequest(request: IHttpRequest): boolean;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=MessageBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/message/MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAG7D,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IACvB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,WAAW,CAAmB;gBAE1B,OAAO,EAAE,qBAAqB;IAQ1C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAUvD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAuCvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM;IAkBpG;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;CAQ9D"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import * as PayloadSupport from '../PayloadSupport.js';
|
|
2
|
+
import { HTTP_VERSION, CRLF_BUFFER } from '../constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Builds HTTP messages for requests
|
|
5
|
+
*/
|
|
6
|
+
export class MessageBuilder {
|
|
7
|
+
logger;
|
|
8
|
+
request;
|
|
9
|
+
hasProxy;
|
|
10
|
+
isProxyTunnel;
|
|
11
|
+
hostHeader;
|
|
12
|
+
hostTestReg = /^\s*host\s*:/im;
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.logger = options.logger;
|
|
15
|
+
this.request = options.request;
|
|
16
|
+
this.hasProxy = options.hasProxy;
|
|
17
|
+
this.isProxyTunnel = options.isProxyTunnel;
|
|
18
|
+
this.hostHeader = options.hostHeader;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Builds a complete HTTP message
|
|
22
|
+
*/
|
|
23
|
+
buildMessage(headers, buffer) {
|
|
24
|
+
this.logger.debug('Preparing HTTP message...');
|
|
25
|
+
const context = this.createMessageContext(headers, buffer);
|
|
26
|
+
const messageBuffer = this.assembleMessage(context);
|
|
27
|
+
this.logger.debug('The message is ready.');
|
|
28
|
+
return messageBuffer;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates the message context with all components
|
|
32
|
+
*/
|
|
33
|
+
createMessageContext(headers, buffer) {
|
|
34
|
+
const statusLine = this.createStatusLine();
|
|
35
|
+
this.logger.debug(`Created message status: ${statusLine}`);
|
|
36
|
+
const hostHeader = this.getHostHeader();
|
|
37
|
+
if (hostHeader) {
|
|
38
|
+
this.logger.debug(`Adding the "host" header: ${hostHeader}`);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
headers,
|
|
42
|
+
buffer,
|
|
43
|
+
statusLine,
|
|
44
|
+
hostHeader,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Assembles the complete HTTP message from components
|
|
49
|
+
*/
|
|
50
|
+
assembleMessage(context) {
|
|
51
|
+
const { headers, buffer, statusLine, hostHeader } = context;
|
|
52
|
+
// Build the header lines
|
|
53
|
+
const headerLines = [statusLine];
|
|
54
|
+
if (hostHeader) {
|
|
55
|
+
headerLines.push(`Host: ${hostHeader}`);
|
|
56
|
+
}
|
|
57
|
+
// Add custom headers
|
|
58
|
+
const customHeaders = headers.toString();
|
|
59
|
+
if (customHeaders) {
|
|
60
|
+
this.logger.debug('Adding headers to the request...');
|
|
61
|
+
this.logger.silly('Headers:', [...headers.keys()]);
|
|
62
|
+
headerLines.push(PayloadSupport.normalizeString(customHeaders));
|
|
63
|
+
}
|
|
64
|
+
// Join all header lines
|
|
65
|
+
const headerString = headerLines.join('\r\n');
|
|
66
|
+
// Create buffers
|
|
67
|
+
const startBuffer = Buffer.from(headerString, 'utf8');
|
|
68
|
+
const endBuffer = CRLF_BUFFER;
|
|
69
|
+
// Calculate total size
|
|
70
|
+
let totalSize = startBuffer.length + endBuffer.length;
|
|
71
|
+
if (buffer) {
|
|
72
|
+
totalSize += buffer.length;
|
|
73
|
+
}
|
|
74
|
+
// Assemble the final message
|
|
75
|
+
if (buffer) {
|
|
76
|
+
return Buffer.concat([startBuffer, endBuffer, buffer], totalSize);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return Buffer.concat([startBuffer, endBuffer], totalSize);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Creates the HTTP status line
|
|
84
|
+
*/
|
|
85
|
+
createStatusLine() {
|
|
86
|
+
const { request, hasProxy, isProxyTunnel } = this;
|
|
87
|
+
const parts = [request.method];
|
|
88
|
+
if (hasProxy && !isProxyTunnel) {
|
|
89
|
+
// For proxy requests, use the full URL
|
|
90
|
+
parts.push(request.url);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// For direct requests, use the path
|
|
94
|
+
const uri = new URL(request.url);
|
|
95
|
+
let path = uri.pathname;
|
|
96
|
+
if (uri.search) {
|
|
97
|
+
path += uri.search;
|
|
98
|
+
}
|
|
99
|
+
parts.push(path);
|
|
100
|
+
}
|
|
101
|
+
parts.push(HTTP_VERSION);
|
|
102
|
+
return parts.join(' ');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Determines if a host header is required and returns it
|
|
106
|
+
*/
|
|
107
|
+
getHostHeader() {
|
|
108
|
+
if (!this.hostRequired()) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
return this.hostHeader;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Tests if current connection is required to add `host` header.
|
|
115
|
+
* It returns `false` only if `host` header has been already provided.
|
|
116
|
+
*/
|
|
117
|
+
hostRequired() {
|
|
118
|
+
const headers = this.request.headers;
|
|
119
|
+
if (typeof headers !== 'string') {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
return !this.hostTestReg.test(headers);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Updates the host header for the message builder
|
|
126
|
+
*/
|
|
127
|
+
updateHostHeader(hostHeader) {
|
|
128
|
+
this.hostHeader = hostHeader;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Creates a status line for a specific request
|
|
132
|
+
*/
|
|
133
|
+
createStatusLineForRequest(request, hasProxy, isProxyTunnel) {
|
|
134
|
+
const parts = [request.method];
|
|
135
|
+
if (hasProxy && !isProxyTunnel) {
|
|
136
|
+
parts.push(request.url);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const uri = new URL(request.url);
|
|
140
|
+
let path = uri.pathname;
|
|
141
|
+
if (uri.search) {
|
|
142
|
+
path += uri.search;
|
|
143
|
+
}
|
|
144
|
+
parts.push(path);
|
|
145
|
+
}
|
|
146
|
+
parts.push(HTTP_VERSION);
|
|
147
|
+
return parts.join(' ');
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Validates if a request needs a host header
|
|
151
|
+
*/
|
|
152
|
+
static hostRequiredForRequest(request) {
|
|
153
|
+
const hostTestReg = /^\s*host\s*:/im;
|
|
154
|
+
const headers = request.headers;
|
|
155
|
+
if (typeof headers !== 'string') {
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
return !hostTestReg.test(headers);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=MessageBuilder.js.map
|