@hyperttp/core 1.0.5 → 1.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.
Files changed (89) hide show
  1. package/Core/HyperCore.d.ts +31 -0
  2. package/Core/HyperCore.d.ts.map +1 -0
  3. package/Core/HyperCore.js +182 -0
  4. package/Core/HyperCore.js.map +1 -0
  5. package/{dist/Core → Core}/RequestExecutor.d.ts +5 -2
  6. package/Core/RequestExecutor.d.ts.map +1 -0
  7. package/{dist/Core → Core}/RequestExecutor.js +35 -33
  8. package/Core/RequestExecutor.js.map +1 -0
  9. package/{dist/Core → Core}/index.d.ts +0 -1
  10. package/{dist/Core → Core}/index.d.ts.map +1 -1
  11. package/{dist/Core → Core}/index.js.map +1 -1
  12. package/defaultConfig.d.ts +3 -0
  13. package/defaultConfig.d.ts.map +1 -0
  14. package/defaultConfig.js +21 -0
  15. package/defaultConfig.js.map +1 -0
  16. package/{dist/index.d.ts → index.d.ts} +2 -1
  17. package/index.d.ts.map +1 -0
  18. package/package.json +7 -7
  19. package/transports/bun.d.ts +14 -0
  20. package/transports/bun.d.ts.map +1 -0
  21. package/transports/bun.js +153 -0
  22. package/transports/bun.js.map +1 -0
  23. package/transports/node.d.ts +15 -0
  24. package/transports/node.d.ts.map +1 -0
  25. package/transports/node.js +156 -0
  26. package/transports/node.js.map +1 -0
  27. package/types/hyper.d.ts +30 -0
  28. package/types/hyper.d.ts.map +1 -0
  29. package/types/hyper.js +2 -0
  30. package/types/hyper.js.map +1 -0
  31. package/{dist/types → types}/metrics.d.ts +2 -0
  32. package/types/metrics.d.ts.map +1 -0
  33. package/{dist/types → types}/network.d.ts +5 -0
  34. package/{dist/types → types}/network.d.ts.map +1 -1
  35. package/{dist/types → types}/options.d.ts +2 -1
  36. package/{dist/types → types}/options.d.ts.map +1 -1
  37. package/types/plugins.d.ts +35 -0
  38. package/types/plugins.d.ts.map +1 -0
  39. package/{dist/types → types}/request.d.ts +1 -0
  40. package/{dist/types → types}/request.d.ts.map +1 -1
  41. package/types/transport.d.ts +20 -0
  42. package/types/transport.d.ts.map +1 -0
  43. package/types/transport.js +2 -0
  44. package/types/transport.js.map +1 -0
  45. package/utils/merge.d.ts +2 -0
  46. package/utils/merge.d.ts.map +1 -0
  47. package/utils/merge.js +25 -0
  48. package/utils/merge.js.map +1 -0
  49. package/LICENSE +0 -21
  50. package/README.md +0 -210
  51. package/dist/Core/HyperCore.d.ts +0 -59
  52. package/dist/Core/HyperCore.d.ts.map +0 -1
  53. package/dist/Core/HyperCore.js +0 -162
  54. package/dist/Core/HyperCore.js.map +0 -1
  55. package/dist/Core/RequestExecutor.d.ts.map +0 -1
  56. package/dist/Core/RequestExecutor.js.map +0 -1
  57. package/dist/index.d.ts.map +0 -1
  58. package/dist/types/metrics.d.ts.map +0 -1
  59. package/dist/types/plugins.d.ts +0 -35
  60. package/dist/types/plugins.d.ts.map +0 -1
  61. /package/{dist/Core → Core}/index.js +0 -0
  62. /package/{dist/index.js → index.js} +0 -0
  63. /package/{dist/index.js.map → index.js.map} +0 -0
  64. /package/{dist/types → types}/errors.d.ts +0 -0
  65. /package/{dist/types → types}/errors.d.ts.map +0 -0
  66. /package/{dist/types → types}/errors.js +0 -0
  67. /package/{dist/types → types}/errors.js.map +0 -0
  68. /package/{dist/types → types}/http.d.ts +0 -0
  69. /package/{dist/types → types}/http.d.ts.map +0 -0
  70. /package/{dist/types → types}/http.js +0 -0
  71. /package/{dist/types → types}/http.js.map +0 -0
  72. /package/{dist/types → types}/metrics.js +0 -0
  73. /package/{dist/types → types}/metrics.js.map +0 -0
  74. /package/{dist/types → types}/network.js +0 -0
  75. /package/{dist/types → types}/network.js.map +0 -0
  76. /package/{dist/types → types}/options.js +0 -0
  77. /package/{dist/types → types}/options.js.map +0 -0
  78. /package/{dist/types → types}/plugins.js +0 -0
  79. /package/{dist/types → types}/plugins.js.map +0 -0
  80. /package/{dist/types → types}/request.js +0 -0
  81. /package/{dist/types → types}/request.js.map +0 -0
  82. /package/{dist/types → types}/retry.d.ts +0 -0
  83. /package/{dist/types → types}/retry.d.ts.map +0 -0
  84. /package/{dist/types → types}/retry.js +0 -0
  85. /package/{dist/types → types}/retry.js.map +0 -0
  86. /package/{dist/types → types}/stream.d.ts +0 -0
  87. /package/{dist/types → types}/stream.d.ts.map +0 -0
  88. /package/{dist/types → types}/stream.js +0 -0
  89. /package/{dist/types → types}/stream.js.map +0 -0
@@ -0,0 +1,31 @@
1
+ import type { HttpClientOptions } from "../types/options.js";
2
+ import type { RequestBodyData, RequestInterface } from "../types/request.js";
3
+ import type { StreamResponse } from "../types/stream.js";
4
+ import type { RequestMetrics } from "../types/metrics.js";
5
+ import type { HyperTransport } from "../types/transport.js";
6
+ import type { HttpResponse, HyperStats, InternalRequest } from "../types/hyper.js";
7
+ export declare class HyperCore {
8
+ config: HttpClientOptions;
9
+ private transport;
10
+ private transportPromise;
11
+ private readonly defaultHeaders;
12
+ constructor(config: HttpClientOptions, transport?: HyperTransport);
13
+ private createTransport;
14
+ private ensureTransport;
15
+ dispatch: <T = unknown>(req: InternalRequest) => Promise<HttpResponse<T>>;
16
+ stream(req: RequestInterface | string, signal?: AbortSignal): Promise<StreamResponse<any>>;
17
+ get<T = unknown>(req: RequestInterface | string, signal?: AbortSignal): Promise<HttpResponse<T>>;
18
+ post<T = unknown>(req: RequestInterface | string, body?: RequestBodyData, signal?: AbortSignal): Promise<HttpResponse<T>>;
19
+ put<T = unknown>(req: RequestInterface | string, body?: RequestBodyData, signal?: AbortSignal): Promise<HttpResponse<T>>;
20
+ patch<T = unknown>(req: RequestInterface | string, body?: RequestBodyData, signal?: AbortSignal): Promise<HttpResponse<T>>;
21
+ delete<T = unknown>(req: RequestInterface | string, signal?: AbortSignal): Promise<HttpResponse<T>>;
22
+ options<T = unknown>(req: RequestInterface | string, body?: RequestBodyData, signal?: AbortSignal): Promise<HttpResponse<T>>;
23
+ head(req: RequestInterface | string, signal?: AbortSignal): Promise<HttpResponse<null>>;
24
+ private buildInternalRequest;
25
+ extend(options: Partial<HttpClientOptions>): HyperCore;
26
+ create(options: Partial<HttpClientOptions>): HyperCore;
27
+ getStats(): HyperStats;
28
+ getAllMetrics(): RequestMetrics[];
29
+ destroy(): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=HyperCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HyperCore.d.ts","sourceRoot":"","sources":["../../src/Core/HyperCore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAkB3B,qBAAa,SAAS;IACb,MAAM,EAAE,iBAAiB,CAAC;IACjC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoC;gBAEvD,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,cAAc;YAsBnD,eAAe;IAS7B,OAAO,CAAC,eAAe;IAahB,QAAQ,GAAU,CAAC,GAAG,OAAO,EAClC,KAAK,eAAe,KACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAqBzB;IAEW,MAAM,CACjB,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAiCxB,GAAG,CAAC,CAAC,GAAG,OAAO,EACpB,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMpB,IAAI,CAAC,CAAC,GAAG,OAAO,EACrB,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,IAAI,CAAC,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMpB,GAAG,CAAC,CAAC,GAAG,OAAO,EACpB,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,IAAI,CAAC,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMpB,KAAK,CAAC,CAAC,GAAG,OAAO,EACtB,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,IAAI,CAAC,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMpB,MAAM,CAAC,CAAC,GAAG,OAAO,EACvB,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMpB,OAAO,CAAC,CAAC,GAAG,OAAO,EACxB,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,IAAI,CAAC,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAMpB,IAAI,CACT,GAAG,EAAE,gBAAgB,GAAG,MAAM,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAM9B,OAAO,CAAC,oBAAoB;IAgCrB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS;IAWtD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS;IAGtD,QAAQ,IAAI,UAAU;IAGtB,aAAa,IAAI,cAAc,EAAE;IAI3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAYtC"}
@@ -0,0 +1,182 @@
1
+ import { defaultConfig } from "../defaultConfig.js";
2
+ const mergeHeadersFast = (base, override) => {
3
+ if (!override)
4
+ return { ...base };
5
+ const keys = Object.keys(override);
6
+ if (keys.length === 0)
7
+ return { ...base };
8
+ return {
9
+ ...base,
10
+ ...override,
11
+ };
12
+ };
13
+ export class HyperCore {
14
+ config;
15
+ transport = null;
16
+ transportPromise = null;
17
+ defaultHeaders;
18
+ constructor(config, transport) {
19
+ this.config = {
20
+ ...defaultConfig,
21
+ ...config,
22
+ network: {
23
+ ...defaultConfig.network,
24
+ ...config.network,
25
+ },
26
+ };
27
+ if (transport) {
28
+ this.transport = transport;
29
+ }
30
+ this.defaultHeaders = {
31
+ Accept: "application/json, text/plain, */*",
32
+ "Accept-Encoding": "gzip, deflate, br",
33
+ "User-Agent": this.config.network?.userAgent ?? "Hyperttp/2.0",
34
+ ...(this.config.network?.headers ?? {}),
35
+ };
36
+ }
37
+ async createTransport() {
38
+ if (typeof Bun !== "undefined") {
39
+ const { BunTransport } = await import("../transports/bun.js");
40
+ return new BunTransport(this.config);
41
+ }
42
+ const { NodeTransport } = await import("../transports/node.js");
43
+ return new NodeTransport(this.config);
44
+ }
45
+ ensureTransport() {
46
+ if (this.transport) {
47
+ return Promise.resolve(this.transport);
48
+ }
49
+ if (!this.transportPromise) {
50
+ this.transportPromise = this.createTransport().then((transport) => {
51
+ this.transport = transport;
52
+ return transport;
53
+ });
54
+ }
55
+ return this.transportPromise;
56
+ }
57
+ dispatch = async (req) => {
58
+ if (req.signal?.aborted) {
59
+ throw new Error("Request aborted by user");
60
+ }
61
+ const transport = this.transport ?? (await this.ensureTransport());
62
+ const rawResponse = await transport.execute({
63
+ method: req.method,
64
+ url: req.url,
65
+ headers: req.headers,
66
+ body: req.body,
67
+ signal: req.signal,
68
+ });
69
+ return {
70
+ status: rawResponse.status,
71
+ headers: rawResponse.headers,
72
+ body: rawResponse.body,
73
+ url: rawResponse.url,
74
+ };
75
+ };
76
+ async stream(req, signal) {
77
+ let url;
78
+ let reqHeaders;
79
+ if (typeof req === "string") {
80
+ url = req;
81
+ }
82
+ else {
83
+ url = req.getURL();
84
+ signal = req.getSignal?.() ?? req.signal;
85
+ reqHeaders = req.getHeaders?.();
86
+ }
87
+ const transport = this.transport ?? (await this.ensureTransport());
88
+ const rawResponse = await transport.execute({
89
+ method: "GET",
90
+ url,
91
+ headers: mergeHeadersFast(this.defaultHeaders, reqHeaders),
92
+ signal,
93
+ });
94
+ return {
95
+ status: rawResponse.status,
96
+ headers: rawResponse.headers,
97
+ body: rawResponse.body,
98
+ url: rawResponse.url,
99
+ };
100
+ }
101
+ /* ───────────────────────────────────────────────────────────────────────── */
102
+ /* ПЛИОМОРФНЫЕ МЕТОДЫ ТЕПЕРЬ ВЫЗЫВАЮТ ОДИН СТАТИЧЕСКИЙ МЕТОД ОДНОРОДНО */
103
+ /* ───────────────────────────────────────────────────────────────────────── */
104
+ get(req, signal) {
105
+ return this.dispatch(this.buildInternalRequest("GET", req, undefined, signal));
106
+ }
107
+ post(req, body, signal) {
108
+ return this.dispatch(this.buildInternalRequest("POST", req, body, signal));
109
+ }
110
+ put(req, body, signal) {
111
+ return this.dispatch(this.buildInternalRequest("PUT", req, body, signal));
112
+ }
113
+ patch(req, body, signal) {
114
+ return this.dispatch(this.buildInternalRequest("PATCH", req, body, signal));
115
+ }
116
+ delete(req, signal) {
117
+ return this.dispatch(this.buildInternalRequest("DELETE", req, undefined, signal));
118
+ }
119
+ options(req, body, signal) {
120
+ return this.dispatch(this.buildInternalRequest("OPTIONS", req, body, signal));
121
+ }
122
+ head(req, signal) {
123
+ return this.dispatch(this.buildInternalRequest("HEAD", req, undefined, signal));
124
+ }
125
+ buildInternalRequest(method, req, body, signal) {
126
+ let url;
127
+ let reqHeaders;
128
+ let reqSignal = signal;
129
+ let finalBody = body;
130
+ let meta = undefined;
131
+ if (typeof req === "string") {
132
+ url = req;
133
+ }
134
+ else {
135
+ url = req.getURL();
136
+ reqHeaders = req.getHeaders?.();
137
+ reqSignal = req.getSignal?.() ?? signal;
138
+ if (req.getBodyData)
139
+ finalBody = req.getBodyData();
140
+ if (req.getMeta)
141
+ meta = req.getMeta();
142
+ }
143
+ return {
144
+ method,
145
+ url,
146
+ headers: mergeHeadersFast(this.defaultHeaders, reqHeaders),
147
+ body: finalBody,
148
+ signal: reqSignal,
149
+ meta,
150
+ };
151
+ }
152
+ extend(options) {
153
+ return new HyperCore({
154
+ ...this.config,
155
+ ...options,
156
+ network: { ...this.config.network, ...options.network },
157
+ }, this.transport ?? undefined);
158
+ }
159
+ create(options) {
160
+ return this.extend(options);
161
+ }
162
+ getStats() {
163
+ return {};
164
+ }
165
+ getAllMetrics() {
166
+ return [];
167
+ }
168
+ async destroy() {
169
+ const transport = this.transport;
170
+ if (transport && typeof transport.destroy === "function") {
171
+ try {
172
+ await transport.destroy();
173
+ }
174
+ catch (error) {
175
+ if (this.config.verbose) {
176
+ console.warn("[HyperCore] destroy failed:", error);
177
+ }
178
+ }
179
+ }
180
+ }
181
+ }
182
+ //# sourceMappingURL=HyperCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HyperCore.js","sourceRoot":"","sources":["../../src/Core/HyperCore.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Agent } from "undici";
2
2
  import type { RetryOptions } from "../types/retry.js";
3
- import type { LogLevel } from "../types/http.js";
3
+ import type { LogLevel, ResponseType } from "../types/http.js";
4
4
  import type { RequestMetrics } from "../types/metrics.js";
5
5
  type LowLevelResponse = {
6
6
  status: number;
@@ -33,7 +33,10 @@ export declare class RequestExecutor {
33
33
  * @en Executes a raw HTTP request.
34
34
  * @ru Выполняет "сырой" HTTP-запрос.
35
35
  */
36
- execute(method: string, url: string, headers: Record<string, string>, body: string | Buffer | undefined, signal?: AbortSignal, metrics?: RequestMetrics, interceptors?: DynamicInterceptor | any): Promise<LowLevelResponse>;
36
+ execute(method: string, url: string, headers: Record<string, string | string[]>, body: string | Buffer | undefined, signal?: AbortSignal, metrics?: RequestMetrics, interceptors?: DynamicInterceptor | any, meta?: {
37
+ responseType?: ResponseType;
38
+ }): Promise<LowLevelResponse>;
39
+ get verbose(): boolean;
37
40
  /**
38
41
  * @en Calculates the delay for the next retry attempt using exponential backoff.
39
42
  * @ru Вычисляет задержку для следующей попытки повтора.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestExecutor.d.ts","sourceRoot":"","sources":["../../src/Core/RequestExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAU,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,IAAI,EAAE,GAAG,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,UAAU,kBAAkB;IAC1B,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,aAAa,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,qBAAa,eAAe;IAIxB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsC;gBAGhE,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,OAAO,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,YAAY,CAAC;QAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KACjE;IAGH;;;OAGG;IACU,OAAO,CAClB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAC1C,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACjC,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,kBAAkB,GAAG,GAAG,EACvC,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,GACrC,OAAO,CAAC,gBAAgB,CAAC;IAc5B,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;OAGG;IACH,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,KAAK;IAIb;;;OAGG;YACW,SAAS;IAoBvB;;;OAGG;IACH,OAAO,CAAC,WAAW;YAQL,WAAW;CAmL1B"}
@@ -16,8 +16,11 @@ export class RequestExecutor {
16
16
  * @en Executes a raw HTTP request.
17
17
  * @ru Выполняет "сырой" HTTP-запрос.
18
18
  */
19
- async execute(method, url, headers, body, signal, metrics, interceptors) {
20
- return this.executeCore(method, url, headers, body, metrics, signal, async (res) => res.body, interceptors);
19
+ async execute(method, url, headers, body, signal, metrics, interceptors, meta) {
20
+ return this.executeCore(method, url, headers, body, metrics, signal, async (res) => res.body, interceptors, meta?.responseType === "stream");
21
+ }
22
+ get verbose() {
23
+ return this.options.verbose ?? false;
21
24
  }
22
25
  /**
23
26
  * @en Calculates the delay for the next retry attempt using exponential backoff.
@@ -66,7 +69,7 @@ export class RequestExecutor {
66
69
  }
67
70
  return status === 502 || status === 503 || status === 504;
68
71
  }
69
- async executeCore(method, url, headers, body, metrics, signal, parser, interceptors) {
72
+ async executeCore(method, url, headers, body, metrics, signal, parser, interceptors, isStreaming = false) {
70
73
  let currentUrl = url;
71
74
  let currentMethod = method;
72
75
  let currentHeaders = headers;
@@ -78,15 +81,13 @@ export class RequestExecutor {
78
81
  applyResponse: async (r) => r,
79
82
  };
80
83
  const timeoutController = new AbortController();
81
- const timer = setTimeout(() => timeoutController.abort(), this.options.timeout);
82
- const abortHandler = () => timeoutController.abort();
83
- if (signal) {
84
- if (signal.aborted) {
85
- clearTimeout(timer);
86
- throw new HttpClientError("Request aborted by user", "ABORTED", 0, undefined, url, method);
87
- }
88
- signal.addEventListener("abort", abortHandler, { once: true });
89
- }
84
+ const timeoutValue = isStreaming ? 0 : this.options.timeout;
85
+ const timer = timeoutValue > 0
86
+ ? setTimeout(() => timeoutController.abort(), timeoutValue)
87
+ : undefined;
88
+ const combinedSignal = signal
89
+ ? AbortSignal.any([signal, timeoutController.signal])
90
+ : timeoutController.signal;
90
91
  try {
91
92
  while (true) {
92
93
  try {
@@ -101,7 +102,7 @@ export class RequestExecutor {
101
102
  headers: config.headers,
102
103
  body: config.body,
103
104
  dispatcher: this.agent,
104
- signal: timeoutController.signal,
105
+ signal: combinedSignal,
105
106
  });
106
107
  const status = res.statusCode;
107
108
  const resHeaders = res.headers;
@@ -115,22 +116,21 @@ export class RequestExecutor {
115
116
  if (location) {
116
117
  await this.drainBody(res.body);
117
118
  const nextUrl = new URL(location, config.url).toString();
118
- const nextMethod = status === 303 ? "GET" : currentMethod;
119
+ let nextMethod = currentMethod;
120
+ if (status === 303 ||
121
+ ((status === 301 || status === 302) && currentMethod === "POST")) {
122
+ nextMethod = "GET";
123
+ }
119
124
  currentUrl = nextUrl;
120
125
  currentMethod = nextMethod;
121
126
  currentBody = nextMethod === "GET" ? undefined : currentBody;
122
127
  if (nextMethod === "GET") {
123
- if (currentHeaders["content-type"] ||
124
- currentHeaders["Content-Type"] ||
125
- currentHeaders["content-length"] ||
126
- currentHeaders["Content-Length"]) {
127
- const nextHeaders = { ...currentHeaders };
128
- delete nextHeaders["content-type"];
129
- delete nextHeaders["Content-Type"];
130
- delete nextHeaders["content-length"];
131
- delete nextHeaders["Content-Length"];
132
- currentHeaders = nextHeaders;
133
- }
128
+ const nextHeaders = { ...currentHeaders };
129
+ delete nextHeaders["content-type"];
130
+ delete nextHeaders["Content-Type"];
131
+ delete nextHeaders["content-length"];
132
+ delete nextHeaders["Content-Length"];
133
+ currentHeaders = nextHeaders;
134
134
  }
135
135
  redirects++;
136
136
  continue;
@@ -141,9 +141,7 @@ export class RequestExecutor {
141
141
  if (metrics)
142
142
  metrics.retries += 1;
143
143
  await this.drainBody(res.body);
144
- const delay = this.calcDelay(attempt);
145
- if (delay > 0)
146
- await this.sleep(delay);
144
+ await this.sleep(this.calcDelay(attempt));
147
145
  attempt++;
148
146
  continue;
149
147
  }
@@ -164,15 +162,20 @@ export class RequestExecutor {
164
162
  };
165
163
  }
166
164
  catch (err) {
167
- if (err?.name === "AbortError") {
165
+ if (err.name === "AbortError") {
168
166
  if (signal?.aborted) {
169
167
  throw new HttpClientError("Request aborted by user", "ABORTED", 0, err, url, method);
170
168
  }
171
- throw new TimeoutError(url, this.options.timeout);
169
+ if (timeoutController.signal.aborted) {
170
+ throw new TimeoutError(url, this.options.timeout);
171
+ }
172
+ throw new HttpClientError("Request aborted due to transport closure or internal state reset", "TRANSPORT_CLOSED", 0, err, url, method);
172
173
  }
173
174
  if (attempt < this.options.maxRetries &&
174
175
  (err?.code === "ECONNREFUSED" ||
175
176
  err?.code === "ETIMEDOUT" ||
177
+ err?.code === "ECONNRESET" ||
178
+ err?.code === "EPIPE" ||
176
179
  err?.code === "UND_ERR_SOCKET")) {
177
180
  if (metrics)
178
181
  metrics.retries += 1;
@@ -185,9 +188,8 @@ export class RequestExecutor {
185
188
  }
186
189
  }
187
190
  finally {
188
- clearTimeout(timer);
189
- if (signal)
190
- signal.removeEventListener("abort", abortHandler);
191
+ if (timer)
192
+ clearTimeout(timer);
191
193
  }
192
194
  }
193
195
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestExecutor.js","sourceRoot":"","sources":["../../src/Core/RequestExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
1
  export { HyperCore } from "./HyperCore.js";
2
- export type { InternalRequest } from "./HyperCore.js";
3
2
  export { RequestExecutor } from "./RequestExecutor.js";
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { HttpClientOptions } from "./types/options.js";
2
+ export declare const defaultConfig: HttpClientOptions;
3
+ //# sourceMappingURL=defaultConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultConfig.d.ts","sourceRoot":"","sources":["../src/defaultConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,iBAmB3B,CAAC"}
@@ -0,0 +1,21 @@
1
+ export const defaultConfig = {
2
+ network: {
3
+ timeout: 30000,
4
+ maxConcurrent: 500,
5
+ allowHttp2: true,
6
+ pipelining: 10,
7
+ keepAliveTimeout: 30000,
8
+ followRedirects: true,
9
+ maxRedirects: 5,
10
+ rejectUnauthorized: true,
11
+ userAgent: "Hyperttp/2.0",
12
+ },
13
+ retry: {
14
+ maxRetries: 3,
15
+ baseDelay: 100,
16
+ maxDelay: 5000,
17
+ jitter: true,
18
+ },
19
+ verbose: false,
20
+ };
21
+ //# sourceMappingURL=defaultConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultConfig.js","sourceRoot":"","sources":["../src/defaultConfig.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,OAAO,EAAE;QACP,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,GAAG;QAClB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,KAAK;QACvB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,CAAC;QACf,kBAAkB,EAAE,IAAI;QACxB,SAAS,EAAE,cAAc;KAC1B;IACD,KAAK,EAAE;QACL,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACb;IACD,OAAO,EAAE,KAAK;CACf,CAAC"}
@@ -1,8 +1,8 @@
1
1
  export { HyperCore } from "./Core/HyperCore.js";
2
2
  export { RequestExecutor } from "./Core/RequestExecutor.js";
3
- export type { InternalRequest, HttpResponse, HyperStats, } from "./Core/HyperCore.js";
4
3
  export type * from "./types/errors.js";
5
4
  export type * from "./types/http.js";
5
+ export type * from "./types/hyper.js";
6
6
  export type * from "./types/metrics.js";
7
7
  export type * from "./types/network.js";
8
8
  export type * from "./types/options.js";
@@ -10,4 +10,5 @@ export type * from "./types/plugins.js";
10
10
  export type * from "./types/request.js";
11
11
  export type * from "./types/retry.js";
12
12
  export type * from "./types/stream.js";
13
+ export type * from "./types/transport.js";
13
14
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,mBAAmB,mBAAmB,CAAC;AACvC,mBAAmB,iBAAiB,CAAC;AACrC,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,mBAAmB,CAAC;AACvC,mBAAmB,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,10 @@
1
1
  {
2
2
  "name": "@hyperttp/core",
3
- "version": "1.0.5",
3
+ "version": "1.1.1",
4
4
  "description": "High-performance, extensible HTTP client for Node.js and Bun",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "files": [
9
- "dist"
10
- ],
6
+ "main": "./index.js",
7
+ "types": "./index.d.ts",
11
8
  "keywords": [
12
9
  "http",
13
10
  "client",
@@ -22,8 +19,11 @@
22
19
  "type": "git",
23
20
  "url": "git+https://github.com/IT-IF-OR/hyperttp-core.git"
24
21
  },
22
+ "peerDependencies": {
23
+ "typescript": "^6.0.3"
24
+ },
25
25
  "dependencies": {
26
26
  "http-cookie-agent": "^8.0.0",
27
27
  "undici": "^8.3.0"
28
28
  }
29
- }
29
+ }
@@ -0,0 +1,14 @@
1
+ import { HttpClientOptions } from "../types/options.js";
2
+ import type { HyperTransport, TransportRequest, TransportResponse } from "../types/transport.js";
3
+ export declare class BunTransport implements HyperTransport {
4
+ private cookieJar;
5
+ private config;
6
+ private activeRequests;
7
+ private concurrencyQueue;
8
+ constructor(config: HttpClientOptions);
9
+ execute(req: TransportRequest): Promise<TransportResponse>;
10
+ private getCookiesForDomain;
11
+ private updateCookies;
12
+ destroy(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=bun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../../src/transports/bun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAc/B,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,MAAM,CAAoB;IAElC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,MAAM,EAAE,iBAAiB;IAIxB,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyFvE,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,aAAa;IAoCR,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAItC"}